aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <espindola@google.com>2009-04-20 14:09:46 +0000
committerRafael Espindola <espindola@google.com>2009-04-20 14:09:46 +0000
commitee7d4fba3eb1fe0ef18f4badf1fd71100c99309c (patch)
tree9c8d314cc606457ab4eb9ddec739f1c5d2c92008
parent20ccb780d272cc40cbb95191d5adf63bd7aa4842 (diff)
2009-04-20 Rafael Avila de Espindola <espindola@google.com>plugins
Merge with mainline @146369. * configure.ac (ACX_PKGVERSION): Update. * configure: Regenerate. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/plugins@146426 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog9
-rwxr-xr-xconfig.guess15
-rwxr-xr-xconfig.sub11
-rwxr-xr-xconfigure4
-rw-r--r--configure.ac4
-rw-r--r--contrib/ChangeLog4
-rw-r--r--contrib/compare-all-tests99
-rw-r--r--gcc/ChangeLog766
-rw-r--r--gcc/ChangeLog.plugins7
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in387
-rw-r--r--gcc/ada/ChangeLog1180
-rw-r--r--gcc/ada/Makefile.rtl8
-rw-r--r--gcc/ada/a-caldel-vms.adb14
-rw-r--r--gcc/ada/a-calend.adb35
-rw-r--r--gcc/ada/a-convec.ads1
-rw-r--r--gcc/ada/a-direct.adb14
-rw-r--r--gcc/ada/a-elchha.adb9
-rw-r--r--gcc/ada/a-except-2005.adb48
-rw-r--r--gcc/ada/a-except.adb50
-rw-r--r--gcc/ada/a-except.ads6
-rw-r--r--gcc/ada/a-exextr.adb9
-rw-r--r--gcc/ada/a-tasatt.adb5
-rw-r--r--gcc/ada/adaint.c258
-rw-r--r--gcc/ada/adaint.h10
-rw-r--r--gcc/ada/ali-util.adb2
-rw-r--r--gcc/ada/atree.adb1058
-rw-r--r--gcc/ada/atree.ads129
-rw-r--r--gcc/ada/bindgen.adb19
-rw-r--r--gcc/ada/checks.adb5
-rw-r--r--gcc/ada/checks.ads6
-rw-r--r--gcc/ada/debug.adb17
-rw-r--r--gcc/ada/einfo.adb16
-rw-r--r--gcc/ada/einfo.ads12
-rw-r--r--gcc/ada/exp_aggr.adb66
-rw-r--r--gcc/ada/exp_aggr.ads10
-rw-r--r--gcc/ada/exp_ch3.adb83
-rw-r--r--gcc/ada/exp_ch4.adb216
-rw-r--r--gcc/ada/exp_ch5.adb25
-rw-r--r--gcc/ada/exp_ch6.adb243
-rw-r--r--gcc/ada/exp_ch6.ads5
-rw-r--r--gcc/ada/exp_ch7.adb94
-rw-r--r--gcc/ada/exp_ch9.adb75
-rw-r--r--gcc/ada/exp_code.adb3
-rw-r--r--gcc/ada/exp_disp.adb52
-rw-r--r--gcc/ada/exp_disp.ads13
-rw-r--r--gcc/ada/exp_dist.adb135
-rw-r--r--gcc/ada/exp_fixd.adb4
-rw-r--r--gcc/ada/exp_imgv.adb3
-rw-r--r--gcc/ada/fmap.adb7
-rw-r--r--gcc/ada/freeze.adb104
-rw-r--r--gcc/ada/frontend.adb27
-rwxr-xr-xgcc/ada/g-byorma.adb2
-rwxr-xr-xgcc/ada/g-byorma.ads4
-rw-r--r--gcc/ada/g-calend.adb76
-rw-r--r--gcc/ada/g-calend.ads29
-rw-r--r--gcc/ada/g-comlin.adb5
-rw-r--r--gcc/ada/g-dirope.adb9
-rw-r--r--gcc/ada/g-hesora.adb2
-rw-r--r--gcc/ada/g-hesora.ads4
-rw-r--r--gcc/ada/g-htable.ads2
-rw-r--r--gcc/ada/g-moreex.adb39
-rw-r--r--gcc/ada/g-pehage.adb3
-rw-r--r--gcc/ada/g-sercom-mingw.adb2
-rw-r--r--gcc/ada/g-sercom.adb12
-rw-r--r--gcc/ada/g-socket.adb164
-rw-r--r--gcc/ada/g-socket.ads24
-rw-r--r--gcc/ada/g-socthi-mingw.adb6
-rw-r--r--gcc/ada/g-socthi-mingw.ads7
-rw-r--r--gcc/ada/g-socthi-vms.adb38
-rw-r--r--gcc/ada/g-socthi-vms.ads6
-rw-r--r--gcc/ada/g-socthi-vxworks.adb32
-rw-r--r--gcc/ada/g-socthi-vxworks.ads6
-rw-r--r--gcc/ada/g-socthi.adb32
-rw-r--r--gcc/ada/g-socthi.ads6
-rwxr-xr-xgcc/ada/g-spchge.adb4
-rwxr-xr-xgcc/ada/g-spchge.ads4
-rw-r--r--gcc/ada/g-speche.adb4
-rw-r--r--gcc/ada/g-speche.ads4
-rw-r--r--gcc/ada/g-stsifd-sockets.adb11
-rw-r--r--gcc/ada/g-trasym-unimplemented.adb72
-rw-r--r--gcc/ada/g-trasym-unimplemented.ads66
-rw-r--r--gcc/ada/g-trasym-vms-alpha.adb2
-rw-r--r--gcc/ada/g-trasym-vms-ia64.adb2
-rw-r--r--gcc/ada/g-trasym.ads6
-rwxr-xr-xgcc/ada/g-u3spch.adb4
-rwxr-xr-xgcc/ada/g-u3spch.ads4
-rw-r--r--gcc/ada/gcc-interface/Make-lang.in865
-rw-r--r--gcc/ada/gcc-interface/Makefile.in93
-rw-r--r--gcc/ada/gcc-interface/misc.c43
-rw-r--r--gcc/ada/gcc-interface/trans.c58
-rw-r--r--gcc/ada/gnat1drv.adb6
-rw-r--r--gcc/ada/gnat_rm.texi36
-rw-r--r--gcc/ada/gnat_ugn.texi155
-rw-r--r--gcc/ada/gnatchop.adb67
-rw-r--r--gcc/ada/gprep.adb3
-rw-r--r--gcc/ada/i-cstrin.ads6
-rw-r--r--gcc/ada/init.c72
-rw-r--r--gcc/ada/initialize.c109
-rw-r--r--gcc/ada/lib-load.adb16
-rw-r--r--gcc/ada/lib-xref.adb9
-rw-r--r--gcc/ada/link.c9
-rw-r--r--gcc/ada/mingw32.h15
-rw-r--r--gcc/ada/mkdir.c2
-rwxr-xr-xgcc/ada/namet-sp.adb17
-rwxr-xr-xgcc/ada/namet-sp.ads3
-rw-r--r--gcc/ada/nlists.adb25
-rw-r--r--gcc/ada/nlists.ads7
-rw-r--r--gcc/ada/opt.ads31
-rw-r--r--gcc/ada/osint.adb2
-rw-r--r--gcc/ada/output.adb104
-rw-r--r--gcc/ada/output.ads15
-rw-r--r--gcc/ada/par-ch11.adb1
-rw-r--r--gcc/ada/par-ch3.adb11
-rw-r--r--gcc/ada/par-ch6.adb14
-rw-r--r--gcc/ada/par-ch9.adb7
-rw-r--r--gcc/ada/prep.adb42
-rw-r--r--gcc/ada/prep.ads6
-rw-r--r--gcc/ada/prepcomp.adb14
-rw-r--r--gcc/ada/prj-attr.adb3
-rw-r--r--gcc/ada/prj-nmsc.adb345
-rw-r--r--gcc/ada/prj-part.adb2
-rw-r--r--gcc/ada/prj-tree.adb31
-rw-r--r--gcc/ada/prj-tree.ads7
-rw-r--r--gcc/ada/prj.adb92
-rw-r--r--gcc/ada/prj.ads19
-rw-r--r--gcc/ada/restrict.adb14
-rw-r--r--gcc/ada/rtsfind.adb183
-rw-r--r--gcc/ada/rtsfind.ads101
-rw-r--r--gcc/ada/s-addope.adb2
-rw-r--r--gcc/ada/s-addope.ads2
-rw-r--r--gcc/ada/s-assert.adb2
-rw-r--r--gcc/ada/s-assert.ads2
-rw-r--r--gcc/ada/s-asthan-vms-alpha.adb9
-rw-r--r--gcc/ada/s-auxdec-vms_64.ads1
-rw-r--r--gcc/ada/s-auxdec.ads1
-rw-r--r--gcc/ada/s-carun8.adb2
-rw-r--r--gcc/ada/s-carun8.ads2
-rw-r--r--gcc/ada/s-casuti.adb4
-rw-r--r--gcc/ada/s-casuti.ads2
-rw-r--r--gcc/ada/s-conca2.adb55
-rw-r--r--gcc/ada/s-conca2.ads45
-rw-r--r--gcc/ada/s-conca3.adb59
-rw-r--r--gcc/ada/s-conca3.ads45
-rw-r--r--gcc/ada/s-conca4.adb63
-rw-r--r--gcc/ada/s-conca4.ads45
-rw-r--r--gcc/ada/s-conca5.adb67
-rw-r--r--gcc/ada/s-conca5.ads45
-rw-r--r--gcc/ada/s-conca6.adb71
-rw-r--r--gcc/ada/s-conca6.ads45
-rw-r--r--gcc/ada/s-conca7.adb78
-rw-r--r--gcc/ada/s-conca7.ads47
-rw-r--r--gcc/ada/s-conca8.adb82
-rw-r--r--gcc/ada/s-conca8.ads47
-rw-r--r--gcc/ada/s-conca9.adb86
-rw-r--r--gcc/ada/s-conca9.ads47
-rw-r--r--gcc/ada/s-crc32.adb2
-rw-r--r--gcc/ada/s-crc32.ads2
-rw-r--r--gcc/ada/s-crtl.ads17
-rwxr-xr-xgcc/ada/s-except.adb2
-rw-r--r--gcc/ada/s-except.ads4
-rw-r--r--gcc/ada/s-exctab.adb2
-rw-r--r--gcc/ada/s-exctab.ads2
-rw-r--r--gcc/ada/s-fileio.adb2
-rw-r--r--gcc/ada/s-htable.adb4
-rw-r--r--gcc/ada/s-htable.ads2
-rw-r--r--gcc/ada/s-imenne.adb2
-rw-r--r--gcc/ada/s-imenne.ads2
-rw-r--r--gcc/ada/s-imgenu.adb2
-rw-r--r--gcc/ada/s-imgenu.ads2
-rw-r--r--gcc/ada/s-intman-susv3.adb170
-rw-r--r--gcc/ada/s-mastop.adb2
-rw-r--r--gcc/ada/s-mastop.ads2
-rw-r--r--gcc/ada/s-memory.adb2
-rw-r--r--gcc/ada/s-memory.ads2
-rwxr-xr-xgcc/ada/s-os_lib.adb10
-rwxr-xr-xgcc/ada/s-os_lib.ads2
-rw-r--r--gcc/ada/s-oscons-tmplt.c5
-rw-r--r--gcc/ada/s-osinte-darwin.ads16
-rw-r--r--gcc/ada/s-osinte-linux.ads3
-rw-r--r--gcc/ada/s-osinte-vxworks-kernel.adb249
-rw-r--r--gcc/ada/s-osinte-vxworks.adb35
-rw-r--r--gcc/ada/s-osinte-vxworks.ads16
-rw-r--r--gcc/ada/s-osprim-darwin.adb8
-rw-r--r--gcc/ada/s-osprim-posix.adb8
-rw-r--r--gcc/ada/s-purexc.ads2
-rw-r--r--gcc/ada/s-scaval.adb2
-rw-r--r--gcc/ada/s-secsta.adb2
-rw-r--r--gcc/ada/s-secsta.ads2
-rw-r--r--gcc/ada/s-soflin.adb4
-rw-r--r--gcc/ada/s-soflin.ads40
-rw-r--r--gcc/ada/s-sopco3.adb2
-rw-r--r--gcc/ada/s-sopco3.ads2
-rw-r--r--gcc/ada/s-sopco4.adb2
-rw-r--r--gcc/ada/s-sopco4.ads2
-rw-r--r--gcc/ada/s-sopco5.adb2
-rw-r--r--gcc/ada/s-sopco5.ads2
-rw-r--r--gcc/ada/s-stache.adb2
-rw-r--r--gcc/ada/s-stache.ads2
-rw-r--r--gcc/ada/s-stalib.adb5
-rw-r--r--gcc/ada/s-stalib.ads2
-rw-r--r--gcc/ada/s-stoele.adb2
-rw-r--r--gcc/ada/s-stoele.ads8
-rw-r--r--gcc/ada/s-strcom.adb2
-rw-r--r--gcc/ada/s-strcom.ads2
-rwxr-xr-xgcc/ada/s-string.adb2
-rwxr-xr-xgcc/ada/s-string.ads2
-rw-r--r--gcc/ada/s-strops.adb2
-rw-r--r--gcc/ada/s-strops.ads2
-rw-r--r--gcc/ada/s-ststop.adb2
-rw-r--r--gcc/ada/s-ststop.ads2
-rw-r--r--gcc/ada/s-taprop-hpux-dce.adb29
-rw-r--r--gcc/ada/s-taprop-irix.adb29
-rw-r--r--gcc/ada/s-taprop-linux.adb33
-rw-r--r--gcc/ada/s-taprop-mingw.adb19
-rw-r--r--gcc/ada/s-taprop-posix.adb29
-rw-r--r--gcc/ada/s-taprop-solaris.adb29
-rw-r--r--gcc/ada/s-taprop-tru64.adb30
-rw-r--r--gcc/ada/s-taprop-vms.adb58
-rw-r--r--gcc/ada/s-taprop-vxworks.adb18
-rw-r--r--gcc/ada/s-tasdeb.adb12
-rw-r--r--gcc/ada/s-tasdeb.ads20
-rw-r--r--gcc/ada/s-tasini.adb124
-rw-r--r--gcc/ada/s-taskin.adb57
-rw-r--r--gcc/ada/s-taskin.ads36
-rw-r--r--gcc/ada/s-tasren.adb10
-rw-r--r--gcc/ada/s-tassta.adb47
-rw-r--r--gcc/ada/s-traceb.adb2
-rw-r--r--gcc/ada/s-traceb.ads24
-rw-r--r--gcc/ada/s-traent.adb2
-rw-r--r--gcc/ada/s-traent.ads2
-rwxr-xr-xgcc/ada/s-utf_32.adb2
-rwxr-xr-xgcc/ada/s-utf_32.ads2
-rw-r--r--gcc/ada/s-vxwext-kernel.adb55
-rw-r--r--gcc/ada/s-vxwext-kernel.ads33
-rw-r--r--gcc/ada/s-vxwext-rtp.adb53
-rw-r--r--gcc/ada/s-vxwext-rtp.ads31
-rw-r--r--gcc/ada/s-vxwext.ads29
-rw-r--r--gcc/ada/s-wchcnv.adb2
-rw-r--r--gcc/ada/s-wchcnv.ads2
-rwxr-xr-xgcc/ada/s-wchcon.adb2
-rw-r--r--gcc/ada/s-wchcon.ads2
-rw-r--r--gcc/ada/s-wchjis.adb2
-rw-r--r--gcc/ada/s-wchjis.ads2
-rw-r--r--gcc/ada/s-win32.ads113
-rw-r--r--gcc/ada/sem_attr.adb29
-rw-r--r--gcc/ada/sem_case.adb21
-rw-r--r--gcc/ada/sem_ch10.adb3
-rw-r--r--gcc/ada/sem_ch12.adb277
-rw-r--r--gcc/ada/sem_ch13.adb89
-rw-r--r--gcc/ada/sem_ch3.adb221
-rw-r--r--gcc/ada/sem_ch4.adb48
-rw-r--r--gcc/ada/sem_ch5.adb8
-rw-r--r--gcc/ada/sem_ch6.adb172
-rw-r--r--gcc/ada/sem_ch7.adb426
-rw-r--r--gcc/ada/sem_ch8.adb29
-rw-r--r--gcc/ada/sem_disp.adb17
-rw-r--r--gcc/ada/sem_elim.adb4
-rw-r--r--gcc/ada/sem_eval.adb32
-rw-r--r--gcc/ada/sem_prag.adb28
-rw-r--r--gcc/ada/sem_res.adb3
-rw-r--r--gcc/ada/sem_type.adb2
-rw-r--r--gcc/ada/sem_util.adb993
-rw-r--r--gcc/ada/sem_util.ads51
-rw-r--r--gcc/ada/sem_warn.adb24
-rw-r--r--gcc/ada/sinfo.ads30
-rw-r--r--gcc/ada/sinput-l.adb4
-rw-r--r--gcc/ada/sinput-p.adb67
-rw-r--r--gcc/ada/sinput-p.ads7
-rw-r--r--gcc/ada/snames.ads-tmpl6
-rw-r--r--gcc/ada/sprint.adb21
-rw-r--r--gcc/ada/stand.ads7
-rw-r--r--gcc/ada/sysdep.c105
-rw-r--r--gcc/ada/system-darwin-x86.ads2
-rw-r--r--gcc/ada/system-darwin-x86_64.ads6
-rw-r--r--gcc/ada/system-mingw-x86_64.ads2
-rw-r--r--gcc/ada/targparm.adb6
-rw-r--r--gcc/ada/tbuild.adb9
-rw-r--r--gcc/ada/tracebak.c3
-rw-r--r--gcc/ada/types.ads41
-rw-r--r--gcc/ada/types.h41
-rw-r--r--gcc/ada/xoscons.adb4
-rw-r--r--gcc/bt-load.c7
-rw-r--r--gcc/builtins.def6
-rw-r--r--gcc/c-common.c69
-rw-r--r--gcc/c-common.h3
-rw-r--r--gcc/c-decl.c6
-rw-r--r--gcc/c-opts.c21
-rw-r--r--gcc/c-parser.c107
-rw-r--r--gcc/c-semantics.c2
-rw-r--r--gcc/c-tree.h7
-rw-r--r--gcc/c-typeck.c113
-rw-r--r--gcc/c.opt6
-rw-r--r--gcc/cfglayout.c6
-rw-r--r--gcc/cfgrtl.c20
-rw-r--r--gcc/cgraph.c10
-rw-r--r--gcc/cgraph.h4
-rw-r--r--gcc/cgraphbuild.c8
-rw-r--r--gcc/cgraphunit.c13
-rw-r--r--gcc/combine-stack-adj.c9
-rw-r--r--gcc/combine.c31
-rw-r--r--gcc/common.opt4
-rw-r--r--gcc/config.gcc40
-rw-r--r--gcc/config/arm/sfp-machine.h5
-rw-r--r--gcc/config/avr/avr.md77
-rw-r--r--gcc/config/i386/cygwin-stdint.h4
-rw-r--r--gcc/config/mips/mips.c10
-rw-r--r--gcc/config/mips/mips.h9
-rw-r--r--gcc/config/mips/mips.md2
-rw-r--r--gcc/config/mips/xlr.md4
-rw-r--r--gcc/config/rs6000/rs6000.c29
-rw-r--r--gcc/config/rs6000/rs6000.md28
-rw-r--r--gcc/config/s390/s390.h4
-rw-r--r--gcc/config/s390/s390.md2
-rw-r--r--gcc/config/sh/lib1funcs.asm5
-rw-r--r--gcc/config/sh/linux-atomic.asm3
-rw-r--r--gcc/config/sh/predicates.md1
-rw-r--r--gcc/config/sh/sh.h2
-rw-r--r--gcc/config/sh/t-1e1
-rw-r--r--gcc/config/sh/t-linux1
-rw-r--r--gcc/config/sh/t-mlib-sh11
-rw-r--r--gcc/config/sh/t-mlib-sh21
-rw-r--r--gcc/config/sh/t-mlib-sh2a1
-rw-r--r--gcc/config/sh/t-mlib-sh2a-nofpu1
-rw-r--r--gcc/config/sh/t-mlib-sh2a-single1
-rw-r--r--gcc/config/sh/t-mlib-sh2a-single-only1
-rw-r--r--gcc/config/sh/t-mlib-sh2e1
-rw-r--r--gcc/config/sh/t-mlib-sh31
-rw-r--r--gcc/config/sh/t-mlib-sh3e1
-rw-r--r--gcc/config/sh/t-mlib-sh41
-rw-r--r--gcc/config/sh/t-mlib-sh4-nofpu1
-rw-r--r--gcc/config/sh/t-mlib-sh4-single1
-rw-r--r--gcc/config/sh/t-mlib-sh4-single-only1
-rw-r--r--gcc/config/sh/t-mlib-sh4a1
-rw-r--r--gcc/config/sh/t-mlib-sh4a-nofpu1
-rw-r--r--gcc/config/sh/t-mlib-sh4a-single1
-rw-r--r--gcc/config/sh/t-mlib-sh4a-single-only1
-rw-r--r--gcc/config/sh/t-mlib-sh4al1
-rw-r--r--gcc/config/sh/t-mlib-sh5-32media1
-rw-r--r--gcc/config/sh/t-mlib-sh5-32media-nofpu1
-rw-r--r--gcc/config/sh/t-mlib-sh5-64media1
-rw-r--r--gcc/config/sh/t-mlib-sh5-64media-nofpu1
-rw-r--r--gcc/config/sh/t-mlib-sh5-compact1
-rw-r--r--gcc/config/sh/t-mlib-sh5-compact-nofpu1
-rw-r--r--gcc/config/sh/t-sh35
-rwxr-xr-xgcc/configure50
-rw-r--r--gcc/configure.ac10
-rw-r--r--gcc/cp/ChangeLog30
-rw-r--r--gcc/cp/call.c29
-rw-r--r--gcc/cp/cp-tree.h9
-rw-r--r--gcc/cp/cvt.c15
-rw-r--r--gcc/cp/decl.c23
-rw-r--r--gcc/dbxout.c4
-rw-r--r--gcc/debug.c7
-rw-r--r--gcc/debug.h3
-rw-r--r--gcc/df-core.c8
-rw-r--r--gcc/df.h3
-rw-r--r--gcc/doc/extend.texi2
-rw-r--r--gcc/doc/install.texi51
-rw-r--r--gcc/doc/invoke.texi16
-rw-r--r--gcc/doc/tm.texi36
-rw-r--r--gcc/dwarf2out.c57
-rw-r--r--gcc/emit-rtl.c13
-rw-r--r--gcc/except.c151
-rw-r--r--gcc/except.h111
-rw-r--r--gcc/final.c5
-rw-r--r--gcc/function.c15
-rw-r--r--gcc/function.h2
-rw-r--r--gcc/gcc-plugin.h22
-rw-r--r--gcc/gcc.c111
-rw-r--r--gcc/gimple-low.c6
-rw-r--r--gcc/gimple.c233
-rw-r--r--gcc/gimple.h72
-rw-r--r--gcc/haifa-sched.c10
-rw-r--r--gcc/init-regs.c4
-rw-r--r--gcc/integrate.c4
-rw-r--r--gcc/ipa-pure-const.c234
-rw-r--r--gcc/ipa-reference.c81
-rw-r--r--gcc/ipa-struct-reorg.c10
-rw-r--r--gcc/ipa-utils.c16
-rw-r--r--gcc/ipa-utils.h3
-rw-r--r--gcc/ira-color.c16
-rw-r--r--gcc/ira-conflicts.c4
-rw-r--r--gcc/ira-costs.c63
-rw-r--r--gcc/ira-emit.c3
-rw-r--r--gcc/ira-int.h39
-rw-r--r--gcc/ira-lives.c9
-rw-r--r--gcc/ira.c2
-rw-r--r--gcc/jump.c2
-rw-r--r--gcc/main.c2
-rw-r--r--gcc/matrix-reorg.c3
-rw-r--r--gcc/omp-low.c32
-rw-r--r--gcc/passes.c10
-rw-r--r--gcc/plugin-version.c36
-rw-r--r--gcc/plugin.c43
-rw-r--r--gcc/recog.c12
-rw-r--r--gcc/reginfo.c34
-rw-r--r--gcc/reload1.c2
-rw-r--r--gcc/rtl.h7
-rw-r--r--gcc/rtlanal.c22
-rw-r--r--gcc/sdbout.c1
-rw-r--r--gcc/stack-ptr-mod.c4
-rw-r--r--gcc/target-def.h5
-rw-r--r--gcc/target.h3
-rw-r--r--gcc/testsuite/ChangeLog185
-rw-r--r--gcc/testsuite/g++.dg/ext/complit11.C16
-rw-r--r--gcc/testsuite/g++.dg/other/pr39496.C2
-rw-r--r--gcc/testsuite/g++.dg/template/defarg11.C18
-rw-r--r--gcc/testsuite/g++.dg/torture/pr39764.C14
-rw-r--r--gcc/testsuite/g++.dg/warn/Wlogical-op-1.C33
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-13.C7
-rw-r--r--gcc/testsuite/g++.dg/warn/pr36954.C23
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/strlen-3.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/vla-dealloc-1.c22
-rw-r--r--gcc/testsuite/gcc.dg/Wenum-compare-1.c33
-rw-r--r--gcc/testsuite/gcc.dg/Wlogical-op-1.c50
-rw-r--r--gcc/testsuite/gcc.dg/c99-flex-array-7.c17
-rw-r--r--gcc/testsuite/gcc.dg/c99-restrict-3.c7
-rw-r--r--gcc/testsuite/gcc.dg/call-diag-2.c17
-rw-r--r--gcc/testsuite/gcc.dg/cpp/include5.c9
-rw-r--r--gcc/testsuite/gcc.dg/cpp/line7.c19
-rw-r--r--gcc/testsuite/gcc.dg/cpp/line8.c10
-rw-r--r--gcc/testsuite/gcc.dg/cpp/paste16.c6
-rw-r--r--gcc/testsuite/gcc.dg/cpp/redef4.c499
-rw-r--r--gcc/testsuite/gcc.dg/lvalue-5.c14
-rw-r--r--gcc/testsuite/gcc.dg/lvalue-6.c17
-rw-r--r--gcc/testsuite/gcc.dg/lvalue-7.c16
-rw-r--r--gcc/testsuite/gcc.dg/pr32061.c10
-rw-r--r--gcc/testsuite/gcc.dg/pr36902.c61
-rw-r--r--gcc/testsuite/gcc.target/i386/pr39496.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr39804.c31
-rw-r--r--gcc/testsuite/gfortran.dg/chmod_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/chmod_2.f902
-rw-r--r--gcc/testsuite/gfortran.dg/chmod_3.f902
-rw-r--r--gcc/testsuite/gfortran.dg/default_format_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/default_format_denormal_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/elemental_subroutine_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/gamma_5.f902
-rw-r--r--gcc/testsuite/gfortran.dg/init_flag_3.f901
-rw-r--r--gcc/testsuite/gfortran.dg/int_conv_2.f901
-rw-r--r--gcc/testsuite/gfortran.dg/integer_exponentiation_3.F903
-rw-r--r--gcc/testsuite/gfortran.dg/integer_exponentiation_5.F903
-rw-r--r--gcc/testsuite/gfortran.dg/isnan_1.f901
-rw-r--r--gcc/testsuite/gfortran.dg/isnan_2.f901
-rw-r--r--gcc/testsuite/gfortran.dg/module_nan.f901
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_42.f901
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_43.f901
-rw-r--r--gcc/testsuite/gfortran.dg/nan_1.f901
-rw-r--r--gcc/testsuite/gfortran.dg/nan_2.f901
-rw-r--r--gcc/testsuite/gfortran.dg/nan_3.f901
-rw-r--r--gcc/testsuite/gfortran.dg/nan_4.f901
-rw-r--r--gcc/testsuite/gfortran.dg/nearest_1.f901
-rw-r--r--gcc/testsuite/gfortran.dg/nearest_3.f901
-rw-r--r--gcc/testsuite/gfortran.dg/open_errors.f902
-rw-r--r--gcc/testsuite/gfortran.dg/pr20257.f901
-rw-r--r--gcc/testsuite/gfortran.dg/real_const_3.f901
-rw-r--r--gcc/testsuite/gfortran.dg/scalar_mask_2.f903
-rw-r--r--gcc/testsuite/gfortran.dg/stat_1.f902
-rw-r--r--gcc/testsuite/gfortran.dg/stat_2.f902
-rw-r--r--gcc/testsuite/gfortran.dg/transfer_simplify_1.f901
-rw-r--r--gcc/testsuite/gfortran.dg/vect/pr39318.f902
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/execute/getarg_1.x5
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.x4
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_set_exponent.x4
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/execute/nan_inf_fmt.x4
-rw-r--r--gcc/testsuite/gnat.dg/ref_type.adb1
-rw-r--r--gcc/testsuite/gnat.dg/ref_type.ads2
-rw-r--r--gcc/testsuite/gnat.dg/rep_clause3.adb47
-rw-r--r--gcc/testsuite/lib/gcc-defs.exp4
-rw-r--r--gcc/testsuite/lib/gcc-dg.exp2
-rw-r--r--gcc/testsuite/lib/gfortran.exp8
-rw-r--r--gcc/testsuite/lib/gnat.exp4
-rw-r--r--gcc/timevar.h4
-rw-r--r--gcc/toplev.c22
-rw-r--r--gcc/toplev.h2
-rw-r--r--gcc/tree-cfg.c97
-rw-r--r--gcc/tree-complex.c7
-rw-r--r--gcc/tree-dfa.c47
-rw-r--r--gcc/tree-flow-inline.h2
-rw-r--r--gcc/tree-flow.h1
-rw-r--r--gcc/tree-if-conv.c5
-rw-r--r--gcc/tree-into-ssa.c4
-rw-r--r--gcc/tree-iterator.c96
-rw-r--r--gcc/tree-iterator.h3
-rw-r--r--gcc/tree-loop-distribution.c13
-rw-r--r--gcc/tree-mudflap.c12
-rw-r--r--gcc/tree-nomudflap.c4
-rw-r--r--gcc/tree-nrv.c4
-rw-r--r--gcc/tree-object-size.c5
-rw-r--r--gcc/tree-optimize.c20
-rw-r--r--gcc/tree-pass.h5
-rw-r--r--gcc/tree-pretty-print.c62
-rw-r--r--gcc/tree-profile.c2
-rw-r--r--gcc/tree-ssa-alias.c60
-rw-r--r--gcc/tree-ssa-ccp.c436
-rw-r--r--gcc/tree-ssa-dom.c26
-rw-r--r--gcc/tree-ssa-forwprop.c19
-rw-r--r--gcc/tree-ssa-live.c2
-rw-r--r--gcc/tree-ssa-math-opts.c8
-rw-r--r--gcc/tree-ssa-operands.c48
-rw-r--r--gcc/tree-ssa-pre.c8
-rw-r--r--gcc/tree-ssa-propagate.c30
-rw-r--r--gcc/tree-ssa-propagate.h1
-rw-r--r--gcc/tree-ssa-sccvn.c3
-rw-r--r--gcc/tree-ssa-structalias.c10
-rw-r--r--gcc/tree-ssa.c18
-rw-r--r--gcc/tree-ssanames.c7
-rw-r--r--gcc/tree-stdarg.c4
-rw-r--r--gcc/tree-tailcall.c6
-rw-r--r--gcc/tree-vect-generic.c7
-rw-r--r--gcc/tree-vect-loop-manip.c27
-rw-r--r--gcc/tree-vect-loop.c20
-rw-r--r--gcc/tree-vectorizer.c4
-rw-r--r--gcc/tree-vrp.c98
-rw-r--r--gcc/tree.c36
-rw-r--r--gcc/tree.h12
-rw-r--r--gcc/vmsdbgout.c1
-rw-r--r--libcpp/ChangeLog41
-rw-r--r--libcpp/directives.c41
-rw-r--r--libcpp/include/cpp-id-data.h5
-rw-r--r--libcpp/include/cpplib.h6
-rw-r--r--libcpp/include/line-map.h5
-rw-r--r--libcpp/lex.c13
-rw-r--r--libcpp/line-map.c5
-rw-r--r--libcpp/macro.c73
-rw-r--r--libgcc/ChangeLog5
-rw-r--r--libgcc/config.host1
-rw-r--r--libgfortran/ChangeLog25
-rw-r--r--libgfortran/Makefile.am4
-rw-r--r--libgfortran/Makefile.in5
-rwxr-xr-xlibgfortran/configure114
-rw-r--r--libgfortran/configure.ac21
-rw-r--r--libgfortran/io/io.h3
-rw-r--r--libgfortran/io/transfer.c7
-rw-r--r--libgfortran/io/unix.c11
-rw-r--r--libstdc++-v3/ChangeLog180
-rw-r--r--libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt582
-rw-r--r--libstdc++-v3/doc/html/api.html2
-rw-r--r--libstdc++-v3/doc/html/faq.html24
-rw-r--r--libstdc++-v3/doc/html/manual/abi.html25
-rw-r--r--libstdc++-v3/doc/html/manual/algorithms.html8
-rw-r--r--libstdc++-v3/doc/html/manual/api.html9
-rw-r--r--libstdc++-v3/doc/html/manual/appendix_contributing.html14
-rw-r--r--libstdc++-v3/doc/html/manual/appendix_free.html12
-rw-r--r--libstdc++-v3/doc/html/manual/appendix_gfdl.html (renamed from libstdc++-v3/doc/html/manual/bk01ape.html)12
-rw-r--r--libstdc++-v3/doc/html/manual/appendix_gpl.html681
-rw-r--r--libstdc++-v3/doc/html/manual/appendix_porting.html10
-rw-r--r--libstdc++-v3/doc/html/manual/associative.html (renamed from libstdc++-v3/doc/html/manual/bk01pt07ch17.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/auto_ptr.html4
-rw-r--r--libstdc++-v3/doc/html/manual/backwards.html58
-rw-r--r--libstdc++-v3/doc/html/manual/bitmap_allocator.html6
-rw-r--r--libstdc++-v3/doc/html/manual/bitset.html (renamed from libstdc++-v3/doc/html/manual/bk01pt07ch17s02.html)4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apd.html41
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apds02.html129
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apds03.html32
-rw-r--r--libstdc++-v3/doc/html/manual/bk01ix01.html48
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch01.html6131
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch01s02.html40
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch02s03.html9
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html6
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt02ch04s02.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt02ch04s03.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt02pr01.html10
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt03ch07s03.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt03ch08.html10
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt05ch13.html10
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt05ch13s06.html7
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt08ch19.html10
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt08ch19s02.html7
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt09ch20.html10
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt09pr02.html10
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt10ch23.html18
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt10ch23s02.html7
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt11ch25s02.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt11ch27s02.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt11ch27s03.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt11ch28s02.html7
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html2
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch33s02.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch33s03.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch40s03.html7
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12pr03.html10
-rw-r--r--libstdc++-v3/doc/html/manual/bugs.html (renamed from libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html)4
-rw-r--r--libstdc++-v3/doc/html/manual/codecvt.html24
-rw-r--r--libstdc++-v3/doc/html/manual/complex.html (renamed from libstdc++-v3/doc/html/manual/bk01pt10ch21.html)10
-rw-r--r--libstdc++-v3/doc/html/manual/configure.html6
-rw-r--r--libstdc++-v3/doc/html/manual/containers.html8
-rw-r--r--libstdc++-v3/doc/html/manual/containers_and_c.html (renamed from libstdc++-v3/doc/html/manual/bk01pt07ch18.html)10
-rw-r--r--libstdc++-v3/doc/html/manual/debug.html13
-rw-r--r--libstdc++-v3/doc/html/manual/debug_mode.html7
-rw-r--r--libstdc++-v3/doc/html/manual/diagnostics.html8
-rw-r--r--libstdc++-v3/doc/html/manual/documentation_style.html (renamed from libstdc++-v3/doc/html/manual/bk01apas04.html)13
-rw-r--r--libstdc++-v3/doc/html/manual/dynamic_memory.html (renamed from libstdc++-v3/doc/html/manual/bk01pt02ch05.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/exceptions.html (renamed from libstdc++-v3/doc/html/manual/bk01pt03ch07.html)10
-rw-r--r--libstdc++-v3/doc/html/manual/ext_algorithms.html (renamed from libstdc++-v3/doc/html/manual/bk01pt12ch35.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/ext_allocators.html (renamed from libstdc++-v3/doc/html/manual/bk01pt12ch32.html)5
-rw-r--r--libstdc++-v3/doc/html/manual/ext_compile_checks.html (renamed from libstdc++-v3/doc/html/manual/bk01pt12ch29.html)5
-rw-r--r--libstdc++-v3/doc/html/manual/ext_concurrency.html (renamed from libstdc++-v3/doc/html/manual/concurrency.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/ext_containers.html (renamed from libstdc++-v3/doc/html/manual/bk01pt12ch33.html)5
-rw-r--r--libstdc++-v3/doc/html/manual/ext_demangling.html (renamed from libstdc++-v3/doc/html/manual/bk01pt12ch39.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/ext_io.html (renamed from libstdc++-v3/doc/html/manual/bk01pt12ch38.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/ext_iterators.html (renamed from libstdc++-v3/doc/html/manual/bk01pt12ch37.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/ext_numerics.html (renamed from libstdc++-v3/doc/html/manual/bk01pt12ch36.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/ext_utilities.html (renamed from libstdc++-v3/doc/html/manual/bk01pt12ch34.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/extensions.html8
-rw-r--r--libstdc++-v3/doc/html/manual/facets.html (renamed from libstdc++-v3/doc/html/manual/bk01pt06ch15.html)21
-rw-r--r--libstdc++-v3/doc/html/manual/fstreams.html (renamed from libstdc++-v3/doc/html/manual/bk01pt11ch27.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/functors.html (renamed from libstdc++-v3/doc/html/manual/bk01pt04ch09.html)10
-rw-r--r--libstdc++-v3/doc/html/manual/fundamental_types.html (renamed from libstdc++-v3/doc/html/manual/bk01pt02ch04.html)5
-rw-r--r--libstdc++-v3/doc/html/manual/generalized_numeric_operations.html (renamed from libstdc++-v3/doc/html/manual/bk01pt10ch22.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/internals.html10
-rw-r--r--libstdc++-v3/doc/html/manual/intro.html8
-rw-r--r--libstdc++-v3/doc/html/manual/io.html8
-rw-r--r--libstdc++-v3/doc/html/manual/io_and_c.html (renamed from libstdc++-v3/doc/html/manual/bk01pt11ch28.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/iostream_objects.html (renamed from libstdc++-v3/doc/html/manual/bk01pt11ch24.html)10
-rw-r--r--libstdc++-v3/doc/html/manual/iterators.html8
-rw-r--r--libstdc++-v3/doc/html/manual/license.html105
-rw-r--r--libstdc++-v3/doc/html/manual/locales.html (renamed from libstdc++-v3/doc/html/manual/bk01pt06ch14.html)24
-rw-r--r--libstdc++-v3/doc/html/manual/localization.html8
-rw-r--r--libstdc++-v3/doc/html/manual/make.html9
-rw-r--r--libstdc++-v3/doc/html/manual/memory.html (renamed from libstdc++-v3/doc/html/manual/bk01pt04ch11.html)29
-rw-r--r--libstdc++-v3/doc/html/manual/messages.html25
-rw-r--r--libstdc++-v3/doc/html/manual/numerics.html8
-rw-r--r--libstdc++-v3/doc/html/manual/numerics_and_c.html21
-rw-r--r--libstdc++-v3/doc/html/manual/pairs.html (renamed from libstdc++-v3/doc/html/manual/bk01pt04ch10.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/parallel_mode.html9
-rw-r--r--libstdc++-v3/doc/html/manual/sequences.html (renamed from libstdc++-v3/doc/html/manual/bk01pt07ch16.html)10
-rw-r--r--libstdc++-v3/doc/html/manual/setup.html (renamed from libstdc++-v3/doc/html/manual/bk01pt01ch02.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/shared_ptr.html26
-rw-r--r--libstdc++-v3/doc/html/manual/source_code_style.html (renamed from libstdc++-v3/doc/html/manual/bk01apas03.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/source_design_notes.html (renamed from libstdc++-v3/doc/html/manual/bk01apas05.html)10
-rw-r--r--libstdc++-v3/doc/html/manual/source_organization.html (renamed from libstdc++-v3/doc/html/manual/bk01apas02.html)10
-rw-r--r--libstdc++-v3/doc/html/manual/spine.html58
-rw-r--r--libstdc++-v3/doc/html/manual/status.html237
-rw-r--r--libstdc++-v3/doc/html/manual/streambufs.html (renamed from libstdc++-v3/doc/html/manual/bk01pt11ch25.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/strings.html8
-rw-r--r--libstdc++-v3/doc/html/manual/stringstreams.html (renamed from libstdc++-v3/doc/html/manual/bk01pt11ch26.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/support.html8
-rw-r--r--libstdc++-v3/doc/html/manual/termination.html (renamed from libstdc++-v3/doc/html/manual/bk01pt02ch06.html)7
-rw-r--r--libstdc++-v3/doc/html/manual/test.html4
-rw-r--r--libstdc++-v3/doc/html/manual/traits.html (renamed from libstdc++-v3/doc/html/manual/bk01pt04ch12.html)10
-rw-r--r--libstdc++-v3/doc/html/manual/using.html7
-rw-r--r--libstdc++-v3/doc/html/manual/using_concurrency.html (renamed from libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html)4
-rw-r--r--libstdc++-v3/doc/html/manual/using_exceptions.html6
-rw-r--r--libstdc++-v3/doc/html/manual/using_headers.html (renamed from libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html)14
-rw-r--r--libstdc++-v3/doc/html/manual/using_macros.html (renamed from libstdc++-v3/doc/html/manual/bk01pt01ch03s04.html)4
-rw-r--r--libstdc++-v3/doc/html/manual/using_namespaces.html (renamed from libstdc++-v3/doc/html/manual/bk01pt01ch03s03.html)4
-rw-r--r--libstdc++-v3/doc/html/manual/utilities.html8
-rw-r--r--libstdc++-v3/doc/html/manual/vector.html (renamed from libstdc++-v3/doc/html/manual/bk01pt07ch16s02.html)4
-rw-r--r--libstdc++-v3/doc/html/manual/verbose_termination.html (renamed from libstdc++-v3/doc/html/manual/bk01pt02ch06s02.html)7
-rw-r--r--libstdc++-v3/doc/html/spine.html51
-rw-r--r--libstdc++-v3/doc/xml/gnu/fdl-1.2.xml1
-rw-r--r--libstdc++-v3/doc/xml/gnu/gpl-3.0.xml1
-rw-r--r--libstdc++-v3/doc/xml/manual/appendix_contributing.xml4
-rw-r--r--libstdc++-v3/doc/xml/manual/concurrency.xml2
-rw-r--r--libstdc++-v3/doc/xml/manual/containers.xml6
-rw-r--r--libstdc++-v3/doc/xml/manual/diagnostics.xml1
-rw-r--r--libstdc++-v3/doc/xml/manual/extensions.xml13
-rw-r--r--libstdc++-v3/doc/xml/manual/intro.xml15
-rw-r--r--libstdc++-v3/doc/xml/manual/io.xml5
-rw-r--r--libstdc++-v3/doc/xml/manual/locale.xml1
-rw-r--r--libstdc++-v3/doc/xml/manual/localization.xml2
-rw-r--r--libstdc++-v3/doc/xml/manual/numerics.xml3
-rw-r--r--libstdc++-v3/doc/xml/manual/status_cxx1998.xml7031
-rw-r--r--libstdc++-v3/doc/xml/manual/status_cxx200x.xml7
-rw-r--r--libstdc++-v3/doc/xml/manual/status_cxxtr1.xml1177
-rw-r--r--libstdc++-v3/doc/xml/manual/support.xml4
-rw-r--r--libstdc++-v3/doc/xml/manual/using.xml7
-rw-r--r--libstdc++-v3/doc/xml/manual/utilities.xml5
-rw-r--r--libstdc++-v3/include/backward/strstream40
-rw-r--r--libstdc++-v3/include/bits/c++config20
-rw-r--r--libstdc++-v3/include/bits/forward_list.h12
-rw-r--r--libstdc++-v3/include/bits/functional_hash.h4
-rw-r--r--libstdc++-v3/include/bits/ios_base.h8
-rw-r--r--libstdc++-v3/include/bits/locale_classes.h22
-rw-r--r--libstdc++-v3/include/bits/locale_classes.tcc4
-rw-r--r--libstdc++-v3/include/bits/locale_facets.h12
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc13
-rw-r--r--libstdc++-v3/include/bits/locale_facets_nonio.h10
-rw-r--r--libstdc++-v3/include/bits/stl_list.h10
-rw-r--r--libstdc++-v3/include/bits/stl_tree.h24
-rw-r--r--libstdc++-v3/include/c_compatibility/stdatomic.h10
-rw-r--r--libstdc++-v3/include/debug/formatter.h9
-rw-r--r--libstdc++-v3/include/debug/safe_base.h12
-rw-r--r--libstdc++-v3/include/ext/mt_allocator.h8
-rw-r--r--libstdc++-v3/include/ext/pool_allocator.h6
-rw-r--r--libstdc++-v3/include/std/chrono2
-rw-r--r--libstdc++-v3/include/std/condition_variable8
-rw-r--r--libstdc++-v3/include/std/mutex2
-rw-r--r--libstdc++-v3/include/std/system_error4
-rw-r--r--libstdc++-v3/libsupc++/cxxabi.h12
-rw-r--r--libstdc++-v3/libsupc++/eh_ptr.cc2
-rw-r--r--libstdc++-v3/libsupc++/eh_terminate.cc4
-rw-r--r--libstdc++-v3/libsupc++/eh_type.cc2
-rw-r--r--libstdc++-v3/libsupc++/exception4
-rw-r--r--libstdc++-v3/libsupc++/exception_ptr.h14
-rw-r--r--libstdc++-v3/libsupc++/guard.cc4
-rw-r--r--libstdc++-v3/libsupc++/unwind-cxx.h12
-rw-r--r--libstdc++-v3/libsupc++/vec.cc2
-rw-r--r--libstdc++-v3/src/atomic.cc8
-rw-r--r--libstdc++-v3/src/chrono.cc2
-rw-r--r--libstdc++-v3/src/condition_variable.cc8
-rw-r--r--libstdc++-v3/src/debug.cc18
-rw-r--r--libstdc++-v3/src/hash.cc10
-rw-r--r--libstdc++-v3/src/mt_allocator.cc6
-rw-r--r--libstdc++-v3/src/pool_allocator.cc4
-rw-r--r--libstdc++-v3/src/strstream.cc40
-rw-r--r--libstdc++-v3/src/tree.cc64
-rw-r--r--libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc77
-rw-r--r--libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc77
-rw-r--r--libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc5
715 files changed, 17730 insertions, 20142 deletions
diff --git a/ChangeLog b/ChangeLog
index 27a9dd0940f..b8737ccb1d3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-04-17 Ben Elliston <bje@au.ibm.com>
+
+ * config.sub, config.guess: Update from upstream sources.
+
+2009-04-15 Anthony Green <green@moxielogic.com>
+
+ * configure.ac: Add moxie support.
+ * configure: Rebuilt.
+
2009-04-14 Jakub Jelinek <jakub@redhat.com>
* configure.ac: Change copyright header to refer to version
diff --git a/config.guess b/config.guess
index aeb53233ecb..e5716eea733 100755
--- a/config.guess
+++ b/config.guess
@@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
# Free Software Foundation, Inc.
-timestamp='2008-12-18'
+timestamp='2009-02-03'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -1154,6 +1154,16 @@ EOF
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit ;;
@@ -1340,6 +1350,9 @@ EOF
i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos
exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
diff --git a/config.sub b/config.sub
index 9489dc7867b..a39437d0158 100755
--- a/config.sub
+++ b/config.sub
@@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
# Free Software Foundation, Inc.
-timestamp='2008-12-11'
+timestamp='2009-04-17'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -122,6 +122,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -271,6 +272,7 @@ case $basic_machine in
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | moxie \
| mt \
| msp430 \
| nios | nios2 \
@@ -445,6 +447,10 @@ case $basic_machine in
basic_machine=m68k-apollo
os=-bsd
;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -1256,8 +1262,9 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
+ | -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
diff --git a/configure b/configure
index c81dbe4fac7..db8d0b622b0 100755
--- a/configure
+++ b/configure
@@ -2409,6 +2409,10 @@ case "${target}" in
frv-*-*)
noconfigdirs="$noconfigdirs ${libgcj}"
;;
+ moxie-*-*)
+ noconfigdirs="$noconfigdirs ${libgcj}"
+ noconfigdirs="$noconfigdirs gprof"
+ ;;
h8300*-*-*)
noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
;;
diff --git a/configure.ac b/configure.ac
index 574547fe55e..4b123f409b1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -644,6 +644,10 @@ case "${target}" in
frv-*-*)
noconfigdirs="$noconfigdirs ${libgcj}"
;;
+ moxie-*-*)
+ noconfigdirs="$noconfigdirs ${libgcj}"
+ noconfigdirs="$noconfigdirs gprof"
+ ;;
h8300*-*-*)
noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
;;
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 61ca4880a4e..7c97d8f9c1d 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2009-04-16 Paolo Bonzini <bonzini@gnu.org>
+
+ * compare-all-tests: New.
+
2009-04-14 Jakub Jelinek <jakub@redhat.com>
* gennews (files): Reference GCC 4.4 web pages.
diff --git a/contrib/compare-all-tests b/contrib/compare-all-tests
new file mode 100644
index 00000000000..91d0e7852de
--- /dev/null
+++ b/contrib/compare-all-tests
@@ -0,0 +1,99 @@
+#! /bin/bash
+
+# Compare the assembly language output for all the gcc tests.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# Contributed by Paolo Bonzini.
+#
+# Invoke it as "bash compare-all-tests target1 target2 ... targetN".
+# Assumptions are:
+#
+# 1) that the base and patched compilers reside respectively in
+# base-$target-build and $target-build, where $target is the commandline
+# argument to compare-all-tests, and should match the variables in the
+# script itself so that the correct set of options is tested. Both
+# compilers should be fully built (including target libraries).
+#
+# 2) that the testsuite has been run on the base compiler (since it's
+# just compilation testing, using RUNTESTFLAGS=--target_board=basic-sim
+# usually suffices).
+#
+# Tests that fail to compile on the base compiler are not compared.
+
+alpha_opts='-mlong-double-64/-mieee -mlong-double-64 -mlong-double-128/-mieee -mlong-double-128'
+arm_opts='-mthumb/-march=armv5t -mthumb/-march=armv6t2 -march=armv5 -mthumb/-march=armv6t2/-mfpu=vfp/-mfloat-abi=softfp -march=armv5/-mfpu=vfp/-mfloat-abi=softfp'
+cris_opts='-march=v32 -march=v1'
+h8300_opts='/ -mh -mh/-mn -ms -ms/-mn -msx -msx/-mn -mint32 -mh/-mint32 -mh/-mn/-mint32 -ms/-mint32 -ms/-mn/-mint32 -msx/-mint32 -msx/-mn/-mint32'
+i386_opts='-m32 -m64 -m32/-msse/-msse2/-mfpmath=sse'
+m32c_opts='-mcpu=r8c -mcpu=m16c -mcpu=m32c'
+m68k_opts='-m68000 -m68020 -m68020/-m68881 -m68040/-m68881 -m68060/-m68881 -mcfv4e'
+mips_opts='-msoft-float/-mgp32/-mips16 -mabi=32/-mfp32/-mgp32/-mips16 -mabi=o64/-mfp64/-mgp64/-mips16 -msoft-float/-mgp32 -mfp32/-mgp32 -march=mips64r2/-mabi=32/-mfp64/-mgp32 -msoft-float/-mgp64 -msingle-float/-mfp32/-mgp64 -mfp64/-mgp64'
+mn10300_opts='-mam33 -mam33-2'
+pa_opts='-march=2.0 -march=1.0 -march=1.1'
+ppc_opts='-m32 -m64'
+s390_opts='-m31 -m31/-mzarch -m64'
+score_opts='-mscore3 -mscore7'
+sh64_opts='-m5-32media -m5-32media-nofpu -m5-64media -m5-64media-nofpu -m5-compact -m5-compact-nofpu'
+sh_opts='-m3 -m3e -m4 -m4a -m4al -m4/-mieee -m1 -m1/-mno-cbranchdi -m2a -m2a/-mieee -m2e -m2e/-mieee'
+sparc_opts='-mcpu=v8/-m32 -mcpu=v9/-m32 -m64'
+
+all_targets='alpha arm avr bfin cris crx fr30 frv h8300 ia64 iq2000 m32c m32r m68hc11 m68k mcore mips mmix mn10300 pa pdp11 picochip ppc score sh sh64 sparc spu v850 vax xstormy16 xtensa' # e500
+
+test_one_file ()
+{
+ local bdir pdir opts bline pline
+ bdir=base-$1-gcc-build
+ pdir=$1-gcc-build
+ bline=$2
+ pline=${2//$bdir/$pdir}
+ opts=${3//\// }
+ echo "$pline $opts"
+ $bline $opts 2>/dev/null >/dev/null || return 0
+ diff -L "$bdir/gcc/cc1 $opts" -L "$pdir/gcc/cc1 $opts" -u \
+ <( $bline $opts 2>&1 ) <( $pline $opts 2>&1 ) || { echo -n . >&2; return 1; }
+}
+
+test_all_opts ()
+{
+ eval opts=\$${1}_opts
+ if test -z "$opts"; then
+ test_one_file $1 "$2"
+ else
+ for opt in $opts; do
+ test_one_file $1 "$2" $opt
+ done
+ fi
+}
+
+for target in ${*-$all_targets}; do
+ mkdir -p $target-gcc-build/gcc/testsuite/gcc
+ cp -R base-$target-gcc-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1 \
+ $target-gcc-build/gcc/testsuite/gcc/gcc.dg-struct-layout-1
+
+ # Provide targ-include files for newlib
+ # for newlib_path in `echo base-$target-gcc-build/*/newlib`; do
+ # test -d $newlib_path && ln -sf ../../$newlib_path ${newlib_path/base-}
+ # done
+
+ echo -n Testing $target >&2
+ sed '/^Executing on host: /!d
+ /xgcc -B/!d
+ / -E /d
+ / -g/d
+ / -print-prog-name=/d
+ s/^Executing on host: //
+ s/ *(timeout.*//
+ s/ -fverbose-asm / /
+ s/ -frtl-abstract-sequences / /
+ s/ -fdump[-a-z0-9]* / /g
+ s/ -da / /g
+ s/ -\{1,2\}save-temps / /
+ s/ -c / -S /
+ / -S /! s/ -o / -S -o /
+ s/ -o [^ ]*/ -frandom-seed=0 -o -/' base-$target-gcc-build/gcc/testsuite/gcc/gcc.log | while read line; do
+ case "$line" in
+ *" -m"*) test_one_file $target "$line" "" ;;
+ *) test_all_opts $target "$line" ;;
+ esac
+ done > compare-$target.log
+ echo >&2
+done
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 491608cdd7b..bad6c39ce9c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,762 @@
+2009-04-19 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * config/i386/cygwin-stdint.h (INTPTR_TYPE): Remove "long".
+ (UINTPTR_TYPE): Likewise.
+
+2009-04-19 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/37481
+ * c-typeck.c (digest_init): Check for initializing an array with a
+ string literal.
+
+2009-04-19 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/19771
+ * c-semantics.c (pop_stmt_list): Propagate
+ STATEMENT_LIST_HAS_LABEL to parent statement list.
+
+2009-04-19 Adam Nemet <anemet@caviumnetworks.com>
+
+ * config/mips/mips.h (mips_tune_attr): New macro.
+ * config/mips/mips.md (cpu): Use it.
+
+2009-04-19 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/38243
+ * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
+ declaring a tag.
+
+2009-04-19 Diego Novillo <dnovillo@google.com>
+
+ * toplev.c (compile_file): Move call to coverage_finish ...
+ * cgraphunit.c (ipa_passes): ... here.
+ Call cgraph_process_new_functions.
+ * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
+ * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
+
+2009-04-19 Jan Hubicka <jh@suse.cz>
+
+ * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper cfun.
+ (dump_cgraph_node): Dump can throw external flag.
+ * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
+
+2009-04-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR c/32061
+ PR c++/36954
+ * doc/invoke.texi: Add -Wlogical-op to -Wextra.
+ * common.opt (Wlogical-op): Move from here...
+ * c.opt (Wlogical-op): ... to here.
+ * c-typeck.c (parser_build_binary_op): Update call to
+ warn_logical_operator.
+ * c-opts.c (c_common_post_options): Enable warn_logical_op with
+ extra_warnings.
+ * c-common.c (warn_logical_op): Update.
+ * c-common.h (warn_logical_op): Update declaration.
+
+2009-04-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree.c (protected_set_expr_location): Fix formatting.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/27676
+ * c-typeck.c (readonly_warning): new.
+ (build_unary_op, build_modify_expr): Use readonly_warning for
+ storing into something readonly but not const-qualified.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/22367
+ * c-typeck.c (build_unary_op): Check for taking address of
+ expression of type void.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/35210
+ * c-typeck.c (build_function_call): Check for calling a function
+ with qualified void return types. Call require_complete_type when
+ generating a trap.
+
+2009-04-18 Jan Hubicka <jh@suse.cz>
+
+ * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
+ Set nothrow flag.
+ * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
+ can_throw_external flag.
+ * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
+ * ipa-pure-const.c (ignore_edge): New function.
+ (propagate): Compute order for NOTHROW computation; set NOTHROWs
+ only over can_throw_external edges.
+ (local_pure_const): Add nothrow flag.
+ * ipa-utils.c (searchc): Add ignore_edge callback.
+ (ipa_utils_reduced_inorder): Add ignore_edge callback.
+ * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
+ (set_nothrow_function_flags): Update cgraph.
+ * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
+
+2009-04-18 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/39804
+ * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
+ (fold_stmt): ... this and ...
+ (fold_stmt_inplace): ... this.
+ (fold_stmt_1): Fold references in calls and asms.
+ * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
+
+2009-04-18 Kazu Hirata <kazu@codesourcery.com>
+
+ * tree-vrp.c (ssa_name_nonzero_p): Remove.
+ * tree.h: Remove the prototype for ssa_name_nonzero_p.
+
+2009-04-18 Kazu Hirata <kazu@codesourcery.com>
+
+ * tree.c (function_args_count): Remove.
+ * tree.h: Remove the prototype for function_args_count.
+
+2009-04-18 Kazu Hirata <kazu@codesourcery.com>
+
+ * tree-iterator.c (expr_only): Remove.
+ * tree.h: Remove the prototype for expr_only.
+
+2009-04-18 Kazu Hirata <kazu@codesourcery.com>
+
+ * reginfo.c (cannot_change_mode_set_regs): Remove.
+ * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
+
+2009-04-08 Anatoly Sokolov <aesok@post.ru>
+
+ * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
+ whether operands 0 and 1 overlaps.
+
+2009-04-18 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR middle-end/36902
+ * tree-vrp.c (check_array_ref): Pass a location_t instead of a
+ pointer. Use warning_at instead of warning.
+ (search_for_addr_array): Likewise.
+ (check_array_bounds): Likewise.
+ (check_all_array_refs): Check that the incoming edge is not in the
+ list of edges to be removed.
+ (check_all_array_refs): Avoid the temporal pointer.
+ (vrp_visit_cond_stmt): Fix typo.
+ (simplify_switch_using_ranges): Handle the case where the switch
+ index is an integer constant.
+
+2009-04-18 Adam Nemet <anemet@caviumnetworks.com>
+
+ * config/mips/mips.c (mips_final_postscan_insn): Make it static.
+
+2009-04-18 Kazu Hirata <kazu@codesourcery.com>
+
+ * doc/extend.texi, doc/invoke.texi: Fix typos.
+
+2009-04-17 Cary Coutant <ccoutant@google.com>
+
+ * tree-flow-inline.h (get_lineno): Fix inverted test.
+
+2009-04-17 Diego Novillo <dnovillo@google.com>
+
+ * tree-ssa-pre.c (create_expression_by_pieces): Remove
+ assertion for AVAIL_OUT.
+
+2009-04-17 Mike Frysinger <vapier@gentoo.org>
+
+ PR target/38627
+ * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
+ * config/sh/linux-atomic.asm: Likewise.
+
+2009-04-17 Diego Novillo <dnovillo@google.com>
+
+ * except.c (debug_eh_tree): New.
+ (struct eh_region, struct eh_status): Move ...
+ * except.h: ... here.
+ (add_type_for_runtime): Declare extern.
+ (lookup_type_for_runtime): Likewise.
+ (debug_eh_tree): Declare.
+ * Makefile.in (GTFILES): List except.h before except.c
+
+2009-04-17 Diego Novillo <dnovillo@google.com>
+
+ * omp-low.c (create_omp_child_function): Set DECL_CONTEXT
+ for DECL.
+ * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
+ * tree-dfa.c (find_referenced_vars_in): Factor out of ...
+ (find_vars_r): ... here.
+ * tree-flow.h (find_referenced_vars_in): Declare.
+ * tree-ssa-pre.c (create_expression_by_pieces): Assert
+ that AVAIL_OUT exists for BLOCK.
+ * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
+ (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
+ (tree-parloops.o): Likewise.
+
+2009-04-17 Simon Baldwin <simonb@google.com>
+
+ * toplev.c (default_tree_printer): Add handling for %E format.
+
+2009-04-17 Diego Novillo <dnovillo@google.com>
+
+ * tree-pretty-print.c (dump_generic_node): Add break
+ after TREE_BINFO handler.
+ Handle COMPLEX_TYPE, REAL_TYPE and FIXED_POINT_TYPE
+ Handle NULL TREE_TYPEs.
+ Handle METHOD_TYPE and FUNCTION_TYPE together.
+ Call print_struct_decl when printing structures and
+ TDF_SLIM is not given.
+ (print_struct_decl): Fix logic for detecting recursion.
+
+2009-04-17 Rafael Avila de Espindola <espindola@google.com>
+
+ PR 31567
+ * gcc.c (create_at_file): New.
+ (compile_input_file_p): New.
+ (do_spec_1): Use @args files for %i. Use create_at_file for %o.
+ * main.c (main): Update call to toplev_main.
+ * toplev.c (toplev_main): Change signature. Call expandargv.
+ * toplev.h (toplev_main): Change signature.
+
+2009-04-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * dwarf2out.c (field_byte_offset): Use the type size as the field size
+ if the latter is not constant.
+
+2009-04-17 David Edelsohn <edelsohn@gnu.org>
+
+ * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
+
+2009-04-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
+ * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
+
+2009-04-17 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-structalias.c (get_constraint_for_component_ref):
+ Handle component references view-converting an invariant address.
+
+2009-04-17 Adam Nemet <anemet@caviumnetworks.com>
+
+ * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
+ TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
+ TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
+ TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
+ Use @deftypevr rather than @deftypevar.
+
+2009-04-17 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up
+ tuplification.
+ (get_prop_source_stmt): Likewise.
+ (can_propagate_from): Likewise.
+
+2009-04-17 Andrew Stubbs <ams@codesourcery.com>
+
+ * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
+ TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
+ (--with-multilib-list): Add default value.
+ * configure: Regenerate.
+ * Makefile.in (TM_ENDIAN_CONFIG): Define.
+ (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
+ * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
+ TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
+ Don't add default cpu to multilib list unnecessarily, but do enable
+ the relevant compiler option..
+ Add support for --with-multilib-list=<blank> and
+ --with-multilib-list=!<somelib> to supress unwanted multilibs.
+ * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
+ (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
+ (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
+ TM_MULTILIB_CONFIG.
+ (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
+ (MULTILIB_OSDIRNAMES): New variable.
+ * config/sh/t-1e: Delete file.
+ * config/sh/t-mlib-sh1: Delete file.
+ * config/sh/t-mlib-sh2: Delete file.
+ * config/sh/t-mlib-sh2a: Delete file.
+ * config/sh/t-mlib-sh2a-nofpu: Delete file.
+ * config/sh/t-mlib-sh2a-single: Delete file.
+ * config/sh/t-mlib-sh2a-single-only: Delete file.
+ * config/sh/t-mlib-sh2e: Delete file.
+ * config/sh/t-mlib-sh3e: Delete file.
+ * config/sh/t-mlib-sh4: Delete file.
+ * config/sh/t-mlib-sh4-nofpu: Delete file.
+ * config/sh/t-mlib-sh4-single: Delete file.
+ * config/sh/t-mlib-sh4-single-only: Delete file.
+ * config/sh/t-mlib-sh4a: Delete file.
+ * config/sh/t-mlib-sh4a-nofpu: Delete file.
+ * config/sh/t-mlib-sh4a-single: Delete file.
+ * config/sh/t-mlib-sh4a-single-only: Delete file.
+ * config/sh/t-mlib-sh4al: Delete file.
+ * config/sh/t-mlib-sh5-32media: Delete file.
+ * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
+ * config/sh/t-mlib-sh5-64media: Delete file.
+ * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
+ * config/sh/t-mlib-sh5-compact: Delete file.
+ * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
+ * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
+ * doc/install.texi (Options specification): Add
+ --with-multilib-list and --with-endian.
+
+2009-04-17 Rafael Avila de Espindola <espindola@google.com>
+
+ * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
+ REVISION_c.
+ (OBJS-common): Add plugin-version.o.
+ (plugin-version.o): New.
+ * gcc-plugin.h (plugin_gcc_version): New.
+ (plugin_default_version_check): New.
+ (plugin_init_func, plugin_init): Add version argument.
+ * plugin-version.c: New.
+ * plugin.c (str_plugin_gcc_version_name): New.
+ (try_init_one_plugin): Read plugin_gcc_version from the plugin and
+ pass it to the init function.
+ (plugin_default_version_check): New.
+
+2009-04-17 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
+ for decl-vs-decl disambiguation.
+
+2009-04-17 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * config/s390/s390.h (s390_tune_attr): New macro definition.
+ * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
+
+2009-04-17 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
+ (fold_stmt_r): Likewise.
+ (maybe_fold_reference): New function.
+ (fold_gimple_assign): Handle cases fold_stmt_r did.
+ (fold_stmt): Do not use fold_stmt_r.
+ (fold_stmt_inplace): Likewise.
+
+2009-04-17 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
+ (record_equivalences_from_stmt): Remove useless checks and
+ simplifications.
+ * tree-ssa-pre.c (eliminate): Avoid converting a constant if
+ the type is already suitable.
+
+2009-04-17 Paolo Bonzini <bonzini@gnu.org>
+
+ * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
+
+2009-04-17 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
+ (CMPtype): Define as __gcc_CMPtype.
+
+2009-04-17 Aurelien Jarno <aurelien@aurel32.net>
+
+ * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
+ for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
+
+2009-04-17 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/39746
+ * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
+ special-casing for builtins and static variable use/def.
+ (call_may_clobber_ref_p_1): Likewise.
+
+2009-04-16 Ian Lance Taylor <iant@google.com>
+
+ * df.h: Include "timevar.h".
+ (struct df_problem): Change tv_id field to timevar_id_t.
+ * tree-pass.h: Include "timevar.h".
+ (struct opt_pass): Change tv_id field to timevar_id_t.
+ * timevar.h (timevar_id_t): Define TV_NONE.
+ * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
+ TV_NONE rather than tv_id != 0.
+ (execute_one_pass): Likewise.
+ * Makefile.in (DF_H): Add $(TIMEVAR_H).
+ (TREE_PASS_H): Define. Change all instances of tree-pass.h in
+ dependencies to $(TREE_PASS_H).
+ * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
+ to TV_NONE.
+ (pass_branch_target_load_optimize2): Likewise.
+ * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
+ (pass_outof_cfg_layout_mode): Likewise.
+ * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
+ (pass_rebuild_cgraph_edges): Likewise.
+ (pass_remove_cgraph_callee_edges): Likewise.
+ * df-core.c (pass_df_initialize_opt): Likewise.
+ (pass_df_initialize_no_opt): Likewise.
+ (pass_df_finish): Likewise.
+ * emit-rtl.c (pass_unshare_all_rtl): Likewise.
+ * except.c (pass_set_nothrow_function_flags): Likewise.
+ (pass_convert_to_eh_region_ranges): Likewise.
+ * final.c (pass_compute_alignments): Likewise.
+ * function.c (pass_instantiate_virtual_regs): Likewise.
+ (pass_init_function): Likewise.
+ (pass_leaf_regs): Likewise.
+ (pass_match_asm_constraints): Likewise.
+ * gimple-low.c (pass_lower_cf): Likewise.
+ (pass_mark_used_blocks): Likewise.
+ * init-regs.c (pass_initialize_regs): Likewise.
+ * integrate.c (pass_initial_value_sets): Likewise.
+ * ira.c (pass_ira): Likewise.
+ * jump.c (pass_cleanup_barriers): Likewise.
+ * omp-low.c (pass_expand_omp): Likewise.
+ (pass_lower_omp): Likewise.
+ * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
+ * recog.c (pass_split_all_insns): Likewise.
+ (pass_split_after_reload): Likewise.
+ (pass_split_before_regstack): Likewise.
+ (pass_split_before_sched2): Likewise.
+ (pass_split_for_shorten_branches): Likewise.
+ * reginfo.c (pass_reginfo_init): Likewise.
+ (pass_subregs_of_mode_init): Likewise.
+ (pass_subregs_of_mode_finish): Likewise.
+ * passes.c (pass_postreload): Likewise.
+ * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
+ * tree-cfg.c (pass_remove_useless_stmts): Likewise.
+ (pass_warn_function_return): Likewise.
+ (pass_warn_function_noreturn): Likewise.
+ * tree-complex.c (pass_lower_complex): Likewise.
+ (pass_lower_complex_O0): Likewise.
+ * tree-if-conv.c (pass_if_conversion): Likewise.
+ * tree-into-ssa.c (pass_build_ssa): Likewise.
+ * tree-mudflap.c (pass_mudflap_1): Likewise.
+ (pass_mudflap_2): Likewise.
+ * tree-nomudflap.c (pass_mudflap_1): Likewise.
+ (pass_mudflap_2): Likewise.
+ * tree-nrv.c (pass_return_slot): Likewise.
+ * tree-object-size.c (pass_object_sizes): Likewise.
+ * tree-optimize.c (pass_all_optimizations): Likewise.
+ (pass_early_local_passes): Likewise.
+ (pass_all_early_optimizations): Likewise.
+ (pass_cleanup_cfg): Likewise.
+ (pass_cleanup_cfg_post_optimizing): Likewise.
+ (pass_free_datastructures): Likewise.
+ (pass_free_cfg_annotations): Likewise.
+ (pass_fixup_cfg): Likewise.
+ (pass_init_datastructures): Likewise.
+ * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
+ (pass_late_warn_uninitialized): Likewise.
+ (pass_update_address_taken): Likewise.
+ * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
+ * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
+ (pass_cse_sincos): Likewise.
+ (pass_convert_to_rsqrt): Likewise.
+ * tree-ssa-structalias.c (pass_build_alias): Likewise.
+ * tree-stdarg.c (pass_stdarg): Likewise.
+ * tree-tailcall.c (pass_tail_recursion): Likewise.
+ (pass_tail_calls): Likewise.
+ * tree-vect-generic.c (pass_lower_vector): Likewise.
+ (pass_lower_vector_ssa): Likewise.
+ * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
+
+2009-04-16 Joseph Myers <joseph@codesourcery.com>
+
+ * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
+ XLR entry.
+ * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
+ Handle -march=xlr.
+ * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
+ logical and signext.
+
+2009-04-16 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/39767
+ * config/sh/predicates.md (arith_operand): Check if the operand
+ of TRUNCATE is a REG.
+
+2009-04-16 Kazu Hirata <kazu@codesourcery.com>
+
+ * cfgrtl.c (delete_insn_chain_and_edges): Remove.
+ * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
+
+2009-04-16 Kazu Hirata <kazu@codesourcery.com>
+
+ * tree-iterator.c (tsi_split_statement_list_after,
+ tsi_split_statement_list_before): Remove.
+ * tree-iterator.h: Remove the prototypes for
+ tsi_split_statement_list_after and tsi_split_statement_list_before.
+
+2009-04-16 Kazu Hirata <kazu@codesourcery.com>
+
+ * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
+ * tree-ssa-propagate.h: Remove the prototype for
+ stmt_makes_single_load.
+
+2009-04-16 Kazu Hirata <kazu@codesourcery.com>
+
+ * emit-rtl.c (set_mem_attrs_from_reg): Remove.
+ * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
+
+2009-04-16 Kazu Hirata <kazu@codesourcery.com>
+
+ * tree-iterator.c (EXPR_LAST_BODY): Remove.
+
+2009-04-16 Kazu Hirata <kazu@codesourcery.com>
+
+ * except.c (eh_region_outer_p): Remove.
+ * except.h: Remove the prototype for eh_region_outer_p.
+
+2009-04-16 Kazu Hirata <kazu@codesourcery.com>
+
+ * function.c (current_function_assembler_name): Remove.
+ * function.h: Remove the prototype for
+ current_function_assembler_name.
+
+2009-04-16 Ian Lance Taylor <iant@google.com>
+
+ * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
+ (add_reg_note): Call alloc_reg_note.
+ * rtl.h (alloc_reg_note): Declare.
+ * combine.c (try_combine): Use alloc_reg_note.
+ (recog_for_combine, move_deaths): Likewise.
+ (distribute_notes): Use alloc_reg_note and add_reg_note.
+ * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
+ * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
+ * reload1.c (eliminate_regs_1): Use alloc_reg_note.
+
+2009-04-16 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/39762
+ * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
+ ira_may_move_out_cost): Add comments about way of their usage.
+ (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
+
+ * ira-conflicts.c (process_regs_for_copy): Use function
+ ira_get_register_move_cost instead of global
+ ira_register_move_cost.
+
+ * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
+ color_pass, move_spill_restore, update_curr_costs): Ditto.
+
+ * ira-lives.c (process_single_reg_class_operands): Ditto.
+
+ * ira-emit.c (emit_move_list): Ditto.
+
+ * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
+ (record_reg_classes): Ditto. Use functions
+ ira_get_register_move_cost and ira_get_may_move_cost instead of
+ global vars ira_register_move_cost, ira_may_move_out_cost and
+ ira_may_move_in_cost.
+ (record_address_regs): Don't call ira_init_register_move_cost.
+ Use function ira_get_may_move_cost instead of global
+ ira_may_move_in_cost.
+ (process_bb_node_for_hard_reg_moves): Use function
+ ira_get_register_move_cost instead of global ira_register_move_cost.
+ (ira_costs): Don't call ira_init_register_move_cost.
+
+2009-04-16 Richard Guenther <rguenther@suse.de>
+
+ * tree-cfg.c (verify_gimple_assign_binary):
+ Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
+ * ipa-struct-reorg.c (gen_size): Fold the built expressions.
+ (create_general_new_stmt): Note that this function is broken.
+
+2009-04-16 Rafael Avila de Espindola <espindola@google.com>
+
+ * common.opt (fhelp): Add Var(help_flag).
+ * gcc-plugin.h (plugin_info): Add help.
+ * plugin.c (plugin_name_args): Add help.
+ (register_plugin_info): Set plugin->help.
+ (print_help_one_plugin): New.
+ (print_plugins_help): New.
+ * plugin.h (print_plugins_help): New.
+ * toplev.c (toplev_main): Call print_plugins_help if needed.
+
+2009-04-16 Richard Guenther <rguenther@suse.de>
+
+ * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
+ (gimple_ior_addresses_taken_1): New function.
+ (gimple_ior_addresses_taken): Likewise.
+ * gimple.h (struct gimple_statement_with_ops_base): Remove
+ addresses_taken member.
+ (gimple_ior_addresses_taken): Declare.
+ (gimple_addresses_taken, gimple_addresses_taken_ptr,
+ gimple_set_addresses_taken): Remove.
+ * ipa-reference.c (mark_address): New function.
+ (scan_stmt_for_static_refs): Use it for marking addresses taken.
+ * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
+ (mark_address_taken): ... this. Just set TREE_ADDRESSABLE.
+ (gimple_add_to_addresses_taken): Remove.
+ (get_tmr_operands): Call mark_address_taken.
+ (get_asm_expr_operands): Likewise.
+ (get_expr_operands): Likewise.
+ (build_ssa_operands): Do not clear the addresses_taken bitmap.
+ (free_stmt_operands): Do not free it.
+ * tree-ssa.c (delete_tree_ssa): Likewise.
+ (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
+
+2009-04-16 Richard Guenther <rguenther@suse.de>
+
+ * gimple.h (walk_stmt_load_store_addr_ops): Declare.
+ (walk_stmt_load_store_ops): Likewise.
+ * gimple.c (get_base_loadstore): New function.
+ (walk_stmt_load_store_addr_ops): Likewise.
+ (walk_stmt_load_store_ops): Likewise.
+ * ipa-pure-const.c (check_op): Simplify.
+ (check_load, check_store): New functions.
+ (check_stmt): Use walk_stmt_load_store_ops.
+ * ipa-reference.c (mark_load): Adjust signature.
+ (mark_store): Likewise.
+ (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
+
+2009-04-16 Rafael Avila de Espindola <espindola@google.com>
+
+ * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
+ (plugin_info): New.
+ * opts.c (common_handle_option): Don't call print_version.
+ * plugin.c (plugin_name_args): Add version.
+ (register_plugin_info): New.
+ (register_callback): Handle PLUGIN_INFO.
+ (try_init_one_plugin): New.
+ (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
+ if failed to init.
+ (finalize_one_plugin): New.
+ (finalize_plugins): New.
+ (print_one_plugin): New.
+ (print_plugins_versions): New.
+ * plugin.h (print_plugins_versions): New.
+ (finalize_plugins): New.
+ * toplev.c (compile_file): Don't call initialize_plugins.
+ (print_version): Call print_plugins_versions.
+ (toplev_main): Call initialize_plugins. Print version if needed.
+ Call finalize_plugins.
+
+2009-04-16 Rafael Avila de Espindola <espindola@google.com>
+
+ * common.opt (fversion): New.
+ * gcc.c (print_version): New.
+ (process_command): Don't print the version. Just set print_version.
+ (main): Print version. Call subprocesses if print_version and
+ verbose_flag are set.
+ * opts.c (common_handle_option): Handle OPT_fversion.
+
+2009-04-16 Richard Guenther <rguenther@suse.de>
+ Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/39698
+ * tree-vect-loop.c (get_initial_def_for_reduction): Use the
+ type of the reduction variable. Only generate the def if
+ it is needed.
+
+ * omp-low.c (expand_omp_for_generic): When converting to a pointer
+ make sure to first convert to an integer of the same precision.
+ * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
+ the type of the evolution correctly in computing the new
+ induction variable base.
+
+2009-04-16 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/39625
+ * tree-cfg.c (make_blocks): Split statements with to-be
+ abnormal SSA names on the lhs.
+
+2009-04-16 Paolo Bonzini <bonzini@gnu.org>
+
+ * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
+ Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
+ * c-typeck.c (really_start_incremental_init): Likewise.
+ * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
+ (TARGET_INITIALIZER): Remove it.
+ * target.h (struct target): Remove vector_opaque_p.
+ * tree.c (build_opaque_vector_type): New.
+ * tree.h (TYPE_VECTOR_OPAQUE): New.
+ (build_opaque_vector_type): Declare.
+ * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
+ * config/rs6000/rs6000.c (build_opaque_vector_type,
+ rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
+ (rs6000_init_builtins): Use build_opaque_vector_type for
+ opaque_V4SI_type_node.
+
+2009-04-15 Catherine Moore <clm@codesourcery.com>
+
+ * debug.h (set_name): Declare.
+ * dwarf2out.c (dwarf2out_set_name): Declare.
+ (dwarf2_debug_hooks): Add set_name.
+ (find_AT_string): New.
+ (add_AT_string): Call find_AT_string.
+ (dwarf2out_set_name): New.
+ * cp/decl.c (grokdeclarator): Call set_name.
+ * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
+ * debug.c (do_nothing_debug_hooks): Likewise.
+ * dbxout.c (dbx_debug_hooks): Likewise.
+ * sdbout.c (sdb_debug_hooks): Likewise.
+
+2009-04-15 Michael Eager <eager@eagercon.com>
+
+ * config/rs6000/rs6000.c (rs6000_function_value): Set function return
+ reg for single-precision FPU.
+ * config/rs6000/rs6000.md (movsi_internal1): Only for
+ !TARGET_SINGLE_FPU.
+ (movsi_internal1_single): New. Add pattern to move SI values to/from
+ single-precision FP regs.
+
+2009-04-15 Richard Guenther <rguenther@suse.de>
+
+ * omp-low.c (lower_rec_input_clauses): Build correct address
+ expressions.
+ (expand_omp_for_generic): Fix multiplication type.
+ * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
+ (generate_memset_zero): Fix types.
+ * tree-profile.c (prepare_instrumented_value): Correctly
+ widen a pointer.
+
+2009-04-15 Ian Lance Taylor <iant@google.com>
+
+ * c.opt (Wenum-compare): Enable for C and Objc. Initialize to -1.
+ * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
+ for -Wall and for -Wc++-compat.
+ (c_common_post_options): For C++, set warn_enum_compare if not
+ already set.
+ * c-tree.h (struct c_expr): Add field original_type.
+ (build_external_ref): Update declaration.
+ * c-parser.c (c_parser_braced_init): Set original_type.
+ (c_parser_initelt): Likewise.
+ (c_parser_expr_no_commas): Likewise.
+ (c_parser_conditional_expression): Likewise.
+ (c_parser_cast_expression): Likewise.
+ (c_parser_unary_expression): Likewise. Pull setting of
+ original_code to top of function.
+ (c_parser_sizeof_expression): Set original_type.
+ (c_parser_alignof_expression): Likewise.
+ (c_parser_postfix_expression): Likewise. Pull setting of
+ original_code to top of function.
+ (c_parser_postfix_expression_after_paren_type): Set original_type.
+ (c_parser_postfix_expression_after_primary): Likewise.
+ (c_parser_expression): Likewise.
+ * c-typeck.c (build_external_ref): Add type parameter. Change all
+ callers.
+ (c_expr_sizeof_expr): Set original_type field.
+ (parser_build_unary_op): Likewise.
+ (parser_build_binary_op): Likewise. Optionally warn about
+ comparisons of enums of different types.
+ (digest_init): Set original_type field.
+ (really_start_incremental_init): Likewise.
+ (push_init_level, pop_init_level): Likewise.
+ * doc/invoke.texi (Warning Options): -Wenum-compare now
+ supported in C.
+
+2009-04-15 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
+ out a necessary conversion.
+ * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
+ names we didn't value number.
+ * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
+
+2009-04-15 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/39764
+ * tree-ssa-ccp.c (get_value): Canonicalize value with
+ canonicalize_float_value.
+
+2009-04-15 Jan Hubicka <jh@suse.cz>
+
+ * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
+ Wrong version of patch.
+
+2009-04-15 Jan Hubicka <jh@suse.cz>
+
+ * builtins.def (va_start, va_end, va_copy): Mark nothrow.
+
2009-04-15 Nathan Sidwell <nathan@codesourcery.com>
* config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
@@ -86,10 +845,9 @@
2009-04-14 Rafael Avila de Espindola <espindola@google.com>
Merge:
-
2008-12-19 Diego Novillo <dnovillo@google.com>
- * cgraph.c (dump_cgraph_node): Show memory address of NODE.
+ * cgraph.c (dump_cgraph_node): Show memory address of NODE.
2000-04-14 Richard Guenther <rguenther@suse.de>
@@ -178,7 +936,7 @@
* doc/install.texi: Correct description of default directory for
--with-gxx-include-dir.
-2009-04-12 Eric Botcazou <ebotcazou@adacore.com>
+2009-04-12 Eric Botcazou <ebotcazou@adacore.com>
* fold-const.c (build_range_check): Properly deal with enumeral and
boolean base types.
@@ -1871,7 +2629,7 @@
2009-04-02 Dodji Seketeli <dodji@redhat.com>
PR c++/26693
- * c-decl.c: (clone_underlying_type): Move this ...
+ * c-decl.c (clone_underlying_type): Move this ...
* c-common.c (set_underlying_type): ... here.
Also, make sure the function properly sets TYPE_STUB_DECL() on
the newly created typedef variant type.
diff --git a/gcc/ChangeLog.plugins b/gcc/ChangeLog.plugins
index 952d3c369ec..ee4d073b72e 100644
--- a/gcc/ChangeLog.plugins
+++ b/gcc/ChangeLog.plugins
@@ -1,3 +1,10 @@
+2009-04-20 Rafael Avila de Espindola <espindola@google.com>
+
+ Merge with mainline @146369.
+
+ * configure.ac (ACX_PKGVERSION): Update.
+ * configure: Regenerate.
+
2009-04-16 Rafael Avila de Espindola <espindola@google.com>
* toplev.c (compile_file): Remove call to initialize_plugins.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index bcd21404ce6..599fa05002a 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20090415
+20090420
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 3b748d4fd23..f4f6764aff8 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -403,6 +403,9 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
xmake_file=@xmake_file@
tmake_file=@tmake_file@
+TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
+TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
+TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
out_file=$(srcdir)/config/@out_file@
out_object_file=@out_object_file@
md_file=$(srcdir)/config/@md_file@
@@ -780,7 +783,7 @@ BUGURL_TEXI := @REPORT_BUGS_TEXI@
ifdef REVISION_c
REVISION_s := "\"$(if $(DEVPHASE_c), $(REVISION_c))\""
else
-REVISION_s :=
+REVISION_s := "\"\""
endif
# Shorthand variables for dependency lists.
@@ -829,8 +832,8 @@ CFGLOOP_H = cfgloop.h $(BASIC_BLOCK_H) $(RTL_H) vecprim.h double-int.h
IPA_UTILS_H = ipa-utils.h $(TREE_H) $(CGRAPH_H)
IPA_REFERENCE_H = ipa-reference.h $(BITMAP_H) $(TREE_H)
IPA_TYPE_ESCAPE_H = ipa-type-escape.h $(TREE_H)
-CGRAPH_H = cgraph.h $(TREE_H) $(BASIC_BLOCK_H)
-DF_H = df.h $(BITMAP_H) $(BASIC_BLOCK_H) alloc-pool.h
+CGRAPH_H = cgraph.h $(TREE_H) $(BASIC_BLOCK_H) cif-code.def
+DF_H = df.h $(BITMAP_H) $(BASIC_BLOCK_H) alloc-pool.h $(TIMEVAR_H)
RESOURCE_H = resource.h hard-reg-set.h $(DF_H)
DDG_H = ddg.h sbitmap.h $(DF_H)
GCC_H = gcc.h version.h
@@ -854,7 +857,8 @@ MKDEPS_H = $(srcdir)/../libcpp/include/mkdeps.h
SYMTAB_H = $(srcdir)/../libcpp/include/symtab.h $(OBSTACK_H)
CPP_ID_DATA_H = $(CPPLIB_H) $(srcdir)/../libcpp/include/cpp-id-data.h
CPP_INTERNAL_H = $(srcdir)/../libcpp/internal.h $(CPP_ID_DATA_H)
-TREE_DUMP_H = tree-dump.h $(SPLAY_TREE_H) tree-pass.h
+TREE_PASS_H = tree-pass.h $(TIMEVAR_H)
+TREE_DUMP_H = tree-dump.h $(SPLAY_TREE_H) $(TREE_PASS_H)
TREE_FLOW_H = tree-flow.h tree-flow-inline.h tree-ssa-operands.h \
$(BITMAP_H) $(BASIC_BLOCK_H) hard-reg-set.h $(GIMPLE_H) \
$(HASHTAB_H) $(CGRAPH_H) $(IPA_REFERENCE_H) \
@@ -1153,6 +1157,7 @@ OBJS-common = \
params.o \
passes.o \
plugin.o \
+ plugin-version.o \
pointer-set.o \
postreload-gcse.o \
postreload.o \
@@ -2002,7 +2007,7 @@ gcc-options.o: options.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) opts.h intl
dumpvers: dumpvers.c
-ifdef REVISION_s
+ifdef REVISION_c
version.o: version.c version.h $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE)
else
version.o: version.c version.h $(DATESTAMP) $(BASEVER) $(DEVPHASE)
@@ -2059,13 +2064,13 @@ tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(OBSTACK_H) pointer-set.h fixed-value.h
tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TOPLEV_H) $(SPLAY_TREE_H) $(TREE_DUMP_H) \
- tree-iterator.h tree-pass.h $(DIAGNOSTIC_H) $(REAL_H) fixed-value.h
+ tree-iterator.h $(TREE_PASS_H) $(DIAGNOSTIC_H) $(REAL_H) fixed-value.h
tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(RTL_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) $(INPUT_H) insn-config.h \
$(VARRAY_H) $(HASHTAB_H) $(TOPLEV_H) langhooks.h $(TREE_INLINE_H) $(CGRAPH_H) \
intl.h $(FUNCTION_H) $(GGC_H) $(GIMPLE_H) \
debug.h $(DIAGNOSTIC_H) $(EXCEPT_H) $(TREE_FLOW_H) tree-iterator.h tree-mudflap.h \
- $(IPA_PROP_H) value-prof.h tree-pass.h $(TARGET_H) $(INTEGRATE_H)
+ $(IPA_PROP_H) value-prof.h $(TREE_PASS_H) $(TARGET_H) $(INTEGRATE_H)
print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(GGC_H) langhooks.h $(REAL_H) tree-iterator.h fixed-value.h \
$(DIAGNOSTIC_H) $(TREE_FLOW_H)
@@ -2077,19 +2082,19 @@ tree-ssa-structalias.o: tree-ssa-structalias.c \
$(SYSTEM_H) $(CONFIG_H) coretypes.h $(TM_H) $(GGC_H) $(OBSTACK_H) $(BITMAP_H) \
$(FLAGS_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) output.h \
$(DIAGNOSTIC_H) $(TREE_H) $(C_COMMON_H) $(TREE_FLOW_H) $(TREE_INLINE_H) varray.h \
- $(C_TREE_H) $(GIMPLE_H) $(HASHTAB_H) $(FUNCTION_H) $(CGRAPH_H) tree-pass.h \
- $(TIMEVAR_H) alloc-pool.h $(SPLAY_TREE_H) $(PARAMS_H) gt-tree-ssa-structalias.h \
- $(CGRAPH_H) $(ALIAS_H) pointer-set.h
+ $(C_TREE_H) $(GIMPLE_H) $(HASHTAB_H) $(FUNCTION_H) $(CGRAPH_H) \
+ $(TREE_PASS_H) $(TIMEVAR_H) alloc-pool.h $(SPLAY_TREE_H) $(PARAMS_H) \
+ gt-tree-ssa-structalias.h $(CGRAPH_H) $(ALIAS_H) pointer-set.h
tree-ssa.o : tree-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h $(DIAGNOSTIC_H) \
$(TOPLEV_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) langhooks.h tree-pass.h $(BASIC_BLOCK_H) $(BITMAP_H) \
+ $(TREE_DUMP_H) langhooks.h $(TREE_PASS_H) $(BASIC_BLOCK_H) $(BITMAP_H) \
$(FLAGS_H) $(GGC_H) hard-reg-set.h $(HASHTAB_H) pointer-set.h \
$(GIMPLE_H) $(TREE_INLINE_H) $(VARRAY_H)
tree-into-ssa.o : tree-into-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h $(DIAGNOSTIC_H) \
$(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- langhooks.h domwalk.h tree-pass.h $(GGC_H) $(PARAMS_H) $(BASIC_BLOCK_H) \
+ langhooks.h domwalk.h $(TREE_PASS_H) $(GGC_H) $(PARAMS_H) $(BASIC_BLOCK_H) \
$(BITMAP_H) $(CFGLOOP_H) $(FLAGS_H) hard-reg-set.h $(HASHTAB_H) \
$(GIMPLE_H) $(TREE_INLINE_H) $(VARRAY_H) vecprim.h
tree-ssa-ter.o : tree-ssa-ter.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
@@ -2100,60 +2105,62 @@ tree-ssa-coalesce.o : tree-ssa-coalesce.c $(TREE_FLOW_H) $(CONFIG_H) \
$(TREE_SSA_LIVE_H) $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) $(TOPLEV_H)
tree-outof-ssa.o : tree-outof-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- tree-pass.h $(TREE_SSA_LIVE_H) $(BASIC_BLOCK_H) $(BITMAP_H) $(GGC_H) $(TOPLEV_H)
+ $(TREE_PASS_H) $(TREE_SSA_LIVE_H) $(BASIC_BLOCK_H) $(BITMAP_H) $(GGC_H) \
+ $(TOPLEV_H)
tree-ssa-dse.o : tree-ssa-dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) domwalk.h $(FLAGS_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) domwalk.h $(FLAGS_H) \
$(DIAGNOSTIC_H) $(TIMEVAR_H) langhooks.h
tree-ssa-forwprop.o : tree-ssa-forwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
langhooks.h $(FLAGS_H) $(GIMPLE_H)
tree-ssa-phiprop.o : tree-ssa-phiprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
langhooks.h $(FLAGS_H)
tree-ssa-ifcombine.o : tree-ssa-ifcombine.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H)
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H)
tree-ssa-phiopt.o : tree-ssa-phiopt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(TM_P_H) $(BASIC_BLOCK_H) \
- $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) langhooks.h $(FLAGS_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) langhooks.h $(FLAGS_H) \
$(DIAGNOSTIC_H) $(TIMEVAR_H) pointer-set.h domwalk.h
tree-nrv.o : tree-nrv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(RTL_H) $(FUNCTION_H) $(BASIC_BLOCK_H) $(EXPR_H) \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TREE_DUMP_H) tree-pass.h \
+ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TREE_DUMP_H) $(TREE_PASS_H) \
langhooks.h
tree-ssa-copy.o : tree-ssa-copy.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h $(DIAGNOSTIC_H) \
$(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(BASIC_BLOCK_H) tree-pass.h langhooks.h tree-ssa-propagate.h $(FLAGS_H) \
- $(CFGLOOP_H)
+ $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h tree-ssa-propagate.h \
+ $(FLAGS_H) $(CFGLOOP_H)
tree-ssa-propagate.o : tree-ssa-propagate.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(BASIC_BLOCK_H) tree-pass.h langhooks.h \
+ $(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h \
tree-ssa-propagate.h vec.h value-prof.h gt-tree-ssa-propagate.h $(FLAGS_H) \
$(VARRAY_H) $(GIMPLE_H)
tree-ssa-dom.o : tree-ssa-dom.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h $(DIAGNOSTIC_H) \
$(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(BASIC_BLOCK_H) domwalk.h tree-pass.h $(FLAGS_H) langhooks.h \
+ $(BASIC_BLOCK_H) domwalk.h $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
tree-ssa-propagate.h $(CFGLOOP_H) $(PARAMS_H) $(REAL_H)
tree-ssa-uncprop.o : tree-ssa-uncprop.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(BASIC_BLOCK_H) domwalk.h tree-pass.h $(FLAGS_H) \
+ $(TREE_DUMP_H) $(BASIC_BLOCK_H) domwalk.h $(TREE_PASS_H) $(FLAGS_H) \
langhooks.h tree-ssa-propagate.h $(REAL_H)
tree-ssa-threadedge.o : tree-ssa-threadedge.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(FLAGS_H) $(RTL_H) $(TM_P_H) $(GGC_H) \
$(BASIC_BLOCK_H) $(CFGLOOP_H) output.h $(EXPR_H) \
$(FUNCTION_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TREE_DUMP_H) $(TREE_FLOW_H) \
- domwalk.h $(REAL_H) tree-pass.h tree-ssa-propagate.h langhooks.h $(PARAMS_H)
+ domwalk.h $(REAL_H) $(TREE_PASS_H) tree-ssa-propagate.h langhooks.h \
+ $(PARAMS_H)
tree-ssa-threadupdate.o : tree-ssa-threadupdate.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(BASIC_BLOCK_H) $(FLAGS_H) tree-pass.h $(CFGLOOP_H)
+ $(BASIC_BLOCK_H) $(FLAGS_H) $(TREE_PASS_H) $(CFGLOOP_H)
tree-ssanames.o : tree-ssanames.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(VARRAY_H) $(GGC_H) $(TREE_FLOW_H)
tree-phinodes.o : tree-phinodes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
@@ -2165,45 +2172,45 @@ tree-ssa-live.o : tree-ssa-live.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(TREE_SSA_LIVE_H) $(BITMAP_H) $(TOPLEV_H) debug.h $(FLAGS_H)
tree-ssa-copyrename.o : tree-ssa-copyrename.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) tree-pass.h \
- $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_SSA_LIVE_H) $(BASIC_BLOCK_H) \
- $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) langhooks.h $(GIMPLE_H) \
- $(TREE_INLINE_H) $(GIMPLE_H)
+ $(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) \
+ $(TREE_PASS_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_SSA_LIVE_H) \
+ $(BASIC_BLOCK_H) $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) langhooks.h \
+ $(GIMPLE_H) $(TREE_INLINE_H) $(GIMPLE_H)
tree-ssa-pre.o : tree-ssa-pre.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \
- $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) langhooks.h $(CFGLOOP_H) \
- alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) $(GIMPLE_H) \
- $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \
+ $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
+ $(CFGLOOP_H) alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) \
+ $(GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \
$(DBGCNT_H)
tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \
- $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \
+ $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(CFGLOOP_H) \
alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) langhooks.h $(HASHTAB_H) $(GIMPLE_H) \
$(TREE_INLINE_H) tree-iterator.h tree-ssa-propagate.h tree-ssa-sccvn.h \
$(PARAMS_H)
tree-vrp.o : tree-vrp.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- $(TREE_FLOW_H) tree-pass.h $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(GGC_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(GGC_H) \
$(BASIC_BLOCK_H) tree-ssa-propagate.h $(FLAGS_H) $(TREE_DUMP_H) \
$(CFGLOOP_H) tree-chrec.h $(TIMEVAR_H) $(TOPLEV_H) intl.h
tree-cfg.o : tree-cfg.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) $(FLAGS_H) output.h \
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(CFGLOOP_H) tree-pass.h \
+ $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \
$(CFGLAYOUT_H) $(BASIC_BLOCK_H) hard-reg-set.h $(TOPLEV_H) \
value-prof.h tree-ssa-propagate.h $(TREE_INLINE_H)
tree-cfgcleanup.o : tree-cfgcleanup.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) $(FLAGS_H) output.h \
$(DIAGNOSTIC_H) $(TOPLEV_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(CFGLOOP_H) tree-pass.h \
+ $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \
$(CFGLAYOUT_H) $(BASIC_BLOCK_H) hard-reg-set.h $(HASHTAB_H) $(TOPLEV_H) \
tree-ssa-propagate.h tree-scalar-evolution.h
tree-tailcall.o : tree-tailcall.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(FUNCTION_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(EXCEPT_H) tree-pass.h $(FLAGS_H) langhooks.h \
+ $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(EXCEPT_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
$(BASIC_BLOCK_H) hard-reg-set.h $(DBGCNT_H)
tree-ssa-sink.o : tree-ssa-sink.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
- $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) alloc-pool.h \
+ $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) alloc-pool.h \
$(BASIC_BLOCK_H) $(BITMAP_H) $(CFGLOOP_H) $(FIBHEAP_H) $(HASHTAB_H) \
langhooks.h $(REAL_H) $(GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h
tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \
@@ -2213,7 +2220,7 @@ tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \
tree-if-conv.o: tree-if-conv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(FLAGS_H) $(TIMEVAR_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) \
$(CFGLOOP_H) $(RTL_H) $(C_COMMON_H) tree-chrec.h $(TREE_DATA_REF_H) \
- $(SCEV_H) tree-pass.h $(DIAGNOSTIC_H) $(TARGET_H) $(TREE_DUMP_H) \
+ $(SCEV_H) $(TREE_PASS_H) $(DIAGNOSTIC_H) $(TARGET_H) $(TREE_DUMP_H) \
$(VARRAY_H)
tree-iterator.o : tree-iterator.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
coretypes.h $(GGC_H) tree-iterator.h $(GIMPLE_H) gt-tree-iterator.h
@@ -2221,59 +2228,59 @@ tree-dfa.o : tree-dfa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h $(DIAGNOSTIC_H) \
$(TREE_INLINE_H) $(HASHTAB_H) pointer-set.h $(FLAGS_H) $(FUNCTION_H) \
$(TIMEVAR_H) convert.h $(TM_H) coretypes.h langhooks.h $(TREE_DUMP_H) \
- tree-pass.h $(PARAMS_H) $(CGRAPH_H) $(BASIC_BLOCK_H) hard-reg-set.h \
+ $(TREE_PASS_H) $(PARAMS_H) $(CGRAPH_H) $(BASIC_BLOCK_H) hard-reg-set.h \
$(GIMPLE_H)
tree-ssa-operands.o : tree-ssa-operands.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
- $(FLAGS_H) $(FUNCTION_H) $(TM_H) $(TIMEVAR_H) tree-pass.h $(TOPLEV_H) \
+ $(FLAGS_H) $(FUNCTION_H) $(TM_H) $(TIMEVAR_H) $(TREE_PASS_H) $(TOPLEV_H) \
coretypes.h langhooks.h $(IPA_REFERENCE_H)
tree-eh.o : tree-eh.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_H) $(FLAGS_H) $(FUNCTION_H) $(EXCEPT_H) langhooks.h \
- $(GGC_H) tree-pass.h coretypes.h $(TIMEVAR_H) $(TM_P_H) pointer-set.h \
+ $(GGC_H) $(TREE_PASS_H) coretypes.h $(TIMEVAR_H) $(TM_P_H) pointer-set.h \
$(TREE_DUMP_H) $(TREE_INLINE_H) tree-iterator.h $(TOPLEV_H)
tree-ssa-loop.o : tree-ssa-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) output.h \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) tree-pass.h $(TIMEVAR_H) \
+ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TREE_PASS_H) $(TIMEVAR_H) \
$(CFGLOOP_H) $(FLAGS_H) $(TREE_INLINE_H) tree-scalar-evolution.h
tree-ssa-loop-unswitch.o : tree-ssa-loop-unswitch.c $(TREE_FLOW_H) \
$(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) \
domwalk.h $(PARAMS_H) output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \
- coretypes.h $(TREE_DUMP_H) tree-pass.h $(BASIC_BLOCK_H) hard-reg-set.h \
+ coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(BASIC_BLOCK_H) hard-reg-set.h \
$(TREE_INLINE_H)
tree-ssa-address.o : tree-ssa-address.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) \
output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- tree-pass.h $(FLAGS_H) $(TREE_INLINE_H) $(RECOG_H) insn-config.h $(EXPR_H) \
- gt-tree-ssa-address.h $(GGC_H) tree-affine.h
+ $(TREE_PASS_H) $(FLAGS_H) $(TREE_INLINE_H) $(RECOG_H) insn-config.h \
+ $(EXPR_H) gt-tree-ssa-address.h $(GGC_H) tree-affine.h
tree-ssa-loop-niter.o : tree-ssa-loop-niter.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \
$(TREE_INLINE_H) output.h $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(TOPLEV_H) $(FLAGS_H) tree-pass.h $(SCEV_H) $(TREE_DATA_REF_H) $(BASIC_BLOCK_H) \
- $(GGC_H) hard-reg-set.h tree-chrec.h intl.h
+ $(TOPLEV_H) $(FLAGS_H) $(TREE_PASS_H) $(SCEV_H) $(TREE_DATA_REF_H) \
+ $(BASIC_BLOCK_H) $(GGC_H) hard-reg-set.h tree-chrec.h intl.h
tree-ssa-loop-ivcanon.o : tree-ssa-loop-ivcanon.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \
$(TREE_INLINE_H) output.h $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(FLAGS_H) tree-pass.h $(SCEV_H) $(BASIC_BLOCK_H) $(GGC_H) hard-reg-set.h \
- tree-chrec.h
+ $(FLAGS_H) $(TREE_PASS_H) $(SCEV_H) $(BASIC_BLOCK_H) $(GGC_H) \
+ hard-reg-set.h tree-chrec.h
tree-ssa-loop-ch.o : tree-ssa-loop-ch.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(TREE_INLINE_H) \
output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- tree-pass.h $(FLAGS_H) $(BASIC_BLOCK_H) hard-reg-set.h
+ $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) hard-reg-set.h
tree-ssa-loop-prefetch.o: tree-ssa-loop-prefetch.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(EXPR_H) \
output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- tree-pass.h $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \
+ $(TREE_PASS_H) $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \
$(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) hard-reg-set.h \
tree-chrec.h $(TOPLEV_H) langhooks.h $(TREE_INLINE_H) $(TREE_DATA_REF_H) \
$(OPTABS_H)
tree-predcom.o: tree-predcom.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
$(CFGLOOP_H) $(TREE_FLOW_H) $(GGC_H) $(TREE_DATA_REF_H) $(SCEV_H) \
- $(PARAMS_H) $(DIAGNOSTIC_H) tree-pass.h $(TM_H) coretypes.h tree-affine.h \
- $(TREE_INLINE_H)
+ $(PARAMS_H) $(DIAGNOSTIC_H) $(TREE_PASS_H) $(TM_H) coretypes.h \
+ tree-affine.h $(TREE_INLINE_H)
tree-ssa-loop-ivopts.o : tree-ssa-loop-ivopts.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(EXPR_H) \
output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- tree-pass.h $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \
+ $(TREE_PASS_H) $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \
$(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) hard-reg-set.h \
tree-chrec.h $(VARRAY_H) tree-affine.h pointer-set.h $(TARGET_H)
tree-affine.o : tree-affine.c tree-affine.h $(CONFIG_H) pointer-set.h \
@@ -2282,33 +2289,33 @@ tree-affine.o : tree-affine.c tree-affine.h $(CONFIG_H) pointer-set.h \
tree-ssa-loop-manip.o : tree-ssa-loop-manip.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h \
$(BASIC_BLOCK_H) output.h $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
- $(TIMEVAR_H) $(CFGLOOP_H) tree-pass.h $(CFGLAYOUT_H) tree-scalar-evolution.h \
- $(PARAMS_H) $(TREE_INLINE_H)
+ $(TIMEVAR_H) $(CFGLOOP_H) $(TREE_PASS_H) $(CFGLAYOUT_H) \
+ tree-scalar-evolution.h $(PARAMS_H) $(TREE_INLINE_H)
tree-ssa-loop-im.o : tree-ssa-loop-im.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) domwalk.h \
$(PARAMS_H) output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(REAL_H) $(BASIC_BLOCK_H) \
+ $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(REAL_H) $(BASIC_BLOCK_H) \
hard-reg-set.h pointer-set.h tree-affine.h tree-ssa-propagate.h
tree-ssa-math-opts.o : tree-ssa-math-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(FLAGS_H) $(TREE_H) $(TREE_FLOW_H) $(REAL_H) $(TIMEVAR_H) tree-pass.h \
- alloc-pool.h $(BASIC_BLOCK_H) $(TARGET_H)
+ $(TM_H) $(FLAGS_H) $(TREE_H) $(TREE_FLOW_H) $(REAL_H) $(TIMEVAR_H) \
+ $(TREE_PASS_H) alloc-pool.h $(BASIC_BLOCK_H) $(TARGET_H)
tree-ssa-alias.o : tree-ssa-alias.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) $(TREE_INLINE_H) $(FLAGS_H) \
$(FUNCTION_H) $(TIMEVAR_H) convert.h $(TM_H) coretypes.h langhooks.h \
- $(TREE_DUMP_H) tree-pass.h $(PARAMS_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
+ $(TREE_DUMP_H) $(TREE_PASS_H) $(PARAMS_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
hard-reg-set.h $(GIMPLE_H) vec.h \
$(IPA_TYPE_ESCAPE_H) vecprim.h pointer-set.h alloc-pool.h
tree-ssa-reassoc.o : tree-ssa-reassoc.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
- $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) tree-iterator.h\
- $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_INLINE_H) vec.h langhooks.h \
- alloc-pool.h pointer-set.h $(CFGLOOP_H)
+ $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) \
+ tree-iterator.h $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_INLINE_H) vec.h \
+ langhooks.h alloc-pool.h pointer-set.h $(CFGLOOP_H)
tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) hard-reg-set.h $(EXPR_H) $(GGC_H) output.h \
$(DIAGNOSTIC_H) $(BASIC_BLOCK_H) $(FLAGS_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
$(TREE_DUMP_H) $(TOPLEV_H) $(FUNCTION_H) langhooks.h $(FLAGS_H) $(CGRAPH_H) \
- $(TREE_INLINE_H) tree-mudflap.h $(GGC_H) graph.h $(CGRAPH_H) tree-pass.h \
- $(CFGLOOP_H) $(EXCEPT_H)
+ $(TREE_INLINE_H) tree-mudflap.h $(GGC_H) graph.h $(CGRAPH_H) \
+ $(TREE_PASS_H) $(CFGLOOP_H) $(EXCEPT_H)
c-gimplify.o : c-gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(C_TREE_H) $(C_COMMON_H) $(DIAGNOSTIC_H) $(GIMPLE_H) $(VARRAY_H) \
@@ -2326,35 +2333,36 @@ gimple-iterator.o : gimple-iterator.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
gimple-low.o : gimple-low.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(DIAGNOSTIC_H) $(GIMPLE_H) $(TREE_INLINE_H) $(VARRAY_H) langhooks.h \
$(LANGHOOKS_DEF_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(EXCEPT_H) $(FLAGS_H) $(RTL_H) $(FUNCTION_H) $(EXPR_H) tree-pass.h \
+ $(EXCEPT_H) $(FLAGS_H) $(RTL_H) $(FUNCTION_H) $(EXPR_H) $(TREE_PASS_H) \
$(HASHTAB_H) $(TOPLEV.H) tree-iterator.h
omp-low.o : omp-low.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(RTL_H) $(GIMPLE_H) $(TREE_INLINE_H) langhooks.h $(DIAGNOSTIC_H) \
- $(TREE_FLOW_H) $(TIMEVAR_H) $(FLAGS_H) $(EXPR_H) $(TOPLEV_H) tree-pass.h \
- $(GGC_H) $(EXCEPT_H) $(SPLAY_TREE_H) $(OPTABS_H) $(CFGLOOP_H) \
- tree-iterator.h
+ $(TREE_FLOW_H) $(TIMEVAR_H) $(FLAGS_H) $(EXPR_H) $(TOPLEV_H) \
+ $(TREE_PASS_H) $(GGC_H) $(EXCEPT_H) $(SPLAY_TREE_H) $(OPTABS_H) \
+ $(CFGLOOP_H) tree-iterator.h
tree-browser.o : tree-browser.c tree-browser.def $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TREE_INLINE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) \
$(TM_H) coretypes.h
omega.o : omega.c omega.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- errors.h $(GGC_H) $(TREE_H) $(DIAGNOSTIC_H) varray.h tree-pass.h $(PARAMS_H)
+ errors.h $(GGC_H) $(TREE_H) $(DIAGNOSTIC_H) varray.h $(TREE_PASS_H) \
+ $(PARAMS_H)
tree-chrec.o: tree-chrec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(GGC_H) $(TREE_H) $(REAL_H) $(SCEV_H) tree-pass.h $(PARAMS_H) \
+ $(GGC_H) $(TREE_H) $(REAL_H) $(SCEV_H) $(TREE_PASS_H) $(PARAMS_H) \
$(DIAGNOSTIC_H) $(CFGLOOP_H) $(TREE_FLOW_H)
tree-scalar-evolution.o: tree-scalar-evolution.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(REAL_H) $(RTL_H) \
$(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
- $(TIMEVAR_H) $(CFGLOOP_H) $(SCEV_H) tree-pass.h $(FLAGS_H) tree-chrec.h \
+ $(TIMEVAR_H) $(CFGLOOP_H) $(SCEV_H) $(TREE_PASS_H) $(FLAGS_H) tree-chrec.h \
gt-tree-scalar-evolution.h
tree-data-ref.o: tree-data-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(GGC_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
$(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \
- $(TREE_DATA_REF_H) $(SCEV_H) tree-pass.h tree-chrec.h langhooks.h
+ $(TREE_DATA_REF_H) $(SCEV_H) $(TREE_PASS_H) tree-chrec.h langhooks.h
graphite.o: graphite.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(GGC_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TOPLEV_H) \
$(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) $(GIMPLE_H) domwalk.h \
- $(TREE_DATA_REF_H) $(SCEV_H) tree-pass.h tree-chrec.h graphite.h pointer-set.h \
- value-prof.h
+ $(TREE_DATA_REF_H) $(SCEV_H) $(TREE_PASS_H) tree-chrec.h graphite.h \
+ pointer-set.h value-prof.h
tree-vect-loop.o: tree-vect-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) \
$(TREE_DUMP_H) $(CFGLOOP_H) $(EXPR_H) $(RECOG_H) $(OPTABS_H) $(TOPLEV_H) \
@@ -2381,46 +2389,46 @@ tree-vect-data-refs.o: tree-vect-data-refs.c $(CONFIG_H) $(SYSTEM_H) \
$(EXPR_H) $(OPTABS_H) tree-chrec.h $(SCEV_H) tree-vectorizer.h $(TOPLEV_H)
tree-vectorizer.o: tree-vectorizer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
- $(CFGLOOP_H) tree-pass.h tree-vectorizer.h $(TIMEVAR_H)
+ $(CFGLOOP_H) $(TREE_PASS_H) tree-vectorizer.h $(TIMEVAR_H)
tree-loop-linear.o: tree-loop-linear.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \
- tree-pass.h $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) $(LAMBDA_H) \
+ $(TREE_PASS_H) $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) $(LAMBDA_H) \
$(TARGET_H) tree-chrec.h $(OBSTACK_H)
tree-loop-distribution.o: tree-loop-distribution.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \
- tree-pass.h $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) \
- $(TARGET_H) tree-chrec.h langhooks.h tree-vectorizer.h
+ $(TREE_PASS_H) $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) \
+ $(TARGET_H) tree-chrec.h langhooks.h $(TREE_VECTORIZER_H)
tree-parloops.o: tree-parloops.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_FLOW_H) $(TREE_H) $(RTL_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(GGC_H) \
- $(DIAGNOSTIC_H) tree-pass.h $(SCEV_H) langhooks.h gt-tree-parloops.h \
- tree-vectorizer.h
+ $(DIAGNOSTIC_H) $(TREE_PASS_H) $(SCEV_H) langhooks.h gt-tree-parloops.h \
+ $(TREE_VECTORIZER_H)
tree-stdarg.o: tree-stdarg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) $(FUNCTION_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) tree-pass.h \
+ $(TREE_H) $(FUNCTION_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_PASS_H) \
tree-stdarg.h $(TARGET_H) langhooks.h
tree-object-size.o: tree-object-size.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(TREE_H) $(TOPLEV_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) tree-pass.h \
- tree-ssa-propagate.h
+ $(TM_H) $(TREE_H) $(TOPLEV_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) \
+ $(TREE_PASS_H) tree-ssa-propagate.h
gimple.o : gimple.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
$(GGC_H) $(GIMPLE_H) $(GIMPLE_H) $(DIAGNOSTIC_H) gt-gimple.h \
$(TREE_FLOW_H) value-prof.h $(FLAGS_H)
gimple-pretty-print.o : gimple-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(REAL_H) $(HASHTAB_H) $(TREE_FLOW_H) \
- $(TM_H) coretypes.h tree-pass.h $(GIMPLE_H) value-prof.h
+ $(TM_H) coretypes.h $(TREE_PASS_H) $(GIMPLE_H) value-prof.h
tree-mudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \
$(GIMPLE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) langhooks.h tree-mudflap.h \
- $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(CGRAPH_H) $(GGC_H) \
+ $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(CGRAPH_H) $(GGC_H) \
gt-tree-mudflap.h $(BASIC_BLOCK_H) $(FLAGS_H) $(FUNCTION_H) hard-reg-set.h \
$(RTL_H) $(TM_P_H) $(TREE_FLOW_H) $(TOPLEV.H) $(GIMPLE_H) tree-iterator.h
tree-nomudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \
$(C_TREE_H) $(C_COMMON_H) $(GIMPLE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) \
output.h $(VARRAY_H) langhooks.h tree-mudflap.h $(TM_H) coretypes.h \
- $(GGC_H) gt-tree-mudflap.h tree-pass.h $(TOPLEV_H)
+ $(GGC_H) gt-tree-mudflap.h $(TREE_PASS_H) $(TOPLEV_H)
tree-pretty-print.o : tree-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(REAL_H) $(HASHTAB_H) $(TREE_FLOW_H) \
- $(TM_H) coretypes.h tree-iterator.h tree-chrec.h langhooks.h tree-pass.h \
- value-prof.h fixed-value.h output.h
+ $(TM_H) coretypes.h tree-iterator.h tree-chrec.h langhooks.h \
+ $(TREE_PASS_H) value-prof.h fixed-value.h output.h
fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(FLAGS_H) $(REAL_H) $(TOPLEV_H) $(HASHTAB_H) $(EXPR_H) $(RTL_H) \
$(GGC_H) $(TM_P_H) langhooks.h $(MD5_H) intl.h fixed-value.h $(TARGET_H) \
@@ -2432,7 +2440,8 @@ diagnostic.o : diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
opts.o : opts.c opts.h options.h $(TOPLEV_H) $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_H) $(TM_H) langhooks.h $(GGC_H) $(EXPR_H) $(RTL_H) \
output.h $(DIAGNOSTIC_H) $(TM_P_H) $(INSN_ATTR_H) intl.h $(TARGET_H) \
- $(FLAGS_H) $(PARAMS_H) tree-pass.h $(DBGCNT_H) debug.h varray.h $(PLUGIN_H)
+ $(FLAGS_H) $(PARAMS_H) $(TREE_PASS_H) $(DBGCNT_H) debug.h varray.h \
+ $(PLUGIN_H)
opts-common.o : opts-common.c opts.h $(CONFIG_H) $(SYSTEM_H) \
coretypes.h intl.h
targhooks.o : targhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
@@ -2448,7 +2457,7 @@ toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
value-prof.h $(PARAMS_H) $(TM_P_H) reload.h ira.h dwarf2asm.h $(TARGET_H) \
langhooks.h insn-flags.h $(CFGLAYOUT_H) $(CFGLOOP_H) hosthooks.h \
$(CGRAPH_H) $(COVERAGE_H) alloc-pool.h $(GGC_H) $(INTEGRATE_H) \
- opts.h params.def tree-mudflap.h $(REAL_H) tree-pass.h $(GIMPLE_H) \
+ opts.h params.def tree-mudflap.h $(REAL_H) $(TREE_PASS_H) $(GIMPLE_H) \
tree-ssa-alias.h $(PLUGIN_H)
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \
-DTARGET_NAME=\"$(target_noncanonical)\" \
@@ -2461,12 +2470,18 @@ passes.o : passes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
graph.h $(EXCEPT_H) $(REGS_H) $(TIMEVAR_H) value-prof.h \
$(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \
langhooks.h insn-flags.h $(CFGLAYOUT_H) $(REAL_H) $(CFGLOOP_H) \
- hosthooks.h $(CGRAPH_H) $(COVERAGE_H) tree-pass.h $(TREE_DUMP_H) \
+ hosthooks.h $(CGRAPH_H) $(COVERAGE_H) $(TREE_PASS_H) $(TREE_DUMP_H) \
$(GGC_H) $(INTEGRATE_H) $(CPPLIB_H) opts.h $(TREE_FLOW_H) $(TREE_INLINE_H) \
gt-passes.h $(DF_H) $(PREDICT_H)
plugin.o : plugin.c $(PLUGIN_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- errors.h $(TOPLEV_H) $(TREE_H) tree-pass.h intl.h
+ errors.h $(TOPLEV_H) $(TREE_H) $(TREE_PASS_H) intl.h
+
+plugin-version.o : plugin-version.c $(SYSTEM_H) gcc-plugin.h configargs.h
+ $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \
+ -DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \
+ -DREVISION=$(REVISION_s) -DDEVPHASE=$(DEVPHASE_s) -c \
+ -DPLUGIN $(srcdir)/plugin-version.c $(OUTPUT_OPTION)
main.o : main.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TOPLEV_H)
@@ -2498,9 +2513,9 @@ function.o : function.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(OPTABS_H) libfuncs.h $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \
output.h $(TOPLEV_H) $(EXCEPT_H) $(HASHTAB_H) $(GGC_H) $(TM_P_H) langhooks.h \
gt-function.h $(TARGET_H) $(BASIC_BLOCK_H) $(INTEGRATE_H) $(PREDICT_H) \
- tree-pass.h $(DF_H) $(TIMEVAR_H) vecprim.h
+ $(TREE_PASS_H) $(DF_H) $(TIMEVAR_H) vecprim.h
statistics.o : statistics.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- tree-pass.h $(TREE_DUMP_H) $(HASHTAB_H) statistics.h $(TM_H) $(FUNCTION_H)
+ $(TREE_PASS_H) $(TREE_DUMP_H) $(HASHTAB_H) statistics.h $(TM_H) $(FUNCTION_H)
stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) insn-config.h hard-reg-set.h $(EXPR_H) \
libfuncs.h $(EXCEPT_H) $(RECOG_H) $(TOPLEV_H) output.h $(GGC_H) $(TM_P_H) \
@@ -2511,14 +2526,14 @@ except.o : except.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
langhooks.h insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \
dwarf2asm.h dwarf2out.h $(TOPLEV_H) $(HASHTAB_H) intl.h $(GGC_H) \
gt-$(EXCEPT_H) $(CGRAPH_H) $(INTEGRATE_H) $(DIAGNOSTIC_H) dwarf2.h \
- $(TARGET_H) $(TM_P_H) tree-pass.h $(TIMEVAR_H)
+ $(TARGET_H) $(TM_P_H) $(TREE_PASS_H) $(TIMEVAR_H)
expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) $(EXPR_H) $(OPTABS_H) \
libfuncs.h $(INSN_ATTR_H) insn-config.h $(RECOG_H) output.h \
typeclass.h hard-reg-set.h $(TOPLEV_H) hard-reg-set.h $(EXCEPT_H) reload.h \
$(GGC_H) langhooks.h intl.h $(TM_P_H) $(REAL_H) $(TARGET_H) \
tree-iterator.h gt-expr.h $(MACHMODE_H) $(TIMEVAR_H) $(TREE_FLOW_H) \
- tree-pass.h $(DF_H) $(DIAGNOSTIC_H) vecprim.h
+ $(TREE_PASS_H) $(DF_H) $(DIAGNOSTIC_H) vecprim.h
dojump.o : dojump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
$(FLAGS_H) $(FUNCTION_H) $(EXPR_H) $(OPTABS_H) $(INSN_ATTR_H) insn-config.h \
langhooks.h $(GGC_H) gt-dojump.h vecprim.h $(BASIC_BLOCK_H)
@@ -2569,7 +2584,7 @@ xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) insn-config.h $(RECOG_H) \
$(GGC_H) $(EXPR_H) hard-reg-set.h $(BITMAP_H) $(TOPLEV_H) $(BASIC_BLOCK_H) \
- $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h tree-pass.h gt-emit-rtl.h \
+ $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h $(TREE_PASS_H) gt-emit-rtl.h \
$(REAL_H) $(DF_H)
real.o : real.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(TOPLEV_H) $(TM_P_H) $(REAL_H) dfp.h
@@ -2581,10 +2596,10 @@ integrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) $(FLAGS_H) debug.h $(INTEGRATE_H) insn-config.h \
$(EXPR_H) $(REAL_H) $(REGS_H) intl.h $(FUNCTION_H) output.h $(RECOG_H) \
$(EXCEPT_H) $(TOPLEV_H) $(PARAMS_H) $(TM_P_H) $(TARGET_H) langhooks.h \
- gt-integrate.h $(GGC_H) tree-pass.h $(DF_H)
+ gt-integrate.h $(GGC_H) $(TREE_PASS_H) $(DF_H)
jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) hard-reg-set.h $(REGS_H) insn-config.h $(RECOG_H) $(EXPR_H) \
- $(REAL_H) $(EXCEPT_H) $(FUNCTION_H) tree-pass.h $(DIAGNOSTIC_H) \
+ $(REAL_H) $(EXCEPT_H) $(FUNCTION_H) $(TREE_PASS_H) $(DIAGNOSTIC_H) \
$(TOPLEV_H) $(INSN_ATTR_H) $(TM_P_H) reload.h $(PREDICT_H) \
$(TIMEVAR_H) $(TARGET_H)
simplify-rtx.o : simplify-rtx.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
@@ -2598,68 +2613,69 @@ cgraph.o : cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
cgraphunit.o : cgraphunit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) $(TOPLEV_H) $(FLAGS_H) $(GGC_H) \
$(TARGET_H) $(CGRAPH_H) intl.h pointer-set.h $(FUNCTION_H) $(GIMPLE_H) \
- $(TREE_FLOW_H) tree-pass.h $(C_COMMON_H) debug.h $(DIAGNOSTIC_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(C_COMMON_H) debug.h $(DIAGNOSTIC_H) \
$(FIBHEAP_H) output.h $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) $(IPA_PROP_H) \
- gt-cgraphunit.h tree-iterator.h
+ gt-cgraphunit.h tree-iterator.h $(COVERAGE_H)
cgraphbuild.o : cgraphbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(CGRAPH_H) intl.h pointer-set.h $(GIMPLE_H) \
- $(TREE_FLOW_H) tree-pass.h
+ $(TREE_FLOW_H) $(TREE_PASS_H)
varpool.o : varpool.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(CGRAPH_H) langhooks.h $(DIAGNOSTIC_H) $(HASHTAB_H) \
$(GGC_H) $(TIMEVAR_H) debug.h $(TARGET_H) output.h $(GIMPLE_H) \
$(TREE_FLOW_H) gt-varpool.h
ipa.o : ipa.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(CGRAPH_H) \
- tree-pass.h $(TIMEVAR_H)
+ $(TREE_PASS_H) $(TIMEVAR_H)
ipa-prop.o : ipa-prop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
langhooks.h $(GGC_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(DIAGNOSTIC_H) \
- $(TREE_FLOW_H) $(TM_H) tree-pass.h $(FLAGS_H) $(TREE_H) $(TREE_INLINE_H) \
- $(TIMEVAR_H)
+ $(TREE_FLOW_H) $(TM_H) $(TREE_PASS_H) $(FLAGS_H) $(TREE_H) \
+ $(TREE_INLINE_H) $(TIMEVAR_H)
ipa-cp.o : ipa-cp.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TREE_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(TREE_FLOW_H) tree-pass.h \
- $(FLAGS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H) $(TREE_DUMP_H) $(TREE_INLINE_H)
+ $(TREE_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(TREE_FLOW_H) \
+ $(TREE_PASS_H) $(FLAGS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H) $(TREE_DUMP_H) \
+ $(TREE_INLINE_H)
matrix-reorg.o : matrix-reorg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(RTL_H) $(C_TREE_H) $(TREE_INLINE_H) $(TREE_FLOW_H) \
tree-flow-inline.h langhooks.h $(HASHTAB_H) $(TOPLEV_H) $(FLAGS_H) $(GGC_H) \
debug.h $(TARGET_H) $(CGRAPH_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(PARAMS_H) \
$(FIBHEAP_H) $(C_COMMON_H) intl.h $(FUNCTION_H) $(BASIC_BLOCK_H) $(CFGLOOP_H) \
- tree-iterator.h tree-pass.h opts.h $(TREE_DATA_REF_H) tree-chrec.h \
+ tree-iterator.h $(TREE_PASS_H) opts.h $(TREE_DATA_REF_H) tree-chrec.h \
tree-scalar-evolution.h
ipa-inline.o : ipa-inline.c gt-ipa-inline.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) $(FLAGS_H) $(CGRAPH_H) intl.h \
- $(DIAGNOSTIC_H) $(FIBHEAP_H) $(PARAMS_H) $(TIMEVAR_H) tree-pass.h \
+ $(DIAGNOSTIC_H) $(FIBHEAP_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) \
$(HASHTAB_H) $(COVERAGE_H) $(GGC_H) $(TREE_FLOW_H) $(RTL_H) $(IPA_PROP_H)
ipa-utils.o : ipa-utils.c $(IPA_UTILS_H) $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
pointer-set.h $(GGC_H) $(C_COMMON_H) $(GIMPLE_H) \
- $(CGRAPH_H) output.h $(FLAGS_H) tree-pass.h $(TIMEVAR_H) $(DIAGNOSTIC_H)
+ $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H)
ipa-reference.o : ipa-reference.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
pointer-set.h $(GGC_H) $(IPA_REFERENCE_H) $(IPA_UTILS_H) $(C_COMMON_H) \
- $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) tree-pass.h \
+ $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) \
$(TIMEVAR_H) $(DIAGNOSTIC_H) $(FUNCTION_H)
ipa-pure-const.o : ipa-pure-const.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
pointer-set.h $(GGC_H) $(IPA_UTILS_H) $(C_COMMON_H) $(TARGET_H) \
- $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) tree-pass.h $(TIMEVAR_H) \
+ $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) \
$(DIAGNOSTIC_H)
ipa-type-escape.o : ipa-type-escape.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
pointer-set.h $(GGC_H) $(IPA_TYPE_ESCAPE_H) $(IPA_UTILS_H) $(C_COMMON_H) \
- $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) tree-pass.h \
+ $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) \
$(TIMEVAR_H) $(DIAGNOSTIC_H) $(FUNCTION_H)
ipa-struct-reorg.o: ipa-struct-reorg.c ipa-struct-reorg.h $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(GIMPLE_H) tree-inline.h \
$(TREE_FLOW_H) langhooks.h pointer-set.h $(HASHTAB_H) $(C_TREE_H) $(TOPLEV_H) \
$(FLAGS_H) debug.h $(TARGET_H) $(CGRAPH_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
$(PARAMS_H) $(FIBHEAP_H) intl.h $(FUNCTION_H) $(BASIC_BLOCK_H) tree-iterator.h \
- tree-pass.h opts.h $(IPA_TYPE_ESCAPE_H) $(TREE_DUMP_H) $(C_COMMON_H) \
+ $(TREE_PASS_H) opts.h $(IPA_TYPE_ESCAPE_H) $(TREE_DUMP_H) $(C_COMMON_H) \
$(GIMPLE_H)
coverage.o : coverage.c $(GCOV_IO_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) \
$(FUNCTION_H) $(TOPLEV_H) $(GGC_H) langhooks.h $(COVERAGE_H) gt-coverage.h \
- $(HASHTAB_H) tree-iterator.h $(CGRAPH_H) tree-pass.h gcov-io.c $(TM_P_H)
+ $(HASHTAB_H) tree-iterator.h $(CGRAPH_H) $(TREE_PASS_H) gcov-io.c $(TM_P_H)
cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) $(REAL_H) insn-config.h $(RECOG_H) \
$(EMIT_RTL_H) $(TOPLEV_H) output.h $(FUNCTION_H) cselib.h $(GGC_H) $(TM_P_H) \
@@ -2667,31 +2683,31 @@ cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) $(EXPR_H) $(TOPLEV_H) \
output.h $(FUNCTION_H) $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) \
- $(EXCEPT_H) $(TARGET_H) $(PARAMS_H) rtlhooks-def.h tree-pass.h $(REAL_H) \
- $(DF_H) $(DBGCNT_H)
+ $(EXCEPT_H) $(TARGET_H) $(PARAMS_H) rtlhooks-def.h $(TREE_PASS_H) \
+ $(REAL_H) $(DF_H) $(DBGCNT_H)
dce.o : dce.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) $(DF_H) cselib.h \
- $(DBGCNT_H) dce.h $(TIMEVAR_H) tree-pass.h $(DBGCNT_H) $(TM_P_H)
+ $(DBGCNT_H) dce.h $(TIMEVAR_H) $(TREE_PASS_H) $(DBGCNT_H) $(TM_P_H)
dse.o : dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(TM_P_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
- $(RECOG_H) $(EXPR_H) $(DF_H) cselib.h $(DBGCNT_H) $(TIMEVAR_H) tree-pass.h \
- alloc-pool.h $(ALIAS_H) dse.h $(OPTABS_H) $(TARGET_H)
+ $(RECOG_H) $(EXPR_H) $(DF_H) cselib.h $(DBGCNT_H) $(TIMEVAR_H) \
+ $(TREE_PASS_H) alloc-pool.h $(ALIAS_H) dse.h $(OPTABS_H) $(TARGET_H)
fwprop.o : fwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TOPLEV_H) insn-config.h $(RECOG_H) $(FLAGS_H) $(OBSTACK_H) $(BASIC_BLOCK_H) \
- output.h $(DF_H) alloc-pool.h $(TIMEVAR_H) tree-pass.h $(TARGET_H) $(TM_P_H) \
- $(CFGLOOP_H) $(EMIT_RTL_H)
+ output.h $(DF_H) alloc-pool.h $(TIMEVAR_H) $(TREE_PASS_H) $(TARGET_H) \
+ $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H)
web.o : web.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
- $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h
+ $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H)
see.o : see.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h \
- $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h $(RECOG_H) $(EXPR_H) $(SPLAY_TREE_H) \
- $(HASHTAB_H) $(REGS_H) dce.h
+ $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H) $(RECOG_H) $(EXPR_H) \
+ $(SPLAY_TREE_H) $(HASHTAB_H) $(REGS_H) dce.h
gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) $(REAL_H) insn-config.h $(GGC_H) \
$(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
$(TM_P_H) $(PARAMS_H) $(EXCEPT_H) gt-gcse.h $(TREE_H) cselib.h $(TIMEVAR_H) \
- intl.h $(OBSTACK_H) tree-pass.h $(DF_H) $(DBGCNT_H)
+ intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \
coretypes.h $(TM_H) $(REGS_H) $(FLAGS_H) output.h $(RESOURCE_H) $(DF_H) \
$(FUNCTION_H) $(TOPLEV_H) $(INSN_ATTR_H) $(EXCEPT_H) $(PARAMS_H) $(TM_P_H)
@@ -2701,43 +2717,43 @@ lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
mode-switching.o : mode-switching.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(INSN_ATTR_H) $(RECOG_H) $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) \
- output.h tree-pass.h $(TIMEVAR_H) $(REAL_H) $(DF_H)
+ output.h $(TREE_PASS_H) $(TIMEVAR_H) $(REAL_H) $(DF_H)
tree-ssa-dce.o : tree-ssa-dce.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(RTL_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \
- coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(BASIC_BLOCK_H) \
+ coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
$(GGC_H) hard-reg-set.h $(OBSTACK_H) $(GIMPLE_H) $(CFGLOOP_H) \
tree-scalar-evolution.h
tree-call-cdce.o : tree-call-cdce.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(RTL_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \
- coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(BASIC_BLOCK_H) \
+ coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
$(GGC_H) hard-reg-set.h $(OBSTACK_H) $(GIMPLE_H)
tree-ssa-ccp.o : tree-ssa-ccp.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(BASIC_BLOCK_H) tree-pass.h langhooks.h \
+ $(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h \
tree-ssa-propagate.h value-prof.h $(FLAGS_H) $(TARGET_H) $(TOPLEV_H)
tree-sra.o : tree-sra.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \
$(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
$(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \
- langhooks.h tree-pass.h $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) \
+ langhooks.h $(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) \
$(BITMAP_H) $(GGC_H) hard-reg-set.h $(OBSTACK_H) $(PARAMS_H) $(TARGET_H)
tree-switch-conversion.o : tree-switch-conversion.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
$(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \
- tree-pass.h $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h \
+ $(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h \
$(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H)
tree-complex.o : tree-complex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
$(TM_H) $(RTL_H) $(REAL_H) $(FLAGS_H) $(TREE_FLOW_H) $(GIMPLE_H) \
- tree-iterator.h tree-pass.h tree-ssa-propagate.h $(DIAGNOSTIC_H)
+ tree-iterator.h $(TREE_PASS_H) tree-ssa-propagate.h $(DIAGNOSTIC_H)
tree-vect-generic.o : tree-vect-generic.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
- $(TM_H) $(TREE_FLOW_H) $(GIMPLE_H) tree-iterator.h tree-pass.h \
+ $(TM_H) $(TREE_FLOW_H) $(GIMPLE_H) tree-iterator.h $(TREE_PASS_H) \
$(FLAGS_H) $(OPTABS_H) $(RTL_H) $(MACHMODE_H) $(EXPR_H) \
langhooks.h $(FLAGS_H) $(DIAGNOSTIC_H) gt-tree-vect-generic.h $(GGC_H) \
coretypes.h insn-codes.h
df-core.o : df-core.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \
hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \
- $(TM_P_H) $(FLAGS_H) output.h tree-pass.h $(PARAMS_H)
+ $(TM_P_H) $(FLAGS_H) output.h $(TREE_PASS_H) $(PARAMS_H)
df-problems.o : df-problems.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \
hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \
@@ -2746,7 +2762,7 @@ df-scan.o : df-scan.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \
hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \
$(TM_P_H) $(FLAGS_H) $(TARGET_H) $(TARGET_DEF_H) $(TREE_H) output.h \
- tree-pass.h
+ $(TREE_PASS_H)
df-byte-scan.o : df-byte-scan.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
tm_p.h $(DF_H) output.h $(DBGCNT_H)
regstat.o : regstat.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
@@ -2755,22 +2771,22 @@ regstat.o : regstat.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
var-tracking.o : var-tracking.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h $(FLAGS_H) \
$(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \
- $(REGS_H) $(EXPR_H) $(TIMEVAR_H) tree-pass.h
+ $(REGS_H) $(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H)
profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) $(FUNCTION_H) \
$(TOPLEV_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h cfghooks.h \
- $(CFGLOOP_H) $(TIMEVAR_H) tree-pass.h profile.h
+ $(CFGLOOP_H) $(TIMEVAR_H) $(TREE_PASS_H) profile.h
mcf.o : mcf.c profile.h $(CONFIG_H) $(SYSTEM_H) $(TM_H) coretypes.h \
$(BASIC_BLOCK_H) output.h langhooks.h $(GCOV_IO_H) $(TREE_H)
tree-profile.o : tree-profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) \
$(FUNCTION_H) $(TOPLEV_H) $(COVERAGE_H) $(TREE_H) value-prof.h $(TREE_DUMP_H) \
- tree-pass.h $(TREE_FLOW_H) $(TIMEVAR_H) $(GGC_H) gt-tree-profile.h $(CGRAPH_H)
+ $(TREE_PASS_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(GGC_H) gt-tree-profile.h $(CGRAPH_H)
value-prof.o : value-prof.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(BASIC_BLOCK_H) hard-reg-set.h value-prof.h $(EXPR_H) output.h $(FLAGS_H) \
$(RECOG_H) insn-config.h $(OPTABS_H) $(REGS_H) $(GGC_H) $(DIAGNOSTIC_H) \
$(TREE_H) $(COVERAGE_H) $(RTL_H) $(GCOV_IO_H) $(TREE_FLOW_H) \
- tree-flow-inline.h $(TIMEVAR_H) tree-pass.h $(TOPLEV_H) pointer-set.h
+ tree-flow-inline.h $(TIMEVAR_H) $(TREE_PASS_H) $(TOPLEV_H) pointer-set.h
loop-doloop.o : loop-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(FLAGS_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) \
$(TOPLEV_H) $(CFGLOOP_H) output.h $(PARAMS_H) $(TARGET_H)
@@ -2778,23 +2794,23 @@ alloc-pool.o : alloc-pool.c $(CONFIG_H) $(SYSTEM_H) alloc-pool.h $(HASHTAB_H)
auto-inc-dec.o : auto-inc-dec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) insn-config.h \
$(REGS_H) $(FLAGS_H) output.h $(FUNCTION_H) $(EXCEPT_H) $(TOPLEV_H) $(RECOG_H) \
- $(EXPR_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H)
+ $(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(FLAGS_H) \
$(REGS_H) hard-reg-set.h output.h $(TOPLEV_H) $(FUNCTION_H) $(EXCEPT_H) $(GGC_H) \
$(TM_P_H) $(TIMEVAR_H) $(OBSTACK_H) $(TREE_H) alloc-pool.h \
- $(HASHTAB_H) $(DF_H) $(CFGLOOP_H) $(TREE_FLOW_H) tree-pass.h
+ $(HASHTAB_H) $(DF_H) $(CFGLOOP_H) $(TREE_FLOW_H) $(TREE_PASS_H)
cfghooks.o: cfghooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TOPLEV_H) $(CFGLOOP_H)
cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) \
- coretypes.h $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h tree-pass.h $(RTL_H) \
+ coretypes.h $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(TREE_PASS_H) $(RTL_H) \
$(DIAGNOSTIC_H) $(TOPLEV_H) $(BASIC_BLOCK_H) $(FLAGS_H) debug.h $(PARAMS_H) \
value-prof.h $(TREE_INLINE_H) $(TARGET_H)
cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
output.h $(TOPLEV_H) $(FUNCTION_H) $(EXCEPT_H) $(TM_P_H) insn-config.h $(EXPR_H) \
$(CFGLAYOUT_H) $(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \
- tree-pass.h $(DF_H) $(GGC_H)
+ $(TREE_PASS_H) $(DF_H) $(GGC_H)
cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(BASIC_BLOCK_H) hard-reg-set.h insn-config.h $(RECOG_H) $(TM_P_H) \
$(TIMEVAR_H) $(OBSTACK_H) $(TOPLEV_H) vecprim.h
@@ -2804,7 +2820,7 @@ cfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
cfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TIMEVAR_H) hard-reg-set.h output.h $(FLAGS_H) $(RECOG_H) \
$(TOPLEV_H) insn-config.h cselib.h $(TARGET_H) $(TM_P_H) $(PARAMS_H) \
- $(REGS_H) $(EMIT_RTL_H) $(CFGLAYOUT_H) tree-pass.h $(CFGLOOP_H) $(EXPR_H) \
+ $(REGS_H) $(EMIT_RTL_H) $(CFGLAYOUT_H) $(TREE_PASS_H) $(CFGLOOP_H) $(EXPR_H) \
$(DF_H) $(DBGCNT_H) dce.h
cfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) coretypes.h $(TM_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(FLAGS_H) $(FUNCTION_H) \
@@ -2827,7 +2843,8 @@ cfgloopmanip.o : cfgloopmanip.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
coretypes.h $(TM_H) cfghooks.h $(OBSTACK_H) $(TREE_FLOW_H)
loop-init.o : loop-init.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(GGC_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) \
- coretypes.h $(TM_H) $(OBSTACK_H) tree-pass.h $(TIMEVAR_H) $(FLAGS_H) $(DF_H)
+ coretypes.h $(TM_H) $(OBSTACK_H) $(TREE_PASS_H) $(TIMEVAR_H) $(FLAGS_H) \
+ $(DF_H)
loop-unswitch.o : loop-unswitch.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) $(PARAMS_H) \
output.h $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H)
@@ -2844,12 +2861,12 @@ combine.o : combine.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) $(FUNCTION_H) insn-config.h $(INSN_ATTR_H) $(REGS_H) $(EXPR_H) \
rtlhooks-def.h $(BASIC_BLOCK_H) $(RECOG_H) $(REAL_H) hard-reg-set.h \
$(TOPLEV_H) $(TM_P_H) $(TREE_H) $(TARGET_H) output.h $(PARAMS_H) $(OPTABS_H) \
- insn-codes.h $(TIMEVAR_H) tree-pass.h $(DF_H) vecprim.h $(CGRAPH_H)
+ insn-codes.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) vecprim.h $(CGRAPH_H)
reginfo.o : reginfo.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) addresses.h $(REGS_H) insn-config.h \
$(RECOG_H) reload.h $(REAL_H) $(TOPLEV_H) $(FUNCTION_H) output.h $(GGC_H) \
$(TM_P_H) $(EXPR_H) $(TIMEVAR_H) gt-reginfo.h $(HASHTAB_H) \
- $(TARGET_H) tree-pass.h $(DF_H) ira.h
+ $(TARGET_H) $(TREE_PASS_H) $(DF_H) ira.h
bitmap.o : bitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) $(GGC_H) gt-bitmap.h $(BITMAP_H) $(OBSTACK_H) $(HASHTAB_H)
varray.o : varray.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GGC_H) \
@@ -2871,35 +2888,35 @@ postreload.o : postreload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \
$(FUNCTION_H) $(TOPLEV_H) cselib.h $(TM_P_H) $(EXCEPT_H) $(TREE_H) $(MACHMODE_H) \
- $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H)
+ $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
$(TM_P_H) $(EXCEPT_H) $(TREE_H) $(TARGET_H) $(HASHTAB_H) intl.h $(OBSTACK_H) \
- $(PARAMS_H) $(TIMEVAR_H) tree-pass.h $(REAL_H) $(DBGCNT_H)
+ $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) $(REAL_H) $(DBGCNT_H)
caller-save.o : caller-save.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(FUNCTION_H) \
addresses.h $(RECOG_H) reload.h $(EXPR_H) $(TOPLEV_H) $(TM_P_H) $(DF_H) \
output.h ira.h gt-caller-save.h $(GGC_H)
bt-load.o : bt-load.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(EXCEPT_H) \
$(RTL_H) hard-reg-set.h $(REGS_H) $(TM_P_H) $(FIBHEAP_H) output.h $(EXPR_H) \
- $(TARGET_H) $(FLAGS_H) $(INSN_ATTR_H) $(FUNCTION_H) tree-pass.h $(TOPLEV_H) \
- $(DF_H) vecprim.h $(RECOG_H)
+ $(TARGET_H) $(FLAGS_H) $(INSN_ATTR_H) $(FUNCTION_H) $(TREE_PASS_H) \
+ $(TOPLEV_H) $(DF_H) vecprim.h $(RECOG_H)
reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
conditions.h hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) insn-config.h \
$(INSN_ATTR_H) $(EXCEPT_H) $(RECOG_H) $(FUNCTION_H) $(FLAGS_H) output.h \
$(EXPR_H) $(TOPLEV_H) $(PARAMS_H) $(TM_P_H) $(OBSTACK_H) $(RESOURCE_H) \
- $(TIMEVAR_H) $(TARGET_H) tree-pass.h
+ $(TIMEVAR_H) $(TARGET_H) $(TREE_PASS_H)
alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) $(TOPLEV_H) output.h \
$(ALIAS_H) $(EMIT_RTL_H) $(GGC_H) $(FUNCTION_H) cselib.h $(TREE_H) $(TM_P_H) \
langhooks.h $(TARGET_H) gt-alias.h $(TIMEVAR_H) $(CGRAPH_H) \
- $(SPLAY_TREE_H) $(VARRAY_H) $(IPA_TYPE_ESCAPE_H) $(DF_H) tree-pass.h
+ $(SPLAY_TREE_H) $(VARRAY_H) $(IPA_TYPE_ESCAPE_H) $(DF_H) $(TREE_PASS_H)
stack-ptr-mod.o : stack-ptr-mod.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(TREE_H) $(RTL_H) $(REGS_H) $(EXPR_H) tree-pass.h \
+ $(TM_H) $(TREE_H) $(RTL_H) $(REGS_H) $(EXPR_H) $(TREE_PASS_H) \
$(BASIC_BLOCK_H) $(FLAGS_H) output.h $(DF_H)
init-regs.o : init-regs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(TREE_H) $(RTL_H) $(REGS_H) $(EXPR_H) tree-pass.h \
+ $(TM_H) $(TREE_H) $(RTL_H) $(REGS_H) $(EXPR_H) $(TREE_PASS_H) \
$(BASIC_BLOCK_H) $(FLAGS_H) $(DF_H)
ira-build.o: ira-build.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TARGET_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \
@@ -2931,13 +2948,13 @@ ira.o: ira.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(REGS_H) hard-reg-set.h $(FLAGS_H) $(OBSTACK_H) \
$(EXPR_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) \
$(DF_H) $(IRA_INT_H) $(PARAMS_H) $(TIMEVAR_H) $(INTEGRATE_H) \
- tree-pass.h output.h
+ $(TREE_PASS_H) output.h
regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- insn-config.h $(TIMEVAR_H) tree-pass.h $(DF_H)\
+ insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H)\
$(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
$(EXPR_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(EXCEPT_H) reload.h
combine-stack-adj.o : combine-stack-adj.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(RTL_H) insn-config.h $(TIMEVAR_H) tree-pass.h \
+ $(TM_H) $(RTL_H) insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) \
$(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
$(EXPR_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(DF_H) $(EXCEPT_H) reload.h
ddg.o : ddg.c $(DDG_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TARGET_H) \
@@ -2949,7 +2966,7 @@ modulo-sched.o : modulo-sched.c $(DDG_H) $(CONFIG_H) $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TARGET_H) $(TOPLEV_H) $(RTL_H) $(TM_P_H) $(REGS_H) $(FUNCTION_H) \
$(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(EXCEPT_H) $(RECOG_H) \
$(SCHED_INT_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(EXPR_H) $(PARAMS_H) \
- cfghooks.h $(GCOV_IO_H) hard-reg-set.h $(TM_H) $(TIMEVAR_H) tree-pass.h \
+ cfghooks.h $(GCOV_IO_H) hard-reg-set.h $(TM_H) $(TIMEVAR_H) $(TREE_PASS_H) \
$(DF_H) $(DBGCNT_H)
haifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(FUNCTION_H) \
@@ -2962,7 +2979,7 @@ sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) $(TOPLEV_H) $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
- $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) tree-pass.h \
+ $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \
$(DBGCNT_H)
sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
@@ -2970,73 +2987,73 @@ sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(PARAMS_H) $(CFGLAYOUT_H) $(TARGET_H) output.h
sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(SCHED_INT_H) hard-reg-set.h $(BASIC_BLOCK_H) $(OBSTACK_H) \
- $(REAL_H) tree-pass.h $(INSN_ATTR_H)
+ $(REAL_H) $(TREE_PASS_H) $(INSN_ATTR_H)
sel-sched.o : sel-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) toplev.h $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
- $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) tree-pass.h \
+ $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \
$(SCHED_INT_H) $(GGC_H) $(TREE_H) $(LANGHOOKS_DEF_H) \
$(SEL_SCHED_IR_H) $(SEL_SCHED_DUMP_H) sel-sched.h
sel-sched-dump.o : sel-sched-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) toplev.h $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
- $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) tree-pass.h \
+ $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \
$(SEL_SCHED_DUMP_H) $(GGC_H) $(TREE_H) $(LANGHOOKS_DEF_H) $(SEL_SCHED_IR_H)
sel-sched-ir.o : sel-sched-ir.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) toplev.h $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
- $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) tree-pass.h \
+ $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \
$(SCHED_INT_H) $(GGC_H) $(TREE_H) $(LANGHOOKS_DEF_H) $(SEL_SCHED_IR_H)
final.o : final.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) intl.h $(REGS_H) $(RECOG_H) conditions.h \
insn-config.h $(INSN_ATTR_H) $(FUNCTION_H) output.h hard-reg-set.h \
- $(EXCEPT_H) debug.h xcoffout.h $(TOPLEV_H) reload.h dwarf2out.h tree-pass.h \
- $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H) $(CFGLAYOUT_H) dbxout.h \
- $(TIMEVAR_H) $(CGRAPH_H) $(COVERAGE_H) $(REAL_H) $(DF_H) vecprim.h $(GGC_H) \
- $(CFGLOOP_H) $(PARAMS_H)
+ $(EXCEPT_H) debug.h xcoffout.h $(TOPLEV_H) reload.h dwarf2out.h \
+ $(TREE_PASS_H) $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H) \
+ $(CFGLAYOUT_H) dbxout.h $(TIMEVAR_H) $(CGRAPH_H) $(COVERAGE_H) $(REAL_H) \
+ $(DF_H) vecprim.h $(GGC_H) $(CFGLOOP_H) $(PARAMS_H)
recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FUNCTION_H) $(BASIC_BLOCK_H) $(REGS_H) $(RECOG_H) $(EXPR_H) \
$(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(TOPLEV_H) output.h reload.h \
- addresses.h $(TM_P_H) $(TIMEVAR_H) tree-pass.h hard-reg-set.h $(REAL_H) \
+ addresses.h $(TM_P_H) $(TIMEVAR_H) $(TREE_PASS_H) hard-reg-set.h $(REAL_H) \
$(DF_H) $(DBGCNT_H) $(TARGET_H)
reg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) $(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \
insn-config.h $(TOPLEV_H) reload.h $(FUNCTION_H) $(TM_P_H) $(GGC_H) \
$(BASIC_BLOCK_H) $(CFGLAYOUT_H) output.h $(VARRAY_H) $(TIMEVAR_H) \
- tree-pass.h $(TARGET_H) vecprim.h $(DF_H)
+ $(TREE_PASS_H) $(TARGET_H) vecprim.h $(DF_H)
sreal.o: sreal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) sreal.h
predict.o: predict.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) \
hard-reg-set.h output.h $(TOPLEV_H) $(RECOG_H) $(FUNCTION_H) $(EXCEPT_H) \
$(TM_P_H) $(PREDICT_H) sreal.h $(PARAMS_H) $(TARGET_H) $(CFGLOOP_H) \
$(COVERAGE_H) $(SCEV_H) $(GGC_H) predict.def $(TIMEVAR_H) $(TREE_DUMP_H) \
- $(TREE_FLOW_H) tree-pass.h $(EXPR_H) pointer-set.h
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(EXPR_H) pointer-set.h
lists.o: lists.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TOPLEV_H) \
$(RTL_H) $(GGC_H) gt-lists.h
bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(FLAGS_H) $(TIMEVAR_H) output.h $(CFGLAYOUT_H) $(FIBHEAP_H) \
$(TARGET_H) $(FUNCTION_H) $(TM_P_H) $(OBSTACK_H) $(EXPR_H) $(REGS_H) \
- $(PARAMS_H) $(TOPLEV_H) tree-pass.h $(DF_H)
+ $(PARAMS_H) $(TOPLEV_H) $(TREE_PASS_H) $(DF_H)
tracer.o : tracer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(BASIC_BLOCK_H) hard-reg-set.h output.h $(CFGLAYOUT_H) \
$(FLAGS_H) $(TIMEVAR_H) $(PARAMS_H) $(COVERAGE_H) $(FIBHEAP_H) \
- tree-pass.h $(TREE_FLOW_H) $(TREE_INLINE_H)
+ $(TREE_PASS_H) $(TREE_FLOW_H) $(TREE_INLINE_H)
cfglayout.o : cfglayout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h \
$(FUNCTION_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(TARGET_H) gt-cfglayout.h \
- $(GGC_H) alloc-pool.h $(FLAGS_H) $(OBSTACK_H) tree-pass.h vecprim.h \
+ $(GGC_H) alloc-pool.h $(FLAGS_H) $(OBSTACK_H) $(TREE_PASS_H) vecprim.h \
$(DF_H)
timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TIMEVAR_H) $(FLAGS_H) intl.h $(TOPLEV_H) $(RTL_H) timevar.def
regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
output.h $(RECOG_H) $(FUNCTION_H) $(OBSTACK_H) $(FLAGS_H) $(TM_P_H) \
- addresses.h reload.h $(TOPLEV_H) $(TIMEVAR_H) tree-pass.h $(DF_H)
+ addresses.h reload.h $(TOPLEV_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H)
ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) $(TOPLEV_H) $(FLAGS_H) insn-config.h $(FUNCTION_H) $(RECOG_H) \
$(TARGET_H) $(BASIC_BLOCK_H) $(EXPR_H) output.h $(EXCEPT_H) $(TM_P_H) \
- $(REAL_H) $(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h $(TIMEVAR_H) tree-pass.h \
- $(DF_H) $(DBGCNT_H)
+ $(REAL_H) $(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h $(TIMEVAR_H) \
+ $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
lambda-mat.o : lambda-mat.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \
$(TM_H) coretypes.h $(TREE_H) $(TREE_FLOW_H)
lambda-trans.o: lambda-trans.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \
@@ -3045,7 +3062,7 @@ lambda-code.o: lambda-code.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \
$(TM_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \
$(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) coretypes.h $(TARGET_H) \
- tree-chrec.h tree-pass.h vec.h vecprim.h $(OBSTACK_H) pointer-set.h
+ tree-chrec.h $(TREE_PASS_H) vec.h vecprim.h $(OBSTACK_H) pointer-set.h
params.o : params.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(PARAMS_H) $(TOPLEV_H)
pointer-set.o: pointer-set.c pointer-set.h $(CONFIG_H) $(SYSTEM_H)
hooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(HOOKS_H)
@@ -3057,7 +3074,7 @@ dbgcnt.o: dbgcnt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h errors.h $(DBGCNT_H) \
lower-subreg.o : lower-subreg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(MACHMODE_H) $(TM_H) $(RTL_H) $(TM_P_H) $(TIMEVAR_H) $(FLAGS_H) \
insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) $(OBSTACK_H) $(BITMAP_H) \
- $(EXPR_H) $(EXCEPT_H) $(REGS_H) tree-pass.h $(DF_H)
+ $(EXPR_H) $(EXCEPT_H) $(REGS_H) $(TREE_PASS_H) $(DF_H)
$(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h insn-config.h conditions.h \
@@ -3290,9 +3307,9 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
$(srcdir)/dbxout.c $(srcdir)/ipa-struct-reorg.c $(srcdir)/dwarf2out.c $(srcdir)/dwarf2asm.c \
$(srcdir)/tree-vect-generic.c \
$(srcdir)/dojump.c \
- $(srcdir)/emit-rtl.c $(srcdir)/except.c $(srcdir)/explow.c $(srcdir)/expr.c \
+ $(srcdir)/emit-rtl.c $(srcdir)/except.h $(srcdir)/explow.c $(srcdir)/expr.c \
$(srcdir)/expr.h \
- $(srcdir)/function.c $(srcdir)/except.h \
+ $(srcdir)/function.c $(srcdir)/except.c \
$(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \
$(srcdir)/profile.c $(srcdir)/reginfo.c $(srcdir)/mcf.c \
$(srcdir)/reg-stack.c $(srcdir)/cfglayout.c $(srcdir)/cfglayout.h \
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index b56f38f0a52..b9463f6a4d3 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,1182 @@
+2009-04-20 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * a-calend.adb: Remove types char_Pointer, int, tm and tm_Pointer.
+ (localtime_tzoff): This routine no longer accepts an actual of type
+ tm_Pointer.
+ (UTC_Time_Offset): Remove local variable Secs_TM.
+
+ * sysdep.c (__gnat_localtime_tzoff): This routine no longer accepts an
+ actual of type struct tm*. Add local variable of type struct tm for all
+ targets that provide localtime_r and need to invoke it.
+
+2009-04-20 Thomas Quinot <quinot@adacore.com>
+
+ * s-oscons-tmplt.c, g-socket.adb, g-socket.ads
+ (GNAT.Sockets.Resolve_Error): Add case of EPIPE
+ Add case of EAGAIN for platforms where it is not equal to EWOULDBLOCK
+
+2009-04-20 Robert Dewar <dewar@adacore.com>
+
+ * sem_ch3.adb: Minor reformatting
+
+ * lib-load.adb: Minor reformatting
+
+ * sem_ch4.adb: Minor reformatting
+
+2009-04-20 Robert Dewar <dewar@adacore.com>
+
+ * namet-sp.ads, namet-sp.adb (Is_Bad_Spelling_Of): Implement new spec
+ (equal values => False).
+
+2009-04-20 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch6.adb (Is_Null_Procedure): predicate is global, so that calls
+ to null procedures can be inlined unconditionally.
+
+2009-04-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (call_to_gnu): When creating the copy for a
+ non-addressable parameter passed by reference, do not convert the
+ actual if its type is already the nominal type, unless it is of
+ self-referential size.
+
+2009-04-20 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat_ugn.texi: Fix typos.
+
+2009-04-20 Robert Dewar <dewar@adacore.com>
+
+ * debug.adb, gnat1drv.adb, sem_ch13.adb: Add circuitry to
+ Validate_Unchecked_Warnings to suppress warnings about size or
+ alignment or extra bits if either type involved has pragma Warnings
+ (Off) set for the type entity.
+
+2009-04-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (gigi): Make the special IA-64 descriptor type
+ a builtin type and give it a name.
+
+2009-04-17 Diego Novillo <dnovillo@google.com>
+
+ * gcc-interface/misc.c (gnat_expand_expr): Remove.
+ (LANG_HOOKS_EXPAND_EXPR): Remove.
+
+2009-04-17 Robert Dewar <dewar@adacore.com>
+
+ * sem_ch3.adb: Minor reformatting
+
+2009-04-17 Pascal Obry <obry@adacore.com>
+
+ * adaint.c: Add __gnat_use_acl global variable to control use of ACL.
+
+2009-04-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Build_Derived_Enumeration_Type): Diagnose properly
+ illegal constraints on type derived from formal discrete types.
+
+2009-04-17 Thomas Quinot <quinot@adacore.com>
+
+ PR ada/35953
+
+ * g-socthi-vms.adb, g-socthi-vms.ads, g-socthi-vxworks.adb,
+ g-socthi-vxworks.ads, g-socthi-mingw.adb, g-socthi-mingw.ads,
+ g-socthi.adb, g-stsifd-sockets.adb, g-socthi.ads, g-socket.adb,
+ g-socket.ads (GNAT.Sockets.Thin.C_Send,
+ GNAT.Sockets.Thin.Syscall_Send): Remove unused subprograms.
+ Replace calls to send(2) with equivalent sendto(2) calls.
+ (GNAT.Sockets.Send_Socket): Factor common code in inlined subprogram.
+ (GNAT.Sockets.Write): Account for the case of hyper-empty arrays, do not
+ report an error in that case. Factor code common to the two versions
+ (datagram and stream) in common routine Stream_Write.
+
+2009-04-17 Robert Dewar <dewar@adacore.com>
+
+ * exp_disp.adb: Minor reformatting
+ Minor code reorganization (use Nkind_In)
+
+ * prepcomp.adb: Minor reformatting
+
+ * sem_ch3.adb: Minor reformatting
+
+ * sem_res.adb: Minor comment addition
+
+ * exp_ch5.adb (Expand_Assign_Array): Use Has_Address_Clause to test
+ for address clause
+
+ * lib-xref.adb (Generate_Reference): Exclude recursive calls from
+ setting Is_Referenced
+
+ * types.ads: Minor reformatting
+
+2009-04-17 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat_ugn.texi: Initial documentation on binding generator.
+
+2009-04-17 Ed Schonberg <schonberg@adacore.com>
+
+ * einfo.ads, einfo.adb: New attribute Underlying_Record_View, to handle
+ type extensions whose parent is a type with unknown discriminants.
+
+ * exp_aggr.adb (Expand_Record_Aggregate): If the type of an extension
+ aggregate has unknown discriminants, use the Underlying_Record_View to
+ obtain the discriminants of the ancestor part.
+
+ * exp_disp.adb (Build_Dispatch_Tables): Types that are
+ Underlying_Record_Views share the dispatching information of the
+ original record extension.
+
+ * exp_ch3.adb (Expand_Record_Extension): If the type inherits unknown
+ discriminants, propagate dispach table information to the
+ Underlying_Record_View.
+
+ * sem_ch3.adb (Build_Derived_Private_Type): If parent type has unknown
+ discriminants and declaration is not a completion, generate
+ Underlying_Record_View to provide proper discriminant information to
+ the front-end and to gigi.
+
+2009-04-17 Robert Dewar <dewar@adacore.com>
+
+ * s-conca5.adb, g-sercom.adb, s-conca5.ads, s-conca7.adb, exp_imgv.adb,
+ s-conca7.ads, s-crc32.adb, s-crc32.ads, s-conca9.adb, s-conca9.ads,
+ s-addope.adb, i-cstrin.ads, s-addope.ads, s-carun8.adb, s-carun8.ads,
+ g-htable.ads, g-hesora.adb, g-hesora.ads, s-htable.adb, s-htable.ads,
+ s-conca2.adb, s-conca2.ads, a-except.adb, s-conca4.adb, a-except.ads,
+ s-conca4.ads, s-except.adb, s-except.ads, s-conca6.adb, s-conca6.ads,
+ g-spchge.adb, g-spchge.ads, g-u3spch.adb, g-u3spch.ads, s-conca8.adb,
+ s-conca8.ads, g-byorma.adb, g-byorma.ads, s-memory.adb, s-memory.ads,
+ g-speche.adb, g-speche.ads, g-stsifd-sockets.adb, exp_dist.adb,
+ s-imgenu.adb, s-imgenu.ads, s-mastop.adb, s-mastop.ads, s-exctab.adb,
+ s-exctab.ads, s-imenne.adb, s-imenne.ads, s-casuti.adb, osint.adb,
+ s-assert.adb, s-casuti.ads, s-assert.ads, s-os_lib.adb, s-conca3.adb,
+ s-conca3.ads: Remove unneeded pragma Warnings
+
+2009-04-17 Robert Dewar <dewar@adacore.com>
+
+ * g-moreex.adb: Add comments.
+
+ * s-auxdec.ads: Add ??? comment for uncommented pragma Warnings (Off)
+
+ * s-auxdec-vms_64.ads: Add ??? comment for uncommented pragma
+ Warnings (Off)
+
+ * prepcomp.adb: Add ??? comment
+
+ * a-tasatt.adb: Minor reformatting
+
+ * g-trasym-vms-alpha.adb: Add ??? comment
+
+ * g-trasym-vms-ia64.adb: Add ??? comment
+
+ * xoscons.adb: Minor reformatting
+
+ * s-tassta.adb: Minor reformatting
+
+ * s-scaval.adb: Add ??? comment
+
+ * stand.ads: Minor code clean up (remove junk with of Namet)
+
+ * s-strcom.adb, s-strcom.ads, s-string.adb, s-string.ads, s-sopco3.adb,
+ s-sopco3.ads, s-strops.adb, s-strops.ads, s-sopco5.adb, s-sopco5.ads,
+ s-wchcnv.adb, s-wchcnv.ads, s-ststop.adb, s-ststop.ads, s-soflin.adb,
+ s-soflin.ads, s-traceb.adb, s-traceb.ads, s-traent.adb, s-traent.ads,
+ s-secsta.adb, s-secsta.ads, s-utf_32.adb, s-utf_32.ads, s-wchcon.adb,
+ s-wchjis.adb, s-wchcon.ads, s-wchjis.ads, s-sopco4.adb, s-sopco4.ads,
+ s-stache.adb, s-stache.ads, s-stoele.adb, s-stoele.ads, s-stalib.adb,
+ s-stalib.ads, s-os_lib.ads, s-purexc.ads: Remove no longer needed
+ Warnings off pragmas.
+
+2009-04-17 Pascal Obry <obry@adacore.com>
+
+ * initialize.c: Fix test for reallocating the arguments array.
+
+2009-04-17 Geert Bosch <bosch@adacore.com>
+
+ * exp_fixd.adb (Expand_Convert_Float_To_Fixed): Have float to fixed
+ conversion truncate only for decimal fixed point types.
+
+2009-04-17 Jerome Lambourg <lambourg@adacore.com>
+
+ * g-comlin.adb (Initialize_Scan_Option): Make sure the sections are
+ reinitialized.
+
+2009-04-17 Robert Dewar <dewar@adacore.com>
+
+ * exp_ch5.adb (Expand_Assign_Array): Do not set Forwards_OK and
+ Backwards_OK if either operand has an address clause.
+
+2009-04-17 Pascal Obry <obry@adacore.com>
+
+ * initialize.c: Code clean up, use realloc.
+
+2009-04-17 Pascal Obry <obry@adacore.com>
+
+ * initialize.c: Do not get Unicode command line if Unicode support not
+ activated.
+ Add support for wildcard expansion for Unicode parameters on Win32.
+
+ * mingw32.h: Add missing macros when Unicode support not activated.
+
+2009-04-17 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch6.adb (Check_Anonymous_Return): Add missing checks to
+ avoid generating code that references the Current_Master
+ when compiling without tasks.
+
+2009-04-17 Vincent Celier <celier@adacore.com>
+
+ * prj-attr.adb: New project level attribute Target
+
+ * prj-nmsc.adb (Process_Project_Level_Simple_Attributes): Process
+ attribute Target
+
+ * prj.ads (Project_Configuration): New component Target
+
+2009-04-17 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch7.adb (Expand_Ctrl_Function_Call): Remove incorrect special
+ case for the case of an aggregate component, the attach call for the
+ result is actually needed.
+
+ * exp_aggr.adb (Backend_Processing_Possible): Backend processing for
+ an array aggregate must be disabled if the component type requires
+ controlled actions.
+
+ * exp_ch3.adb: Minor reformatting
+
+2009-04-17 Bob Duff <duff@adacore.com>
+
+ * output.ads (Indent,Outdent): New procedures for indenting the output.
+ (Write_Char): Correct comment -- LF _is_ allowed.
+
+ * output.adb (Indent,Outdent): New procedures for indenting the output.
+ Keep track of the indentation level, and make sure it doesn't get too
+ high.
+ (Flush_Buffer): Insert spaces at the beginning of each line, if
+ indentation level is nonzero.
+ (Save_Output_Buffer,Restore_Output_Buffer): Save and restore the current
+ indentation level.
+ (Set_Standard_Error,Set_Standard_Output): Remove superfluous
+ "Next_Col := 1;". Flush_Buffer does that.
+
+ * sem_ch6.adb, sem_ch7.adb (Debug_Flag_C): Reorganize the output
+ controlled by the -gnatdc switch. It now occurs on entry/exit to the
+ relevant analysis routines, and calls Indent/Outdent to make the
+ indentation reflect the nesting level. Add "helper" routines, since
+ otherwise lots of "return;" statements would skip the debugging output.
+
+2009-04-17 Arnaud Charlet <charlet@adacore.com>
+
+ * s-taprop-tru64.adb, s-taprop-vms.adb, s-taprop-linux.adb,
+ s-taprop-solaris.adb, s-taprop-irix.adb, s-taprop-hpux-dce.adb,
+ s-taprop-posix.adb (Suspend_Until_True): Protect against early wakeup.
+
+2009-04-17 Thomas Quinot <quinot@adacore.com>
+
+ * exp_aggr.adb: Minor code reorganization, no behaviour change.
+
+2009-04-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch8.adb (Use_One_Type): Handle properly a redundant use type
+ clause in a unit that is a package body or a subunit, when the previous
+ clause appears in a spec or a parent.
+
+2009-04-17 Thomas Quinot <quinot@adacore.com>
+
+ * sinfo.ads, exp_aggr.adb, exp_aggr.ads: Minor reformatting
+
+ * exp_ch7.adb: Minor reformatting
+
+2009-04-17 Bob Duff <duff@adacore.com>
+
+ * exp_ch4.adb (Expand_Allocator_Expression): In an initialized
+ allocator, check that the expression of the qualified expression obeys
+ the constraints of the subtype of the qualified expression.
+
+2009-04-17 Thomas Quinot <quinot@adacore.com>
+
+ * sprint.adb (Write_Itype): Add handling of enumeration subtypes.
+
+2009-04-17 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch4.adb (Expand_Allocator_Expression): Apply constraint check to
+ aggregate, using context imposed by subtype mark in allocator.
+
+2009-04-17 Pascal Obry <obry@adacore.com>
+
+ * gnat_rm.texi: Document GNAT_CODE_PAGE environment variable
+
+2009-04-17 Nicolas Roche <roche@adacore.com>
+
+ * initialize.c (__gnat_initialize): remove MAX_PATH limitation on each
+ argument length.
+
+2009-04-17 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_elim.adb (Eliminate_Error_Msg): Minor change to error message to
+ cover both calls and attribute references ("call" => "reference").
+
+2009-04-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Analyze_Subtype_Declaration): A subtype of an access
+ type for which Storage_Size is set to 0 is legal in a pure unit.
+
+2009-04-17 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch7.adb: Minor reformatting
+
+2009-04-17 Robert Dewar <dewar@adacore.com>
+
+ * restrict.adb (Check_Restriction_No_Dependence): Don't check
+ restriction if outside main extended source unit.
+
+ * sem_ch10.adb (Analyze_With_Clause): Check No_Dependence restriction
+ for parents of child units as well as the child unit itself.
+
+2009-04-17 Bob Duff <duff@adacore.com>
+
+ * checks.ads: Minor comment fix
+
+ * exp_aggr.ads: Minor comment fix
+
+2009-04-17 Nicolas Roche <roche@adacore.com>
+
+ * adaint.c: Improve cross compiler detection and handling.
+
+2009-04-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_Concatenation): Do not use calls at -Os.
+
+2009-04-17 Pascal Obry <obry@adacore.com>
+
+ * mingw32.h: Add S2WSC and WS2SC macros to convert to/from
+ CurrentCodePage.
+
+ * adaint.h: Encoding_Unspecified is now defined. Corresponds to the
+ value when no encoding form paramter is set on Text_IO services.
+
+ * adaint.c: CurrentCodePage new variable on Windows.
+ Use new macros S2WSC and WS2SC instead of the UTF-8 oriented
+ ones.
+
+ * mkdir.c: Use new macros S2WSC and WS2SC instead of the UTF-8 oriented
+ ones.
+
+ * initialize.c: Initialize CurrentCodePage depending on GNAT_CODE_PAGE
+ environment variable value. Default is UTF-8.
+
+ * s-crtl.ads: Filename_Encoding add Unspecified in the enumeration type.
+ fopen and freopen encoding parameter is now set to Unspecified.
+ The default value is in this case UTF-8 (as it was before) but
+ use the new macros that convert to/from the code page set
+ at runtime (CurrentCodePage).
+
+ * s-fileio.adb: When no encoding specified use Unspecified value.
+
+2009-04-17 Ed Schonberg <schonberg@adacore.com>
+
+ * atree.adb, atree.ads: Remove dead code.
+
+2009-04-17 Arnaud Charlet <charlet@adacore.com>
+
+ * gcc-interface/Make-lang.in: Update dependencies.
+
+2009-04-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Access_Subprogram_Definition): Additional checks on
+ illegal uses of incomplete types in formal parts and return types.
+
+ * sem_ch6.adb (Process_Formals): Taft-amendment types are legal in
+ access to subprograms.
+
+ * sem_ch7.adb (Uninstall_Declarations): diagnose attempts to use
+ Taft-amendment types as the return type of an access_to_function type.
+
+ * freeze.adb (Freeze_Entity): Remove tests on formals of an incomplete
+ type for access_to_subprograms. The check is performed on package exit.
+
+2009-04-17 Ed Schonberg <schonberg@adacore.com>
+
+ * atree.ads, atree.adb: Move New_Copy_Tree.to sem_util.
+
+ * nlists.ads, nlists.adb: Move New_Copy_List to sem_util.
+
+ * lib-load.adb: Use Copy_Separate_Tree rather than New_Copy_Tree
+
+ * sem_util.ads, sem_util.adb: New_Copy_Tree and New_Copy_List belong in
+ semantic units, because the handling of itypes in the copied tree
+ requires semantic information that does not belong in atree.
+
+2009-04-17 Robert Dewar <dewar@adacore.com>
+
+ * par-ch6.adb: Minor reformatting
+
+ * prj.adb: Minor reformatting
+
+2009-04-17 Gary Dismukes <dismukes@adacore.com>
+
+ * par-ch6.adb (P_Subprogram): Overriding indicators should be allowed
+ on protected subprogram bodies, so exclude the case where Pf_Flags is
+ Pf_Decl_Pbod from the error check.
+
+ * par-ch9.adb (P_Protected_Operation_Items): Permit overriding
+ indicators on subprograms in protected bodies, and proceed with parsing
+ the subprogram.
+
+ * sem_ch6.adb (Verify_Overriding_Indicator): Exclude protected
+ subprograms from the check for primitiveness on subprograms with
+ overriding indicators.
+ (Check_Overriding_Indicator): Include protected subprograms in the
+ style check for missing overriding indicators.
+
+2009-04-17 Tristan Gingold <gingold@adacore.com>
+
+ * init.c: Fix stack checking for x86 Darwin.
+
+2009-04-17 Vincent Celier <celier@adacore.com>
+
+ * prj-attr.adb: New project level attribute Object_File_Suffix
+ (<language>).
+
+ * prj-nmsc.adb (Add_Source): Use the object file suffix to get the
+ object file name
+ (Process_Compiler): Process attribute Object_File_Suffix
+
+ * prj.adb (Object_Name): Use suffix Object_File_Suffix instead of
+ platform suffix, when specified.
+
+ * prj.ads (Language_Config): New component Object_File_Suffix,
+ defaulted to No_Name.
+ (Object_Name): New parameter Object_File_Suffix, defaulted to No_Name
+
+ * snames.ads-tmpl: New standard name Object_File_Suffix
+
+2009-04-17 Robert Dewar <dewar@adacore.com>
+
+ * gnat_rm.texi: Add documentation about No_Streams restriction
+
+ * sem_attr.adb (Check_Stream_Attribute): Exclude implicit stream
+ attributes when checking No_Streams restriction.
+
+2009-04-17 Thomas Quinot <quinot@adacore.com>
+
+ * rtsfind.ads (RE_Request_Destroy): New PolyORB s-parint entity.
+
+ * exp_dist.adb (PolyORB_Support.Build_General_Calling_Stubs): Add
+ missing calls to RE_Request_Destroy to deallocate request objects after
+ use.
+
+2009-04-17 Nicolas Setton <setton@adacore.com>
+
+ * link.c: Fix support for passing a response file under Darwin.
+
+2009-04-17 Emmanuel Briot <briot@adacore.com>
+
+ * prj.adb (Free): new subprogram.
+
+2009-04-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb: additional initialization on incomplete subtypes.
+
+ * sem_ch6.adb (Process_Formals): if the subprogram is in the private
+ part and one of the formals is an incomplete tagged type, attach to
+ list of private dependends of the type for later validation.
+
+ * sem_ch7.adb (Uninstall_Declarations): diagnose attempts to declare
+ primitive operations of a Taft-amendmment type.
+
+ * freeze.adb (Freeze_Entity): Remove tests on formals of an incomplete
+ type. The check is performed on package exit, possibly after the
+ subprogram is frozen.
+
+2009-04-17 Vincent Celier <celier@adacore.com>
+
+ * prj-nmsc.adb (Get_Directories): Get the object and exec directory
+ before looking for source directories, but make sure that there are nil
+ if they are not explicitely declared and there is explicitely no
+ sources in the project.
+
+2009-04-17 Pascal Obry <obry@adacore.com>
+
+ * initialize.c: Set gnat_argv with UTF-8 encoded strings on Windows.
+
+ * init.c: Fix minor typo and style fix.
+
+2009-04-17 Robert Dewar <dewar@adacore.com>
+
+ * a-except.adb, a-except-2005.adb: Add PE_Address_Of_Intrinsic
+
+ * sem_attr.adb (Analyze_Attribute, case Address): Use
+ PE_Address_Of_Intrinsic.
+
+ * types.ads: Add PE_Address_Of_Intrinsic
+
+ * types.h: Add PE_Address_Of_Intrinsic
+
+2009-04-17 Nicolas Setton <setton@adacore.com>
+
+ * gcc-interface/Makefile.in: Under darwin, build shared libraries
+ with install_name starting with "@rpath/".
+
+2009-04-17 Nicolas Setton <setton@adacore.com>
+
+ * link.c: Add darwin section
+
+2009-04-16 Robert Dewar <dewar@adacore.com>
+
+ * g-pehage.adb: Minor reformatting
+
+ * sem_ch12.adb: Minor reformatting
+
+ * exp_dist.adb: Minor reformatting
+
+ * bindgen.adb: Minor style fixes.
+
+2009-04-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_eval.adb (Eval_Indexed_Component): Extend constant-folding of
+ indexed components to the case where the prefix is a static string
+ literal.
+
+2009-04-16 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch3.adb (Expand_N_Object_Declaration): In case of build-in-place
+ objects avoid any further expansion of the expression initializing the
+ object.
+
+2009-04-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Preanalyze_Actuals): If the instance is a child unit
+ that hides an outer homograph, make that homograph invisible when
+ analyzing the actuals, to to prevent illegal direct visibility on it.
+
+2009-04-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * g-pehage.adb (Initialize): Fix off-by-one error.
+
+2009-04-16 Tristan Gingold <gingold@adacore.com>
+
+ * init.c: Detect real stack overflow on Darwin.
+
+ * system-darwin-x86.ads: Use stack probing on darwin x86.
+
+2009-04-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute, case 'Address): It is illegal to
+ take the address of an intrinsic subprogram.
+
+2009-04-16 Arnaud Charlet <charlet@adacore.com>
+
+ * gcc-interface/Makefile.in: Change g-trasym to g-trasym-unimplemented
+ for the targets where GNAT.Traceback.Symbolic is not supported.
+
+2009-04-16 Vincent Celier <celier@adacore.com>
+
+ * g-trasym-unimplemented.ads, g-trasym-unimplemented.adb: New file.
+
+ * g-trasym.ads: Update comments.
+
+2009-04-16 Vasiliy Fofanov <fofanov@adacore.com>
+
+ * tracebak.c (STOP_FRAME): Verify validity of the current address
+ before dereferencing.
+
+2009-04-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sprint.adb (Write_Itype): If the itype is an array subtype, preserve
+ the original location of the index expressions and the index subtypes,
+ to prevent spurious out-of-scope references in gigi.
+
+2009-04-16 Tristan Gingold <gingold@adacore.com>
+
+ * init.c, s-osinte-darwin.ads, system-darwin-x86_64.ads:
+ Add support for stack checking on darwin.
+
+2009-04-16 Vincent Celier <celier@adacore.com>
+
+ * prj-attr.adb: New attribute Runtime_Source_Dir
+
+ * prj-nmsc.adb (Process_Project_Level_Array_Attributes): Process
+ attribute Runtime_Source_Dir.
+ (Check_Naming_Schemes): Give default values to out parameters to avoid
+ invalid data.
+
+ * prj.ads (Language_Config): New component Runtime_Source_Dir
+
+ * snames.ads-tmpl: New standard name Runtime_Source_Dir
+
+2009-04-16 Pascal Obry <obry@adacore.com>
+
+ * adaint.h, adaint.c (__gnat_rmdir): New routine.
+ Simple wrapper routines used to convert to proper encoding on
+ Windows.
+
+ * s-crtl.ads: Use __gnat_rmdir instead of direct call to the C library.
+
+ * g-dirope.adb (Remove_Dir): Fix a bug, the root directory was removed
+ twice.
+
+2009-04-16 Pascal Obry <obry@adacore.com>
+
+ * s-crtl.ads, s-os_lib.adb: Minor code clean-up.
+
+2009-04-16 Thomas Quinot <quinot@adacore.com>
+
+ * snames.ads-tmpl (Name_Defined): New predefined name for use by the
+ integrated preprocessor.
+
+ * prep.ads, prep.adb (Setup_Hooks): New subprogram.
+ (Initialize): Split into two subprograms, Initialize (to be called
+ prior to compiler command line processing) and Setup_Hooks (to be called
+ later on when the first source file is loaded).
+
+ * gprep.adb: Change call to Prep.Initialize to call to Prep.Setup_Hooks.
+ Add call to Prep.Initialize.
+
+ * sinput-l.adb, prepcomp.adb: Change call to Prep.Initialize to call
+ to Prep.Setup_Hooks.
+
+2009-04-16 Pascal Obry <obry@adacore.com>
+
+ * adaint.h, adaint.c (__gnat_chdir): New routine.
+ Simple wrapper routines used to convert to proper encoding on
+ Windows.
+
+ * s-crtl.ads: Use __gnat_chdir instead of direct call to the C library.
+
+ * a-direct.adb, g-dirope.adb: Use chdir from System.CRTL.
+
+2009-04-16 Quentin Ochem <ochem@adacore.com>
+
+ * sinput-p.adb (Clear_Source_File_Table): Use Sinput.Initialize instead
+ of Source.Init.
+
+2009-04-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * a-convec.ads (Is_Empty): Mark inline.
+
+2009-04-16 Nicolas Roche <roche@adacore.com>
+
+ * init.c (__gnat_init_float): Initialize FPU on x86_64 windows
+
+2009-04-16 Thomas Quinot <quinot@adacore.com>
+
+ * prepcomp.adb: Minor reformatting
+
+2009-04-16 Jerome Lambourg <lambourg@adacore.com>
+
+ * sem_prag.adb (Process_Import_Or_Interface): With .NET,
+ Access_Subprogram types can also be imported.
+ (Check_Form_Of_Interface_Name): Accept '/' character in entity CIL
+ names.
+
+2009-04-16 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
+ preserve homonym chain when the declaration is rewritten into a
+ renaming declaration, in order to preserve visibility structure.
+
+2009-04-16 Jerome Lambourg <lambourg@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma): Make sure that pragma pack is not
+ taken into account for VM targets.
+
+2009-04-16 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * g-calend.ads, g-calend.adb (Week_In_Year): Now calls
+ Year_Week_In_Year.
+ (Year_Week_In_Year): New routine which contains the original code from
+ Week_In_Year. Add the missing special case for January 1st falling on
+ a Monday.
+
+2009-04-16 Thomas Quinot <quinot@adacore.com>
+
+ * exp_dist.adb (Build_From_Any_Call): For a subtype that is a generic
+ actual type, use the base type to build the To_Any function.
+ (Build_From_Any_Function): Remove junk, useless subtype conversion.
+
+2009-04-16 Thomas Quinot <quinot@adacore.com>
+
+ * exp_ch9.adb, exp_code.adb, tbuild.adb, sem_case.adb,
+ restrict.adb: Minor code reorganization (use
+ Add_{Char,Str}_To_Name_Buffer instead of inlining it by hand).
+
+2009-04-16 Bob Duff <duff@adacore.com>
+
+ * exp_ch6.ads, exp_ch6.adb (Is_Build_In_Place_Function_Return): Remove,
+ unused.
+
+2009-04-16 Thomas Quinot <quinot@adacore.com>
+
+ * sem_ch4.adb: Minor reformatting
+
+ * adaint.c: Remove junk duplicated code.
+
+ * sem_ch3.adb: Minor reformatting
+
+ * exp_dist.adb: Minor comment rewording
+
+2009-04-16 Robert Dewar <dewar@adacore.com>
+
+ * gnat_rm.texi: Document effect of Assume_No_Invalid_Values and -gnatVa
+ used together.
+
+2009-04-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch4.adb (Find_Equality_Types): Filter out types that are not
+ usable before calling Add_One_Interp, to resolve spurious ambiguities.
+
+2009-04-16 Robert Dewar <dewar@adacore.com>
+
+ * Make-lang.in: Add entries for s-conca?.o
+
+ * Makefile.rtl: Add entries for s-conca?
+
+ * debug.adb: Add debug flags -gnatd.c and -gnatd.C to control behavior
+ of concatenation expansion
+
+ * exp_ch4.adb (Expand_Concatenation): Generate calls for certain
+ string cases instead of expanding assignments inline.
+
+ * opt.ads (Optimize_Size): New flag
+
+ * s-conca2.ads, s-conca2.adb, s-conca3.adb, s-conca3.ads,
+ s-conca4.adb, s-conca4.ads, s-conca5.adb, s-conca5.ads, s-conca6.adb,
+ s-conca6.ads, s-conca7.ads, s-conca7.adb, s-conca8.adb, s-conca8.ads,
+ s-conca9.adb, s-conca9.ads: New file.
+
+2009-04-16 Robert Dewar <dewar@adacore.com>
+
+ * exp_ch6.adb: Add comments
+
+ * rtsfind.ads: Add entries for s-conca? routines
+
+2009-04-16 Arnaud Charlet <charlet@adacore.com>
+
+ * gcc-interface/Make-lang.in: Update dependencies.
+
+ * gcc-interface/Makefile.in: Update translation for vms.
+
+2009-04-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Map_Formal_Package_Entities): renamed from Map_Entities
+ and made global, to be used when installing parents of a child
+ instance, to provide mappings for entities declared in formal packages
+ of ancestor units. Now called from Install_Formal_Packages.
+
+2009-04-16 Doug Rupp <rupp@adacore.com>
+
+ * s-taskin.adb (Initialize_ATCB): Initialize Debug_Events with others
+ notation for clarity.
+
+ * s-taprop-vxworks.adb, s-taprop-tru64.adb, s-taprop-vms.adb,
+ s-taprop-mingw.adb, s-taprop-linux.adb, s-taprop-solaris.adb,
+ s-taprop-irix.adb, s-taprop-hpux-dce.adb, s-taprop-posix.adb
+ (Initialize): Initialize Known_Tasks with Environment task.
+
+ * s-taskin.ads (Task_States): Move new states to end for the sake of
+ GDB compatibility.
+
+ * s-tassta.adb (Task_Wrapper): Fix comment about Enter_Task.
+
+2009-04-16 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch9.adb (Expand_N_Protected_Type_Declaration): If a protected
+ operation has an inline pragma, propagate the flag to the internal
+ unprotected subprogram.
+
+2009-04-16 Doug Rupp <rupp@adacore.com>
+
+ * s-taprop-vxworks.adb, s-taprop-tru64.adb, s-taprop-mingw.adb,
+ s-taprop-linux.adb, s-taprop-solaris.adb, s-taprop-irix.adb,
+ s-taprop-hpux-dce.adb, s-taprop-posix.adb
+ (Enter_Task): Move Known_Tasks initialization to s-tassta.adb
+
+ * s-taprop-vms.adb (Enter_Task): Likewise.
+ (Initialize): Import DBEXT, Debug_Register. Register DBGEXT callback.
+
+ * s-tassta.adb (Activate_Tasks): After task creation set state to
+ Activating, vice Runnable. Initialize Known_Tasks, moved here from
+ s-taprop.adb (Enter_Task). Set Debug_Event_Activating for debugger.
+ Set state to Runnable after above.
+ (Task_Wrapper): Set Debug_Event_Run. In exception block set
+ Debug_Event_Terminated.
+
+ * s-taskin.ads (Task_States): Add new states Activiting and
+ Activator_Delay_Sleep.
+ (Bit_Array, Debug_Event_Array): New types.
+ (Global_Task_Debug_Event_Set: New flag.
+ (Common_ATCB): New field Debug_Events.
+
+ * s-taskin.adb (Initialize_ATCB): Initialize Debug_Events.
+
+ * s-tasren.adb (Timed_Selective_Wait): Set Activator_Delay_Sleep vice
+ Activator_Sleep.
+
+ * s-tasini.adb (Locked_Abort_To_Level): Add case alternatives for when
+ Activating and when Acceptor_Delay_Sleep.
+
+ * s-tasdeb.ads: Add constants for Debug_Events.
+ (Debug_Event_Kind_Type): New subtype.
+ (Signal_Debug_Event): New subprogram.
+
+ * s-tasdeb.adb (Signal_Debug_Event): New null subprogram.
+
+2009-04-16 Thomas Quinot <quinot@adacore.com>
+
+ * sem_elim.adb: Minor reformatting
+
+ * freeze.adb: Minor reformatting
+
+ * exp_ch4.adb: Minor reformatting
+
+2009-04-16 Emmanuel Briot <briot@adacore.com>
+
+ * prj-nmsc.adb (Path_Name_Of): fix memory leak
+
+2009-04-16 Robert Dewar <dewar@adacore.com>
+
+ * sinfo.ads (Backwards_OK, Forwards_OK): Clarify documentation
+
+2009-04-16 Vincent Celier <celier@adacore.com>
+
+ * fmap.adb (Initialize): Show the current line when the mapping file
+ is detected as "incorrectly formatted".
+
+2009-04-16 Robert Dewar <dewar@adacore.com>
+
+ * sem_ch12.adb: Minor reformatting
+
+ * sem_ch5.adb: Minor comment addition
+
+ * sem_util.adb: Minor reformatting
+
+ * sinput-p.adb: Minor reformatting
+ Add missing pragma Warnings (On)
+
+2009-04-16 Ed Falis <falis@adacore.com>
+
+ * s-vxwext-kernel.adb: (ERROR): deleted unused constant
+
+2009-04-16 Vincent Celier <celier@adacore.com>
+
+ * ali-util.adb: Minor comment spelling error fix
+
+2009-04-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch5.adb (Expand_Assign_Array): For the GCC back-end, do not
+ generate an assignment loop in case of overlap.
+
+2009-04-16 Olivier Hainque <hainque@adacore.com>
+
+ * gnat_ugn.texi (gnatmem description): Make it explicit that
+ gnatmem is designed to work in association with static runtime
+ library only.
+
+2009-04-16 Thomas Quinot <quinot@adacore.com>
+
+ * sem_type.adb: Minor reformatting
+
+2009-04-16 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * s-osprim-darwin.adb, s-osprim-posix.adb (Clock): Add comment
+ concerning return codes of gettimeofday and return value check.
+
+2009-04-16 Ed Falis <falis@adacore.com>
+
+ * s-vxwext-kernel.ads (Int_Lock, Int_Unlock): set to convention C so
+ body can be renaming of imported routines.
+
+2009-04-16 Vasiliy Fofanov <fofanov@adacore.com>
+
+ * s-asthan-vms-alpha.adb: Disable warnings on alignment in a more
+ targeted fashion.
+
+2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch9.adb: Comment improvements.
+ (Build_Entry_Family_Name): Add parentheses around the index of a entry
+ family member.
+
+2009-04-15 Bob Duff <duff@adacore.com>
+
+ * sem_warn.adb (Check_Infinite_Loop_Warning): Catch cases like
+ "while X /= null loop" where X is unchanged inside the loop. We were
+ not warning in this case, because of the pointers -- we feared that the
+ loop variable could be updated via a pointer, if there are any pointers
+ around the place. But that is impossible in this case.
+
+ * sem_util.adb (May_Be_Lvalue): This routine was overly pessimistic in
+ the case of dereferences. In X.all, X cannot be an l-value. We now
+ catch that case (and implicit dereferences, too).
+
+2009-04-15 Vincent Celier <celier@adacore.com>
+
+ * sinput-p.ads, sinput-p.adb (Clear_Source_File_Table): New procedure
+
+2009-04-15 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Is_Actual_Of_Previous_Formal): Make fully recursive.
+ From code reading.
+ (Analyze_Package_Instantiation): If generic unit in child instance is
+ the same as generic unit in parent instance, look for an outer homonym
+ to locate the desired generic.
+
+2009-04-15 Bob Duff <duff@adacore.com>
+
+ * sem_ch5.adb (Analyze_Loop_Statement): Don't check for infinite loop
+ warnings unless the loop comes from source, because checking generated
+ loops is a waste of time, and makes it harder to debug
+ Check_Infinite_Loop_Warning.
+
+ * sem_warn.adb (Check_Infinite_Loop_Warning): If the local variable
+ tested in the while loop is a renaming, do not warn. Otherwise, we get
+ false alarms, because it's usually renaming something that we can't
+ deal with (an indexed component, a global variable, ...).
+
+ * gnat_rm.texi: Fix typo
+
+2009-04-15 Thomas Quinot <quinot@adacore.com>
+
+ * sem_ch6.adb: Minor reformatting
+
+2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch7.adb (Expand_Ctrl_Function_Call): Check for the case where the
+ immediate parent of the controlled function call is a component
+ association.
+
+2009-04-15 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch8.adb (Use_One_Type): If the type is tagged, indicate that the
+ corresponding class-wide type is also in use.
+
+2009-04-15 Thomas Quinot <quinot@adacore.com>
+
+ * frontend.adb: Minor comment fix
+
+2009-04-15 Robert Dewar <dewar@adacore.com>
+
+ * gnatchop.adb (BOM_Length): New global variable
+ (Write_Unit): Add new parameter Write_BOM
+ (Write_Chopped_Files): Check for BOM and set Write_BOM for call
+ to Write_Unit
+
+ * gnat_ugn.texi: Add note on propagation of BOM by gnatchop
+
+2009-04-15 Geert Bosch <bosch@adacore.com>
+
+ * system-mingw-x86_64.ads, system-darwin-x86_64.ads
+ (Backend_Overflow_Checks): Set to True.
+
+2009-04-15 Gary Dismukes <dismukes@adacore.com>
+
+ * par-ch3.adb (P_Type_Declaration): Issue an error if the synchronized
+ keyword is given in a record extension.
+
+2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * exp_ch7.adb (Expand_Ctrl_Function_Call): Procede with the expansion
+ of a controlled function call in the context of a record aggregate.
+ This does not apply to array aggregates since the call will be expanded
+ into assignments.
+
+2009-04-15 Ed Falis <falis@adacore.com>
+
+ * s-osinte-vxworks-kernel.adb, s-osinte-vxworks.adb,
+ s-osinte-vxworks.ads s-vxwext.ads, s-vxwext-kernel.adb,
+ s-vxwext-kernel.ads, s-vxwext-rtp.ads, s-vxwext-rtp.adb: Reorganize
+ s-osinte-vxworks* and s-vxwext*.
+
+2009-04-15 Arnaud Charlet <charlet@adacore.com>
+
+ * gcc-interface/Make-lang.in: Update dependencies.
+
+ * gcc-interface/Makefile.in: Reorganization of s-osinte-vxworks*
+ and s-vxwext*.
+
+2009-04-15 Robert Dewar <dewar@adacore.com>
+
+ * sem_ch13.adb (Unchecked_Conversions): Store source location instead
+ of node for location for warning messages.
+
+ * gnatchop.adb: Minor reformatting
+
+2009-04-15 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch6.adb: additional guard for renaming declarations for in
+ parameters of an array type.
+
+2009-04-15 Robert Dewar <dewar@adacore.com>
+
+ * sem_eval.adb (Get_Static_Length): Go to origin node for array bounds
+ in case they were rewritten by expander (Force_Evaluation).
+
+ * targparm.adb (Get_Target_Parameters): Correct check for
+ Suppress_Exception_Locations.
+
+2009-04-15 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch6.adb (Expand_Inlined_Call): If an in-parameter in a call to be
+ inlined is of an array type that is not bit-packed, use a renaming
+ declaration to capture its value, rather than a constant declaration.
+
+2009-04-15 Robert Dewar <dewar@adacore.com>
+
+ * rtsfind.adb: Minor reformatting.
+
+2009-04-15 Emmanuel Briot <briot@adacore.com>
+
+ * prj-part.adb, prj-tree.adb, prj-tree.ads (Restore_And_Free): renames
+ Restore, and free the saved context.
+
+2009-04-15 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch3.adb (Analyze_Private_Extension_Declaration): Move error check
+ for illegal private extension from a synchronized interface parent in
+ front of check for illegal limited extension so that limited extension
+ from a synchronized interface will be rejected.
+ (Check_Ifaces): Check that a private extension that has a synchronized
+ interface as a progenitor must be explicitly declared synchronized.
+ Also check that a record extension cannot derive from a synchronized
+ interface.
+
+2009-04-15 Pascal Obry <obry@adacore.com>
+
+ * adaint.h (__gnat_unlink): Add spec.
+ (__gnat_rename): Likewise.
+
+2009-04-15 Vincent Celier <celier@adacore.com>
+
+ * prj-nmsc.adb: Minor spelling error corrections in error messages
+
+2009-04-15 Robert Dewar <dewar@adacore.com>
+
+ * sinfo.ads: Minor comment update
+
+ * opt.ads: Minor comment updates
+
+ * checks.adb (Enable_Overflow_Check): Do not set Do_Overflow_Check for
+ modular type.
+
+2009-04-15 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_disp.ads, exp_disp.adb (Register_Primitive): Is now a function
+ that generates the code needed to update a dispatch table when a
+ primitive operation is declared with a subprogram body without previous
+ spec. Insertion of the generated code is responsibility of the caller.
+ (Make_DT): When building static tables, append the code created by
+ Register_Primitive to update a secondary table after it has been
+ constructed.
+
+ * exp_ch3.adb, exp_ch6.adb: use new version of Register_Primitive.
+
+ * sem_disp.adb (Check_Dispatching_Operation): Call Register_Primitive
+ on an overriding operation that implements an interface operation only
+ if not building static dispatch tables.
+
+2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * a-caldel-vms.adb (To_Duration): Declare a "safe" end of time which
+ does not cause overflow when converted to Duration. Use the safe value
+ as the maximum allowable time delay..
+
+2009-04-15 Jerome Lambourg <lambourg@adacore.com>
+
+ * g-comlin.adb (Set_Command_Line): When adding a switch with attached
+ parameter, specify that the delimiter is NUL, otherwise "-j2" will be
+ translated to "-j 2".
+
+2009-04-15 Bob Duff <duff@adacore.com>
+
+ * rtsfind.adb (Maybe_Add_With): Split out procedure to add implicit
+ with_clauses, to avoid code duplication. Change this processing so we
+ always add a with_clause on the main unit if needed.
+
+2009-04-15 Pascal Obry <obry@adacore.com>
+
+ Add support for Win32 native encoding for delete/rename routines.
+
+ * adaint.c (__gnat_unlink): New routine.
+ (__gnat_rename): New routine.
+ Simple wrapper routines used to convert to proper encoding on
+ Windows.
+
+ * s-os_lib.adb: Use __gnat_unlink and __gnat_rename instead of direct
+ call to the C library.
+
+ * g-sercom-mingw.adb, s-win32.ads: Update Win32 binding.
+
+2009-04-15 Robert Dewar <dewar@adacore.com>
+
+ * s-tassta.adb: Minor reformatting
+
+2009-04-15 Robert Dewar <dewar@adacore.com>
+
+ * frontend.adb (Frontend): Set proper default for
+ Warn_On_Non_Local_Exception.
+
+ * opt.ads (Exception_Handler_Encountered): New flag
+ (No_Warn_On_Non_Local_Exception): New flag
+
+ * par-ch11.adb (P_Exception_Handler): Set Exception_Handler_Encountered
+
+ * sem_warn.adb (Set_Warning_Switch): Set No_Warn_On_Non_Local_Exception
+ (Set_Dot_Warning_Switch): Set No_Warn_On_Non_Local_Exception
+
+2009-04-15 Cyrille Comar <comar@adacore.com>
+
+ * s-tassta.adb, a-exextr.adb, a-elchha.adb
+ (Ada.Exception.Last_Chance_Handler): Do not print unhandled exception
+ message when exception traces are active since it would generate
+ redundant information.
+ (Exception_Traces.Notify_Exception): put message output by a critical
+ section to avoid unsynchronized output.
+ (Trace_Unhandled_Exception_In_Task): put message output by a critical
+ section to avoid unsynchronized output.
+
+2009-04-15 Emmanuel Briot <briot@adacore.com>
+
+ * g-comlin.adb, prj-tree.adb, prj-tree.ads, prj.adb, prj.ads
+ (Free): New subprogram.
+
+2009-04-15 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * a-calend.adb: Add new constant Nanos_In_Four_Years.
+ (Formatting_Operations.Time_Of): Change the way four year chunks of
+ nanoseconds are added to the intermediate result.
+
+2009-04-15 Nicolas Setton <setton@adacore.com>
+
+ * sysdep.c: Add __APPLE__ in the list of systems where get_immediate
+ does not need to wait for a carriage return.
+
+2009-04-15 Tristan Gingold <gingold@adacore.com>
+
+ * bindgen.adb: Do not generate adafinal if No_Finalization restriction
+ is set.
+
+2009-04-15 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Freeze_Entity): improve error message for improper use of
+ incomplete types.
+ Diagnose additional illegal uses of incomplete types in formal parts.
+ appearing in formal parts.
+
+ * sem_ch6.adb (Process_Formals, Analyze_Return_Type): ditto.
+
+2009-04-15 Robert Dewar <dewar@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Allocator): Install test for object too large.
+
+2009-04-15 Nicolas Roche <roche@adacore.com>
+
+ * adaint.c: Add function __gnat_lwp_self that retrieves the LWP of the
+ current thread.
+
+ * s-osinte-linux.ads: Import the __gnat_lwp_self function as lwp_self
+
+ * s-taprop-linux.adb (Enter_Task): Store the LWP in the TCB
+
2009-04-15 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb: improve error message on exponentiation.
@@ -70,6 +1249,7 @@
* gcc-interface/Make-lang.in: Update dependencies.
* gcc-interface/Makefile.in: Fix VxWorks target pairs.
+ Update xenomai target pairs.
2009-04-15 Javier Miranda <miranda@adacore.com>
diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl
index 1a85461669c..66c48e06093 100644
--- a/gcc/ada/Makefile.rtl
+++ b/gcc/ada/Makefile.rtl
@@ -416,6 +416,14 @@ GNATRTL_NONTASKING_OBJS= \
s-caun32$(objext) \
s-caun64$(objext) \
s-chepoo$(objext) \
+ s-conca2$(objext) \
+ s-conca3$(objext) \
+ s-conca4$(objext) \
+ s-conca5$(objext) \
+ s-conca6$(objext) \
+ s-conca7$(objext) \
+ s-conca8$(objext) \
+ s-conca9$(objext) \
s-crtl$(objext) \
s-crc32$(objext) \
s-direio$(objext) \
diff --git a/gcc/ada/a-caldel-vms.adb b/gcc/ada/a-caldel-vms.adb
index b60bc8b5cb1..8b7715744d6 100644
--- a/gcc/ada/a-caldel-vms.adb
+++ b/gcc/ada/a-caldel-vms.adb
@@ -75,8 +75,20 @@ package body Ada.Calendar.Delays is
-----------------
function To_Duration (T : Time) return Duration is
+ Safe_Ada_High : constant Time := Time_Of (2250, 1, 1, 0.0);
+ -- A value distant enough to emulate "end of time" but which does not
+ -- cause overflow.
+
+ Safe_T : Time;
+
begin
- return OSP.To_Duration (OSP.OS_Time (T), OSP.Absolute_Calendar);
+ if T > Safe_Ada_High then
+ Safe_T := Safe_Ada_High;
+ else
+ Safe_T := T;
+ end if;
+
+ return OSP.To_Duration (OSP.OS_Time (Safe_T), OSP.Absolute_Calendar);
end To_Duration;
--------------------
diff --git a/gcc/ada/a-calend.adb b/gcc/ada/a-calend.adb
index a2759b53a89..9aa88521b90 100644
--- a/gcc/ada/a-calend.adb
+++ b/gcc/ada/a-calend.adb
@@ -148,6 +148,7 @@ package body Ada.Calendar is
Ada_Min_Year : constant Year_Number := Year_Number'First;
Secs_In_Four_Years : constant := (3 * 365 + 366) * Secs_In_Day;
Secs_In_Non_Leap_Year : constant := 365 * Secs_In_Day;
+ Nanos_In_Four_Years : constant := Secs_In_Four_Years * Nano;
-- Lower and upper bound of Ada time. The zero (0) value of type Time is
-- positioned at year 2150. Note that the lower and upper bound account
@@ -1317,7 +1318,9 @@ package body Ada.Calendar is
-- the input date.
Count := (Year - Year_Number'First) / 4;
- Res_N := Res_N + Time_Rep (Count) * Secs_In_Four_Years * Nano;
+ for Four_Year_Segments in 1 .. Count loop
+ Res_N := Res_N + Nanos_In_Four_Years;
+ end loop;
-- Note that non-leap centennial years are automatically considered
-- leap in the operation above. An adjustment of several days is
@@ -1471,39 +1474,15 @@ package body Ada.Calendar is
Nanos_In_56_Years : constant := (14 * 366 + 42 * 365) * Nanos_In_Day;
- -- Base C types. There is no point dragging in Interfaces.C just for
- -- these four types.
-
- type char_Pointer is access Character;
- subtype int is Integer;
subtype long is Long_Integer;
type long_Pointer is access all long;
- -- The Ada equivalent of struct tm and type time_t
-
- type tm is record
- tm_sec : int; -- seconds after the minute (0 .. 60)
- tm_min : int; -- minutes after the hour (0 .. 59)
- tm_hour : int; -- hours since midnight (0 .. 24)
- tm_mday : int; -- day of the month (1 .. 31)
- tm_mon : int; -- months since January (0 .. 11)
- tm_year : int; -- years since 1900
- tm_wday : int; -- days since Sunday (0 .. 6)
- tm_yday : int; -- days since January 1 (0 .. 365)
- tm_isdst : int; -- Daylight Savings Time flag (-1 .. 1)
- tm_gmtoff : long; -- offset from UTC in seconds
- tm_zone : char_Pointer; -- timezone abbreviation
- end record;
-
- type tm_Pointer is access all tm;
-
subtype time_t is long;
type time_t_Pointer is access all time_t;
procedure localtime_tzoff
- (C : time_t_Pointer;
- res : tm_Pointer;
- off : long_Pointer);
+ (timer : time_t_Pointer;
+ off : long_Pointer);
pragma Import (C, localtime_tzoff, "__gnat_localtime_tzoff");
-- This is a lightweight wrapper around the system library function
-- localtime_r. Parameter 'off' captures the UTC offset which is either
@@ -1519,7 +1498,6 @@ package body Ada.Calendar is
Date_N : Time_Rep;
Offset : aliased long;
Secs_T : aliased time_t;
- Secs_TM : aliased tm;
begin
Date_N := Time_Rep (Date);
@@ -1565,7 +1543,6 @@ package body Ada.Calendar is
localtime_tzoff
(Secs_T'Unchecked_Access,
- Secs_TM'Unchecked_Access,
Offset'Unchecked_Access);
return Offset;
diff --git a/gcc/ada/a-convec.ads b/gcc/ada/a-convec.ads
index 5c79d875601..4b709659978 100644
--- a/gcc/ada/a-convec.ads
+++ b/gcc/ada/a-convec.ads
@@ -310,6 +310,7 @@ private
pragma Inline (Query_Element);
pragma Inline (Update_Element);
pragma Inline (Replace_Element);
+ pragma Inline (Is_Empty);
pragma Inline (Contains);
pragma Inline (Next);
pragma Inline (Previous);
diff --git a/gcc/ada/a-direct.adb b/gcc/ada/a-direct.adb
index 32ddce9e5b3..db9ef9f7c51 100644
--- a/gcc/ada/a-direct.adb
+++ b/gcc/ada/a-direct.adb
@@ -70,7 +70,7 @@ package body Ada.Directories is
type Search_Data is record
Is_Valid : Boolean := False;
- Name : Ada.Strings.Unbounded.Unbounded_String;
+ Name : Unbounded_String;
Pattern : Regexp;
Filter : Filter_Type;
Dir : Dir_Type_Value := No_Dir;
@@ -481,9 +481,7 @@ package body Ada.Directories is
C_Dir_Name : constant String := Directory & ASCII.NUL;
begin
- rmdir (C_Dir_Name);
-
- if System.OS_Lib.Is_Directory (Directory) then
+ if rmdir (C_Dir_Name) /= 0 then
raise Use_Error with
"deletion of directory """ & Directory & """ failed";
end if;
@@ -565,9 +563,7 @@ package body Ada.Directories is
C_Dir_Name : constant String := Directory & ASCII.NUL;
begin
- rmdir (C_Dir_Name);
-
- if System.OS_Lib.Is_Directory (Directory) then
+ if rmdir (C_Dir_Name) /= 0 then
raise Use_Error with
"directory tree rooted at """ &
Directory & """ could not be deleted";
@@ -1044,10 +1040,6 @@ package body Ada.Directories is
procedure Set_Directory (Directory : String) is
C_Dir_Name : constant String := Directory & ASCII.NUL;
-
- function chdir (Dir_Name : String) return Integer;
- pragma Import (C, chdir, "chdir");
-
begin
if not Is_Valid_Path_Name (Directory) then
raise Name_Error with
diff --git a/gcc/ada/a-elchha.adb b/gcc/ada/a-elchha.adb
index caa89ffb7b5..087e22f4ffb 100644
--- a/gcc/ada/a-elchha.adb
+++ b/gcc/ada/a-elchha.adb
@@ -79,7 +79,7 @@ begin
System.Soft_Links.Task_Termination_Handler :=
System.Soft_Links.Task_Termination_NT'Access;
- -- Let's shutdown the runtime now. The rest of the procedure needs to be
+ -- We shutdown the runtime now. The rest of the procedure needs to be
-- careful not to use anything that would require runtime support. In
-- particular, functions returning strings are banned since the sec stack
-- is no longer functional. This is particularly important to note for the
@@ -93,11 +93,16 @@ begin
System.Standard_Library.Adafinal;
+ -- Print a message only when exception traces are not active
+
+ if Exception_Trace /= RM_Convention then
+ null;
+
-- Check for special case of raising _ABORT_SIGNAL, which is not
-- really an exception at all. We recognize this by the fact that
-- it is the only exception whose name starts with underscore.
- if To_Ptr (Except.Id.Full_Name) (1) = '_' then
+ elsif To_Ptr (Except.Id.Full_Name) (1) = '_' then
To_Stderr (Nline);
To_Stderr ("Execution terminated by abort of environment task");
To_Stderr (Nline);
diff --git a/gcc/ada/a-except-2005.adb b/gcc/ada/a-except-2005.adb
index 9db770c3eb2..ad43e2121d1 100644
--- a/gcc/ada/a-except-2005.adb
+++ b/gcc/ada/a-except-2005.adb
@@ -457,6 +457,7 @@ package body Ada.Exceptions is
procedure Rcheck_30 (File : System.Address; Line : Integer);
procedure Rcheck_31 (File : System.Address; Line : Integer);
procedure Rcheck_32 (File : System.Address; Line : Integer);
+ procedure Rcheck_33 (File : System.Address; Line : Integer);
pragma Export (C, Rcheck_00, "__gnat_rcheck_00");
pragma Export (C, Rcheck_01, "__gnat_rcheck_01");
@@ -491,6 +492,7 @@ package body Ada.Exceptions is
pragma Export (C, Rcheck_30, "__gnat_rcheck_30");
pragma Export (C, Rcheck_31, "__gnat_rcheck_31");
pragma Export (C, Rcheck_32, "__gnat_rcheck_32");
+ pragma Export (C, Rcheck_33, "__gnat_rcheck_33");
-- None of these procedures ever returns (they raise an exception!). By
-- using pragma No_Return, we ensure that any junk code after the call,
@@ -528,6 +530,7 @@ package body Ada.Exceptions is
pragma No_Return (Rcheck_29);
pragma No_Return (Rcheck_30);
pragma No_Return (Rcheck_32);
+ pragma No_Return (Rcheck_33);
---------------------------------------------
-- Reason Strings for Run-Time Check Calls --
@@ -554,25 +557,27 @@ package body Ada.Exceptions is
Rmsg_13 : constant String := "tag check failed" & NUL;
Rmsg_14 : constant String := "access before elaboration" & NUL;
Rmsg_15 : constant String := "accessibility check failed" & NUL;
- Rmsg_16 : constant String := "all guards closed" & NUL;
- Rmsg_17 : constant String := "Current_Task referenced in entry" &
+ Rmsg_16 : constant String := "attempt to take address of" &
+ " intrinsic subprogram" & NUL;
+ Rmsg_17 : constant String := "all guards closed" & NUL;
+ Rmsg_18 : constant String := "Current_Task referenced in entry" &
" body" & NUL;
- Rmsg_18 : constant String := "duplicated entry address" & NUL;
- Rmsg_19 : constant String := "explicit raise" & NUL;
- Rmsg_20 : constant String := "finalize/adjust raised exception" & NUL;
- Rmsg_21 : constant String := "implicit return with No_Return" & NUL;
- Rmsg_22 : constant String := "misaligned address value" & NUL;
- Rmsg_23 : constant String := "missing return" & NUL;
- Rmsg_24 : constant String := "overlaid controlled object" & NUL;
- Rmsg_25 : constant String := "potentially blocking operation" & NUL;
- Rmsg_26 : constant String := "stubbed subprogram called" & NUL;
- Rmsg_27 : constant String := "unchecked union restriction" & NUL;
- Rmsg_28 : constant String := "actual/returned class-wide value "
- & "not transportable" & NUL;
- Rmsg_29 : constant String := "empty storage pool" & NUL;
- Rmsg_30 : constant String := "explicit raise" & NUL;
- Rmsg_31 : constant String := "infinite recursion" & NUL;
- Rmsg_32 : constant String := "object too large" & NUL;
+ Rmsg_19 : constant String := "duplicated entry address" & NUL;
+ Rmsg_20 : constant String := "explicit raise" & NUL;
+ Rmsg_21 : constant String := "finalize/adjust raised exception" & NUL;
+ Rmsg_22 : constant String := "implicit return with No_Return" & NUL;
+ Rmsg_23 : constant String := "misaligned address value" & NUL;
+ Rmsg_24 : constant String := "missing return" & NUL;
+ Rmsg_25 : constant String := "overlaid controlled object" & NUL;
+ Rmsg_26 : constant String := "potentially blocking operation" & NUL;
+ Rmsg_27 : constant String := "stubbed subprogram called" & NUL;
+ Rmsg_28 : constant String := "unchecked union restriction" & NUL;
+ Rmsg_29 : constant String := "actual/returned class-wide" &
+ " value not transportable" & NUL;
+ Rmsg_30 : constant String := "empty storage pool" & NUL;
+ Rmsg_31 : constant String := "explicit raise" & NUL;
+ Rmsg_32 : constant String := "infinite recursion" & NUL;
+ Rmsg_33 : constant String := "object too large" & NUL;
-----------------------
-- Polling Interface --
@@ -1161,7 +1166,7 @@ package body Ada.Exceptions is
procedure Rcheck_29 (File : System.Address; Line : Integer) is
begin
- Raise_Storage_Error_Msg (File, Line, Rmsg_29'Address);
+ Raise_Program_Error_Msg (File, Line, Rmsg_29'Address);
end Rcheck_29;
procedure Rcheck_30 (File : System.Address; Line : Integer) is
@@ -1179,6 +1184,11 @@ package body Ada.Exceptions is
Raise_Storage_Error_Msg (File, Line, Rmsg_32'Address);
end Rcheck_32;
+ procedure Rcheck_33 (File : System.Address; Line : Integer) is
+ begin
+ Raise_Storage_Error_Msg (File, Line, Rmsg_33'Address);
+ end Rcheck_33;
+
-------------
-- Reraise --
-------------
diff --git a/gcc/ada/a-except.adb b/gcc/ada/a-except.adb
index 9a07b2fb2ee..cf04fd46f3e 100644
--- a/gcc/ada/a-except.adb
+++ b/gcc/ada/a-except.adb
@@ -40,9 +40,7 @@
-- 2005 functionality is required. In particular, it is used for building
-- run times on all targets.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
pragma Style_Checks (All_Checks);
-- No subprogram ordering check, due to logical grouping
@@ -414,6 +412,7 @@ package body Ada.Exceptions is
procedure Rcheck_30 (File : System.Address; Line : Integer);
procedure Rcheck_31 (File : System.Address; Line : Integer);
procedure Rcheck_32 (File : System.Address; Line : Integer);
+ procedure Rcheck_33 (File : System.Address; Line : Integer);
pragma Export (C, Rcheck_00, "__gnat_rcheck_00");
pragma Export (C, Rcheck_01, "__gnat_rcheck_01");
@@ -448,6 +447,7 @@ package body Ada.Exceptions is
pragma Export (C, Rcheck_30, "__gnat_rcheck_30");
pragma Export (C, Rcheck_31, "__gnat_rcheck_31");
pragma Export (C, Rcheck_32, "__gnat_rcheck_32");
+ pragma Export (C, Rcheck_33, "__gnat_rcheck_33");
-- None of these procedures ever returns (they raise an exception!). By
-- using pragma No_Return, we ensure that any junk code after the call,
@@ -485,6 +485,7 @@ package body Ada.Exceptions is
pragma No_Return (Rcheck_29);
pragma No_Return (Rcheck_30);
pragma No_Return (Rcheck_32);
+ pragma No_Return (Rcheck_33);
---------------------------------------------
-- Reason Strings for Run-Time Check Calls --
@@ -511,25 +512,27 @@ package body Ada.Exceptions is
Rmsg_13 : constant String := "tag check failed" & NUL;
Rmsg_14 : constant String := "access before elaboration" & NUL;
Rmsg_15 : constant String := "accessibility check failed" & NUL;
- Rmsg_16 : constant String := "all guards closed" & NUL;
- Rmsg_17 : constant String := "Current_Task referenced in entry" &
+ Rmsg_16 : constant String := "attempt to take address of" &
+ " intrinsic subprogram" & NUL;
+ Rmsg_17 : constant String := "all guards closed" & NUL;
+ Rmsg_18 : constant String := "Current_Task referenced in entry" &
" body" & NUL;
- Rmsg_18 : constant String := "duplicated entry address" & NUL;
- Rmsg_19 : constant String := "explicit raise" & NUL;
- Rmsg_20 : constant String := "finalize/adjust raised exception" & NUL;
- Rmsg_21 : constant String := "implicit return with No_Return" & NUL;
- Rmsg_22 : constant String := "misaligned address value" & NUL;
- Rmsg_23 : constant String := "missing return" & NUL;
- Rmsg_24 : constant String := "overlaid controlled object" & NUL;
- Rmsg_25 : constant String := "potentially blocking operation" & NUL;
- Rmsg_26 : constant String := "stubbed subprogram called" & NUL;
- Rmsg_27 : constant String := "unchecked union restriction" & NUL;
- Rmsg_28 : constant String := "actual/returned class-wide value "
- & "not transportable" & NUL;
- Rmsg_29 : constant String := "empty storage pool" & NUL;
- Rmsg_30 : constant String := "explicit raise" & NUL;
- Rmsg_31 : constant String := "infinite recursion" & NUL;
- Rmsg_32 : constant String := "object too large" & NUL;
+ Rmsg_19 : constant String := "duplicated entry address" & NUL;
+ Rmsg_20 : constant String := "explicit raise" & NUL;
+ Rmsg_21 : constant String := "finalize/adjust raised exception" & NUL;
+ Rmsg_22 : constant String := "implicit return with No_Return" & NUL;
+ Rmsg_23 : constant String := "misaligned address value" & NUL;
+ Rmsg_24 : constant String := "missing return" & NUL;
+ Rmsg_25 : constant String := "overlaid controlled object" & NUL;
+ Rmsg_26 : constant String := "potentially blocking operation" & NUL;
+ Rmsg_27 : constant String := "stubbed subprogram called" & NUL;
+ Rmsg_28 : constant String := "unchecked union restriction" & NUL;
+ Rmsg_29 : constant String := "actual/returned class-wide" &
+ " value not transportable" & NUL;
+ Rmsg_30 : constant String := "empty storage pool" & NUL;
+ Rmsg_31 : constant String := "explicit raise" & NUL;
+ Rmsg_32 : constant String := "infinite recursion" & NUL;
+ Rmsg_33 : constant String := "object too large" & NUL;
-----------------------
-- Polling Interface --
@@ -1127,7 +1130,7 @@ package body Ada.Exceptions is
procedure Rcheck_29 (File : System.Address; Line : Integer) is
begin
- Raise_Storage_Error_Msg (File, Line, Rmsg_29'Address);
+ Raise_Program_Error_Msg (File, Line, Rmsg_29'Address);
end Rcheck_29;
procedure Rcheck_30 (File : System.Address; Line : Integer) is
@@ -1145,6 +1148,11 @@ package body Ada.Exceptions is
Raise_Storage_Error_Msg (File, Line, Rmsg_32'Address);
end Rcheck_32;
+ procedure Rcheck_33 (File : System.Address; Line : Integer) is
+ begin
+ Raise_Storage_Error_Msg (File, Line, Rmsg_33'Address);
+ end Rcheck_33;
+
-------------
-- Reraise --
-------------
diff --git a/gcc/ada/a-except.ads b/gcc/ada/a-except.ads
index 725bcb8bcb5..14aea1dd326 100644
--- a/gcc/ada/a-except.ads
+++ b/gcc/ada/a-except.ads
@@ -44,14 +44,12 @@
-- 2005 functionality is required. In particular, it is used for building
-- run times on all targets.
+pragma Compiler_Unit;
+
pragma Polling (Off);
-- We must turn polling off for this unit, because otherwise we get
-- elaboration circularities with ourself.
-pragma Warnings (Off);
-pragma Compiler_Unit;
-pragma Warnings (On);
-
with System;
with System.Parameters;
with System.Standard_Library;
diff --git a/gcc/ada/a-exextr.adb b/gcc/ada/a-exextr.adb
index 967a54b1099..2ea9a3ad1e5 100644
--- a/gcc/ada/a-exextr.adb
+++ b/gcc/ada/a-exextr.adb
@@ -101,9 +101,13 @@ package body Exception_Traces is
if not Excep.Id.Not_Handled_By_Others
and then
- (Exception_Trace = Every_Raise
- or else (Exception_Trace = Unhandled_Raise and then Is_Unhandled))
+ (Exception_Trace = Every_Raise
+ or else (Exception_Trace = Unhandled_Raise and then Is_Unhandled))
then
+ -- Exception trace messages need to be protected when several tasks
+ -- can issue them at the same time.
+
+ Lock_Task.all;
To_Stderr (Nline);
if Is_Unhandled then
@@ -113,6 +117,7 @@ package body Exception_Traces is
To_Stderr ("Exception raised");
To_Stderr (Nline);
To_Stderr (Tailored_Exception_Information (Excep.all));
+ Unlock_Task.all;
end if;
-- Call the user-specific actions
diff --git a/gcc/ada/a-tasatt.adb b/gcc/ada/a-tasatt.adb
index b1a6b2da52d..69c4b9bdf71 100644
--- a/gcc/ada/a-tasatt.adb
+++ b/gcc/ada/a-tasatt.adb
@@ -276,8 +276,7 @@ package body Ada.Task_Attributes is
-- For reference to directly addressed task attributes
pragma Warnings (On);
- -- End of warnings off region for directly addressed
- -- attribute conversion functions.
+ -- End warnings off region for directly addressed attribute conversions
function To_Access_Address is new Ada.Unchecked_Conversion
(Access_Node, Access_Address);
@@ -307,8 +306,6 @@ package body Ada.Task_Attributes is
(Local_Deallocator, Deallocator);
-- To defeat accessibility check
- pragma Warnings (On);
-
------------------------
-- Storage Management --
------------------------
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index 7d35f11b3e1..9ab2c201970 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -82,6 +82,9 @@
#include <Rtapi.h>
#else
#include "mingw32.h"
+
+/* Current code page to use, set in initialize.c. */
+UINT CurrentCodePage;
#endif
#include <sys/utime.h>
@@ -234,9 +237,11 @@ struct vstring
#endif
/* Check for cross-compilation */
-#ifdef CROSS_DIRECTORY_STRUCTURE
+#if defined (CROSS_COMPILE) || defined (CROSS_DIRECTORY_STRUCTURE)
+#define IS_CROSS 1
int __gnat_is_cross_compiler = 1;
#else
+#undef IS_CROSS
int __gnat_is_cross_compiler = 0;
#endif
@@ -326,6 +331,10 @@ const int __gnat_vmsp = 0;
int __gnat_max_path_len = GNAT_MAX_PATH_LEN;
int max_path_len = GNAT_MAX_PATH_LEN;
+/* Control whether we can use ACL on Windows. */
+
+int __gnat_use_acl = 1;
+
/* The following macro HAVE_READDIR_R should be defined if the
system provides the routine readdir_r. */
#undef HAVE_READDIR_R
@@ -469,7 +478,7 @@ __gnat_symlink (char *oldpath ATTRIBUTE_UNUSED,
/* Try to lock a file, return 1 if success. */
#if defined (__vxworks) || defined (__nucleus__) || defined (MSDOS) \
- || defined (_WIN32)
+ || defined (_WIN32) || defined (__EMX__) || defined (VMS)
/* Version that does not use link. */
@@ -482,8 +491,8 @@ __gnat_try_lock (char *dir, char *file)
TCHAR wfile[GNAT_MAX_PATH_LEN];
TCHAR wdir[GNAT_MAX_PATH_LEN];
- S2WSU (wdir, dir, GNAT_MAX_PATH_LEN);
- S2WSU (wfile, file, GNAT_MAX_PATH_LEN);
+ S2WSC (wdir, dir, GNAT_MAX_PATH_LEN);
+ S2WSC (wfile, file, GNAT_MAX_PATH_LEN);
_stprintf (wfull_path, _T("%s%c%s"), wdir, _T(DIR_SEPARATOR), wfile);
fd = _topen (wfull_path, O_CREAT | O_EXCL, 0600);
@@ -501,27 +510,6 @@ __gnat_try_lock (char *dir, char *file)
return 1;
}
-#elif defined (__EMX__) || defined (VMS)
-
-/* More cases that do not use link; identical code, to solve too long
- line problem ??? */
-
-int
-__gnat_try_lock (char *dir, char *file)
-{
- char full_path[256];
- int fd;
-
- sprintf (full_path, "%s%c%s", dir, DIR_SEPARATOR, file);
- fd = open (full_path, O_CREAT | O_EXCL, 0600);
-
- if (fd < 0)
- return 0;
-
- close (fd);
- return 1;
-}
-
#else
/* Version using link(), more secure over NFS. */
@@ -606,7 +594,7 @@ __gnat_get_current_dir (char *dir, int *length)
_tgetcwd (wdir, *length);
- WS2SU (dir, wdir, GNAT_MAX_PATH_LEN);
+ WS2SC (dir, wdir, GNAT_MAX_PATH_LEN);
#elif defined (VMS)
/* Force Unix style, which is what GNAT uses internally. */
@@ -682,8 +670,8 @@ __gnat_os_filename (char *filename, char *w_filename ATTRIBUTE_UNUSED,
char *os_name, int *o_length,
char *encoding ATTRIBUTE_UNUSED, int *e_length)
{
-#if defined (_WIN32) && ! defined (__vxworks) && ! defined (CROSS_DIRECTORY_STRUCTURE)
- WS2SU (os_name, (TCHAR *)w_filename, o_length);
+#if defined (_WIN32) && ! defined (__vxworks) && ! defined (IS_CROSS)
+ WS2SC (os_name, (TCHAR *)w_filename, (DWORD)o_length);
*o_length = strlen (os_name);
strcpy (encoding, "encoding=utf8");
*e_length = strlen (encoding);
@@ -694,16 +682,87 @@ __gnat_os_filename (char *filename, char *w_filename ATTRIBUTE_UNUSED,
#endif
}
+/* Delete a file. */
+
+int
+__gnat_unlink (char *path)
+{
+#if defined (__MINGW32__) && ! defined (__vxworks) && ! defined (IS_CROSS)
+ {
+ TCHAR wpath[GNAT_MAX_PATH_LEN];
+
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
+ return _tunlink (wpath);
+ }
+#else
+ return unlink (path);
+#endif
+}
+
+/* Rename a file. */
+
+int
+__gnat_rename (char *from, char *to)
+{
+#if defined (__MINGW32__) && ! defined (__vxworks) && ! defined (IS_CROSS)
+ {
+ TCHAR wfrom[GNAT_MAX_PATH_LEN], wto[GNAT_MAX_PATH_LEN];
+
+ S2WSC (wfrom, from, GNAT_MAX_PATH_LEN);
+ S2WSC (wto, to, GNAT_MAX_PATH_LEN);
+ return _trename (wfrom, wto);
+ }
+#else
+ return rename (from, to);
+#endif
+}
+
+/* Changing directory. */
+
+int
+__gnat_chdir (char *path)
+{
+#if defined (__MINGW32__) && ! defined (__vxworks) && ! defined (IS_CROSS)
+ {
+ TCHAR wpath[GNAT_MAX_PATH_LEN];
+
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
+ return _tchdir (wpath);
+ }
+#else
+ return chdir (path);
+#endif
+}
+
+/* Removing a directory. */
+
+int
+__gnat_rmdir (char *path)
+{
+#if defined (__MINGW32__) && ! defined (__vxworks) && ! defined (IS_CROSS)
+ {
+ TCHAR wpath[GNAT_MAX_PATH_LEN];
+
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
+ return _trmdir (wpath);
+ }
+#else
+ return rmdir (path);
+#endif
+}
+
FILE *
__gnat_fopen (char *path, char *mode, int encoding ATTRIBUTE_UNUSED)
{
-#if defined (_WIN32) && ! defined (__vxworks) && ! defined (CROSS_DIRECTORY_STRUCTURE)
+#if defined (_WIN32) && ! defined (__vxworks) && ! defined (IS_CROSS)
TCHAR wpath[GNAT_MAX_PATH_LEN];
TCHAR wmode[10];
S2WS (wmode, mode, 10);
- if (encoding == Encoding_UTF8)
+ if (encoding == Encoding_Unspecified)
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
+ else if (encoding == Encoding_UTF8)
S2WSU (wpath, path, GNAT_MAX_PATH_LEN);
else
S2WS (wpath, path, GNAT_MAX_PATH_LEN);
@@ -719,13 +778,15 @@ __gnat_fopen (char *path, char *mode, int encoding ATTRIBUTE_UNUSED)
FILE *
__gnat_freopen (char *path, char *mode, FILE *stream, int encoding ATTRIBUTE_UNUSED)
{
-#if defined (_WIN32) && ! defined (__vxworks) && ! defined (CROSS_DIRECTORY_STRUCTURE)
+#if defined (_WIN32) && ! defined (__vxworks) && ! defined (IS_CROSS)
TCHAR wpath[GNAT_MAX_PATH_LEN];
TCHAR wmode[10];
S2WS (wmode, mode, 10);
- if (encoding == Encoding_UTF8)
+ if (encoding == Encoding_Unspecified)
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
+ else if (encoding == Encoding_UTF8)
S2WSU (wpath, path, GNAT_MAX_PATH_LEN);
else
S2WS (wpath, path, GNAT_MAX_PATH_LEN);
@@ -757,7 +818,7 @@ __gnat_open_read (char *path, int fmode)
{
TCHAR wpath[GNAT_MAX_PATH_LEN];
- S2WSU (wpath, path, GNAT_MAX_PATH_LEN);
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
fd = _topen (wpath, O_RDONLY | o_fmode, 0444);
}
#else
@@ -798,7 +859,7 @@ __gnat_open_rw (char *path, int fmode)
{
TCHAR wpath[GNAT_MAX_PATH_LEN];
- S2WSU (wpath, path, GNAT_MAX_PATH_LEN);
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
fd = _topen (wpath, O_RDWR | o_fmode, PERM);
}
#else
@@ -824,7 +885,7 @@ __gnat_open_create (char *path, int fmode)
{
TCHAR wpath[GNAT_MAX_PATH_LEN];
- S2WSU (wpath, path, GNAT_MAX_PATH_LEN);
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
fd = _topen (wpath, O_WRONLY | O_CREAT | O_TRUNC | o_fmode, PERM);
}
#else
@@ -846,7 +907,7 @@ __gnat_create_output_file (char *path)
{
TCHAR wpath[GNAT_MAX_PATH_LEN];
- S2WSU (wpath, path, GNAT_MAX_PATH_LEN);
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
fd = _topen (wpath, O_WRONLY | O_CREAT | O_TRUNC | O_TEXT, PERM);
}
#else
@@ -872,7 +933,7 @@ __gnat_open_append (char *path, int fmode)
{
TCHAR wpath[GNAT_MAX_PATH_LEN];
- S2WSU (wpath, path, GNAT_MAX_PATH_LEN);
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
fd = _topen (wpath, O_WRONLY | O_CREAT | O_APPEND | o_fmode, PERM);
}
#else
@@ -900,7 +961,7 @@ __gnat_open_new (char *path, int fmode)
{
TCHAR wpath[GNAT_MAX_PATH_LEN];
- S2WSU (wpath, path, GNAT_MAX_PATH_LEN);
+ S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
fd = _topen (wpath, O_WRONLY | O_CREAT | O_EXCL | o_fmode, PERM);
}
#else
@@ -1053,7 +1114,7 @@ DIR* __gnat_opendir (char *name)
#elif defined (__MINGW32__)
TCHAR wname[GNAT_MAX_PATH_LEN];
- S2WSU (wname, name, GNAT_MAX_PATH_LEN);
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN);
return (DIR*)_topendir (wname);
#else
@@ -1077,7 +1138,7 @@ __gnat_readdir (DIR *dirp, char *buffer, int *len)
if (dirent != NULL)
{
- WS2SU (buffer, dirent->d_name, GNAT_MAX_PATH_LEN);
+ WS2SC (buffer, dirent->d_name, GNAT_MAX_PATH_LEN);
*len = strlen (buffer);
return buffer;
@@ -1183,7 +1244,7 @@ __gnat_file_time_name (char *name)
time_t ret = -1;
TCHAR wname[GNAT_MAX_PATH_LEN];
- S2WSU (wname, name, GNAT_MAX_PATH_LEN);
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN);
HANDLE h = CreateFile
(wname, GENERIC_READ, FILE_SHARE_READ, 0,
@@ -1320,7 +1381,7 @@ __gnat_set_file_time_name (char *name, time_t time_stamp)
} t_write;
TCHAR wname[GNAT_MAX_PATH_LEN];
- S2WSU (wname, name, GNAT_MAX_PATH_LEN);
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN);
HANDLE h = CreateFile
(wname, GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
@@ -1523,7 +1584,8 @@ __gnat_get_libraries_from_registry (void)
{
char *result = (char *) "";
-#if defined (_WIN32) && ! defined (__vxworks) && ! defined (CROSS_DIRECTORY_STRUCTURE) && ! defined (RTX)
+#if defined (_WIN32) && ! defined (__vxworks) && ! defined (IS_CROSS) \
+ && ! defined (RTX)
HKEY reg_key;
DWORD name_size, value_size;
@@ -1551,7 +1613,7 @@ __gnat_get_libraries_from_registry (void)
for (index = 0; res == ERROR_SUCCESS; index++)
{
value_size = name_size = 256;
- res = RegEnumValueA (reg_key, index, (TCHAR*)name, &name_size, 0,
+ res = RegEnumValueA (reg_key, index, name, &name_size, 0,
&type, (LPBYTE)value, &value_size);
if (res == ERROR_SUCCESS && type == REG_SZ)
@@ -1583,7 +1645,7 @@ __gnat_stat (char *name, struct stat *statbuf)
int name_len;
TCHAR last_char;
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
name_len = _tcslen (wname);
if (name_len > GNAT_MAX_PATH_LEN)
@@ -1603,7 +1665,7 @@ __gnat_stat (char *name, struct stat *statbuf)
if (name_len == 2 && wname[1] == _T(':'))
_tcscat (wname, _T("\\"));
- return _tstat (wname, statbuf);
+ return _tstat (wname, (struct _stat *)statbuf);
#else
return stat (name, statbuf);
@@ -1619,7 +1681,7 @@ __gnat_file_exists (char *name)
offset the _stat() routine fails on specific files like CON: */
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
return GetFileAttributes (wname) != INVALID_FILE_ATTRIBUTES;
#else
struct stat statbuf;
@@ -1803,12 +1865,18 @@ __gnat_is_readable_file (char *name)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
GENERIC_MAPPING GenericMapping;
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ if (__gnat_use_acl)
+ {
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
+
+ ZeroMemory (&GenericMapping, sizeof (GENERIC_MAPPING));
+ GenericMapping.GenericRead = GENERIC_READ;
- ZeroMemory (&GenericMapping, sizeof (GENERIC_MAPPING));
- GenericMapping.GenericRead = GENERIC_READ;
+ return __gnat_check_OWNER_ACL (wname, FILE_READ_DATA, GenericMapping);
+ }
+ else
+ return 1;
- return __gnat_check_OWNER_ACL (wname, FILE_READ_DATA, GenericMapping);
#else
int ret;
int mode;
@@ -1827,14 +1895,20 @@ __gnat_is_writable_file (char *name)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
GENERIC_MAPPING GenericMapping;
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
+
+ if (__gnat_use_acl)
+ {
+ ZeroMemory (&GenericMapping, sizeof (GENERIC_MAPPING));
+ GenericMapping.GenericWrite = GENERIC_WRITE;
- ZeroMemory (&GenericMapping, sizeof (GENERIC_MAPPING));
- GenericMapping.GenericWrite = GENERIC_WRITE;
+ return __gnat_check_OWNER_ACL
+ (wname, FILE_WRITE_DATA | FILE_APPEND_DATA, GenericMapping)
+ && !(GetFileAttributes (wname) & FILE_ATTRIBUTE_READONLY);
+ }
+ else
+ return !(GetFileAttributes (wname) & FILE_ATTRIBUTE_READONLY);
- return __gnat_check_OWNER_ACL
- (wname, FILE_WRITE_DATA | FILE_APPEND_DATA, GenericMapping)
- && !(GetFileAttributes (wname) & FILE_ATTRIBUTE_READONLY);
#else
int ret;
int mode;
@@ -1853,12 +1927,19 @@ __gnat_is_executable_file (char *name)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
GENERIC_MAPPING GenericMapping;
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
+
+ if (__gnat_use_acl)
+ {
+ ZeroMemory (&GenericMapping, sizeof (GENERIC_MAPPING));
+ GenericMapping.GenericExecute = GENERIC_EXECUTE;
- ZeroMemory (&GenericMapping, sizeof (GENERIC_MAPPING));
- GenericMapping.GenericExecute = GENERIC_EXECUTE;
+ return __gnat_check_OWNER_ACL (wname, FILE_EXECUTE, GenericMapping);
+ }
+ else
+ return GetFileAttributes (wname) != INVALID_FILE_ATTRIBUTES
+ && _tcsstr (wname, _T(".exe")) - wname == (_tcslen (wname) - 4);
- return __gnat_check_OWNER_ACL (wname, FILE_EXECUTE, GenericMapping);
#else
int ret;
int mode;
@@ -1876,9 +1957,11 @@ __gnat_set_writable (char *name)
#if defined (_WIN32) && !defined (RTX)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
+
+ if (__gnat_use_acl)
+ __gnat_set_OWNER_ACL (wname, GRANT_ACCESS, FILE_GENERIC_WRITE);
- __gnat_set_OWNER_ACL (wname, GRANT_ACCESS, FILE_GENERIC_WRITE);
SetFileAttributes
(wname, GetFileAttributes (wname) & ~FILE_ATTRIBUTE_READONLY);
#elif ! defined (__vxworks) && ! defined(__nucleus__)
@@ -1898,9 +1981,12 @@ __gnat_set_executable (char *name)
#if defined (_WIN32) && !defined (RTX)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ if (__gnat_use_acl)
+ {
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
- __gnat_set_OWNER_ACL (wname, GRANT_ACCESS, FILE_GENERIC_EXECUTE);
+ __gnat_set_OWNER_ACL (wname, GRANT_ACCESS, FILE_GENERIC_EXECUTE);
+ }
#elif ! defined (__vxworks) && ! defined(__nucleus__)
struct stat statbuf;
@@ -1918,12 +2004,14 @@ __gnat_set_non_writable (char *name)
#if defined (_WIN32) && !defined (RTX)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
+
+ if (__gnat_use_acl)
+ __gnat_set_OWNER_ACL
+ (wname, DENY_ACCESS,
+ FILE_WRITE_DATA | FILE_APPEND_DATA |
+ FILE_WRITE_EA | FILE_WRITE_ATTRIBUTES);
- __gnat_set_OWNER_ACL
- (wname, DENY_ACCESS,
- FILE_WRITE_DATA | FILE_APPEND_DATA |
- FILE_WRITE_EA | FILE_WRITE_ATTRIBUTES);
SetFileAttributes
(wname, GetFileAttributes (wname) | FILE_ATTRIBUTE_READONLY);
#elif ! defined (__vxworks) && ! defined(__nucleus__)
@@ -1943,9 +2031,12 @@ __gnat_set_readable (char *name)
#if defined (_WIN32) && !defined (RTX)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ if (__gnat_use_acl)
+ {
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
- __gnat_set_OWNER_ACL (wname, GRANT_ACCESS, FILE_GENERIC_READ);
+ __gnat_set_OWNER_ACL (wname, GRANT_ACCESS, FILE_GENERIC_READ);
+ }
#elif ! defined (__vxworks) && ! defined(__nucleus__)
struct stat statbuf;
@@ -1962,9 +2053,12 @@ __gnat_set_non_readable (char *name)
#if defined (_WIN32) && !defined (RTX)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
- S2WSU (wname, name, GNAT_MAX_PATH_LEN + 2);
+ if (__gnat_use_acl)
+ {
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
- __gnat_set_OWNER_ACL (wname, DENY_ACCESS, FILE_GENERIC_READ);
+ __gnat_set_OWNER_ACL (wname, DENY_ACCESS, FILE_GENERIC_READ);
+ }
#elif ! defined (__vxworks) && ! defined(__nucleus__)
struct stat statbuf;
@@ -2237,7 +2331,7 @@ win32_no_block_spawn (char *command, char *args[])
int wsize = csize * 2;
TCHAR *wcommand = (TCHAR *) xmalloc (wsize);
- S2WSU (wcommand, full_command, wsize);
+ S2WSC (wcommand, full_command, wsize);
free (full_command);
@@ -2533,7 +2627,7 @@ __gnat_locate_exec_on_path (char *exec_name)
apath_val = alloca (EXPAND_BUFFER_SIZE);
- WS2SU (apath_val, wapath_val, EXPAND_BUFFER_SIZE);
+ WS2SC (apath_val, wapath_val, EXPAND_BUFFER_SIZE);
return __gnat_locate_exec (exec_name, apath_val);
#else
@@ -3123,7 +3217,7 @@ _flush_cache()
}
#endif
-#if defined (CROSS_DIRECTORY_STRUCTURE) \
+#if defined (IS_CROSS) \
|| (! ((defined (sparc) || defined (i386)) && defined (sun) \
&& defined (__SVR4)) \
&& ! (defined (linux) && (defined (i386) || defined (__x86_64__))) \
@@ -3346,3 +3440,13 @@ __gnat_pthread_setaffinity_np (pthread_t th ATTRIBUTE_UNUSED,
}
#endif
#endif
+
+#if defined (linux)
+/* There is no function in the glibc to retrieve the LWP of the current
+ thread. We need to do a system call in order to retrieve this
+ information. */
+#include <sys/syscall.h>
+void *__gnat_lwp_self (void) {
+ return (void *) syscall (__NR_gettid);
+}
+#endif
diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h
index 3c9e4c44730..2ecaf730528 100644
--- a/gcc/ada/adaint.h
+++ b/gcc/ada/adaint.h
@@ -39,8 +39,9 @@
#include <dirent.h>
/* Constants used for the form parameter encoding values */
-#define Encoding_UTF8 0
-#define Encoding_8bits 1
+#define Encoding_UTF8 0 /* UTF-8 */
+#define Encoding_8bits 1 /* Standard 8bits, CP_ACP on Windows. */
+#define Encoding_Unspecified 2 /* Based on GNAT_CODE_PAGE env variable. */
typedef long OS_Time; /* Type corresponding to GNAT.OS_Lib.OS_Time */
@@ -70,6 +71,11 @@ extern int __gnat_open_new_temp (char *, int);
extern int __gnat_mkdir (char *);
extern int __gnat_stat (char *,
struct stat *);
+extern int __gnat_unlink (char *);
+extern int __gnat_rename (char *, char *);
+extern int __gnat_chdir (char *);
+extern int __gnat_rmdir (char *);
+
extern FILE *__gnat_fopen (char *, char *, int);
extern FILE *__gnat_freopen (char *, char *, FILE *,
int);
diff --git a/gcc/ada/ali-util.adb b/gcc/ada/ali-util.adb
index 25a0d7a7d51..14ccd6707a0 100644
--- a/gcc/ada/ali-util.adb
+++ b/gcc/ada/ali-util.adb
@@ -139,7 +139,7 @@ package body ALI.Util is
Full_Name := Find_File (Fname, Osint.Source);
-- If we cannot find the file, then return an impossible checksum,
- -- impossible becaues checksums have the high order bit zero, so
+ -- impossible because checksums have the high order bit zero, so
-- that checksums do not match.
if Full_Name = No_File then
diff --git a/gcc/ada/atree.adb b/gcc/ada/atree.adb
index 027df3cdb18..79f2ffda5b5 100644
--- a/gcc/ada/atree.adb
+++ b/gcc/ada/atree.adb
@@ -38,13 +38,10 @@ pragma Style_Checks (All_Checks);
with Debug; use Debug;
with Nlists; use Nlists;
-with Elists; use Elists;
with Output; use Output;
with Sinput; use Sinput;
with Tree_IO; use Tree_IO;
-with GNAT.HTable; use GNAT.HTable;
-
package body Atree is
---------------
@@ -105,8 +102,6 @@ package body Atree is
use Atree_Private_Part;
-- We are also allowed to see our private data structures!
- function E_To_N is new Unchecked_Conversion (Entity_Kind, Node_Kind);
- function N_To_E is new Unchecked_Conversion (Node_Kind, Entity_Kind);
-- Functions used to store Entity_Kind value in Nkind field
-- The following declarations are used to store flags 65-72 in the
@@ -395,91 +390,6 @@ package body Atree is
function To_Flag_Word5_Ptr is new
Unchecked_Conversion (Union_Id_Ptr, Flag_Word5_Ptr);
- -- Default value used to initialize default nodes. Note that some of the
- -- fields get overwritten, and in particular, Nkind always gets reset.
-
- Default_Node : Node_Record := (
- Is_Extension => False,
- Pflag1 => False,
- Pflag2 => False,
- In_List => False,
- Unused_1 => False,
- Rewrite_Ins => False,
- Analyzed => False,
- Comes_From_Source => False, -- modified by Set_Comes_From_Source_Default
- Error_Posted => False,
- Flag4 => False,
-
- Flag5 => False,
- Flag6 => False,
- Flag7 => False,
- Flag8 => False,
- Flag9 => False,
- Flag10 => False,
- Flag11 => False,
- Flag12 => False,
-
- Flag13 => False,
- Flag14 => False,
- Flag15 => False,
- Flag16 => False,
- Flag17 => False,
- Flag18 => False,
-
- Nkind => N_Unused_At_Start,
-
- Sloc => No_Location,
- Link => Empty_List_Or_Node,
- Field1 => Empty_List_Or_Node,
- Field2 => Empty_List_Or_Node,
- Field3 => Empty_List_Or_Node,
- Field4 => Empty_List_Or_Node,
- Field5 => Empty_List_Or_Node);
-
- -- Default value used to initialize node extensions (i.e. the second
- -- and third and fourth components of an extended node). Note we are
- -- cheating a bit here when it comes to Node12, which really holds
- -- flags an (for the third component), the convention. But it works
- -- because Empty, False, Convention_Ada, all happen to be all zero bits.
-
- Default_Node_Extension : constant Node_Record := (
- Is_Extension => True,
- Pflag1 => False,
- Pflag2 => False,
- In_List => False,
- Unused_1 => False,
- Rewrite_Ins => False,
- Analyzed => False,
- Comes_From_Source => False,
- Error_Posted => False,
- Flag4 => False,
-
- Flag5 => False,
- Flag6 => False,
- Flag7 => False,
- Flag8 => False,
- Flag9 => False,
- Flag10 => False,
- Flag11 => False,
- Flag12 => False,
-
- Flag13 => False,
- Flag14 => False,
- Flag15 => False,
- Flag16 => False,
- Flag17 => False,
- Flag18 => False,
-
- Nkind => E_To_N (E_Void),
-
- Field6 => Empty_List_Or_Node,
- Field7 => Empty_List_Or_Node,
- Field8 => Empty_List_Or_Node,
- Field9 => Empty_List_Or_Node,
- Field10 => Empty_List_Or_Node,
- Field11 => Empty_List_Or_Node,
- Field12 => Empty_List_Or_Node);
-
--------------------------------------------------
-- Implementation of Tree Substitution Routines --
--------------------------------------------------
@@ -501,35 +411,6 @@ package body Atree is
Table_Increment => Alloc.Orig_Nodes_Increment,
Table_Name => "Orig_Nodes");
- ----------------------------------------
- -- Global_Variables for New_Copy_Tree --
- ----------------------------------------
-
- -- These global variables are used by New_Copy_Tree. See description
- -- of the body of this subprogram for details. Global variables can be
- -- safely used by New_Copy_Tree, since there is no case of a recursive
- -- call from the processing inside New_Copy_Tree.
-
- NCT_Hash_Threshhold : constant := 20;
- -- If there are more than this number of pairs of entries in the
- -- map, then Hash_Tables_Used will be set, and the hash tables will
- -- be initialized and used for the searches.
-
- NCT_Hash_Tables_Used : Boolean := False;
- -- Set to True if hash tables are in use
-
- NCT_Table_Entries : Nat;
- -- Count entries in table to see if threshhold is reached
-
- NCT_Hash_Table_Setup : Boolean := False;
- -- Set to True if hash table contains data. We set this True if we
- -- setup the hash table with data, and leave it set permanently
- -- from then on, this is a signal that second and subsequent users
- -- of the hash table must clear the old entries before reuse.
-
- subtype NCT_Header_Num is Int range 0 .. 511;
- -- Defines range of headers in hash tables (512 headers)
-
--------------------------
-- Paren_Count Handling --
--------------------------
@@ -1073,12 +954,6 @@ package body Atree is
Dummy := New_Node (N_Error, No_Location);
Set_Name1 (Error, Error_Name);
Set_Error_Posted (Error, True);
-
- -- Set global variables for New_Copy_Tree
-
- NCT_Hash_Tables_Used := False;
- NCT_Table_Entries := 0;
- NCT_Hash_Table_Setup := False;
end Initialize;
--------------------------
@@ -1154,939 +1029,6 @@ package body Atree is
return New_Id;
end New_Copy;
- -------------------
- -- New_Copy_Tree --
- -------------------
-
- -- Our approach here requires a two pass traversal of the tree. The
- -- first pass visits all nodes that eventually will be copied looking
- -- for defining Itypes. If any defining Itypes are found, then they are
- -- copied, and an entry is added to the replacement map. In the second
- -- phase, the tree is copied, using the replacement map to replace any
- -- Itype references within the copied tree.
-
- -- The following hash tables are used if the Map supplied has more
- -- than hash threshhold entries to speed up access to the map. If
- -- there are fewer entries, then the map is searched sequentially
- -- (because setting up a hash table for only a few entries takes
- -- more time than it saves.
-
- function New_Copy_Hash (E : Entity_Id) return NCT_Header_Num;
- -- Hash function used for hash operations
-
- -------------------
- -- New_Copy_Hash --
- -------------------
-
- function New_Copy_Hash (E : Entity_Id) return NCT_Header_Num is
- begin
- return Nat (E) mod (NCT_Header_Num'Last + 1);
- end New_Copy_Hash;
-
- ---------------
- -- NCT_Assoc --
- ---------------
-
- -- The hash table NCT_Assoc associates old entities in the table
- -- with their corresponding new entities (i.e. the pairs of entries
- -- presented in the original Map argument are Key-Element pairs).
-
- package NCT_Assoc is new Simple_HTable (
- Header_Num => NCT_Header_Num,
- Element => Entity_Id,
- No_Element => Empty,
- Key => Entity_Id,
- Hash => New_Copy_Hash,
- Equal => Types."=");
-
- ---------------------
- -- NCT_Itype_Assoc --
- ---------------------
-
- -- The hash table NCT_Itype_Assoc contains entries only for those
- -- old nodes which have a non-empty Associated_Node_For_Itype set.
- -- The key is the associated node, and the element is the new node
- -- itself (NOT the associated node for the new node).
-
- package NCT_Itype_Assoc is new Simple_HTable (
- Header_Num => NCT_Header_Num,
- Element => Entity_Id,
- No_Element => Empty,
- Key => Entity_Id,
- Hash => New_Copy_Hash,
- Equal => Types."=");
-
- -- Start of processing for New_Copy_Tree function
-
- function New_Copy_Tree
- (Source : Node_Id;
- Map : Elist_Id := No_Elist;
- New_Sloc : Source_Ptr := No_Location;
- New_Scope : Entity_Id := Empty) return Node_Id
- is
- Actual_Map : Elist_Id := Map;
- -- This is the actual map for the copy. It is initialized with the
- -- given elements, and then enlarged as required for Itypes that are
- -- copied during the first phase of the copy operation. The visit
- -- procedures add elements to this map as Itypes are encountered.
- -- The reason we cannot use Map directly, is that it may well be
- -- (and normally is) initialized to No_Elist, and if we have mapped
- -- entities, we have to reset it to point to a real Elist.
-
- function Assoc (N : Node_Or_Entity_Id) return Node_Id;
- -- Called during second phase to map entities into their corresponding
- -- copies using Actual_Map. If the argument is not an entity, or is not
- -- in Actual_Map, then it is returned unchanged.
-
- procedure Build_NCT_Hash_Tables;
- -- Builds hash tables (number of elements >= threshold value)
-
- function Copy_Elist_With_Replacement
- (Old_Elist : Elist_Id) return Elist_Id;
- -- Called during second phase to copy element list doing replacements
-
- procedure Copy_Itype_With_Replacement (New_Itype : Entity_Id);
- -- Called during the second phase to process a copied Itype. The actual
- -- copy happened during the first phase (so that we could make the entry
- -- in the mapping), but we still have to deal with the descendents of
- -- the copied Itype and copy them where necessary.
-
- function Copy_List_With_Replacement (Old_List : List_Id) return List_Id;
- -- Called during second phase to copy list doing replacements
-
- function Copy_Node_With_Replacement (Old_Node : Node_Id) return Node_Id;
- -- Called during second phase to copy node doing replacements
-
- procedure Visit_Elist (E : Elist_Id);
- -- Called during first phase to visit all elements of an Elist
-
- procedure Visit_Field (F : Union_Id; N : Node_Id);
- -- Visit a single field, recursing to call Visit_Node or Visit_List
- -- if the field is a syntactic descendent of the current node (i.e.
- -- its parent is Node N).
-
- procedure Visit_Itype (Old_Itype : Entity_Id);
- -- Called during first phase to visit subsidiary fields of a defining
- -- Itype, and also create a copy and make an entry in the replacement
- -- map for the new copy.
-
- procedure Visit_List (L : List_Id);
- -- Called during first phase to visit all elements of a List
-
- procedure Visit_Node (N : Node_Or_Entity_Id);
- -- Called during first phase to visit a node and all its subtrees
-
- -----------
- -- Assoc --
- -----------
-
- function Assoc (N : Node_Or_Entity_Id) return Node_Id is
- E : Elmt_Id;
- Ent : Entity_Id;
-
- begin
- if not Has_Extension (N) or else No (Actual_Map) then
- return N;
-
- elsif NCT_Hash_Tables_Used then
- Ent := NCT_Assoc.Get (Entity_Id (N));
-
- if Present (Ent) then
- return Ent;
- else
- return N;
- end if;
-
- -- No hash table used, do serial search
-
- else
- E := First_Elmt (Actual_Map);
- while Present (E) loop
- if Node (E) = N then
- return Node (Next_Elmt (E));
- else
- E := Next_Elmt (Next_Elmt (E));
- end if;
- end loop;
- end if;
-
- return N;
- end Assoc;
-
- ---------------------------
- -- Build_NCT_Hash_Tables --
- ---------------------------
-
- procedure Build_NCT_Hash_Tables is
- Elmt : Elmt_Id;
- Ent : Entity_Id;
- begin
- if NCT_Hash_Table_Setup then
- NCT_Assoc.Reset;
- NCT_Itype_Assoc.Reset;
- end if;
-
- Elmt := First_Elmt (Actual_Map);
- while Present (Elmt) loop
- Ent := Node (Elmt);
-
- -- Get new entity, and associate old and new
-
- Next_Elmt (Elmt);
- NCT_Assoc.Set (Ent, Node (Elmt));
-
- if Is_Type (Ent) then
- declare
- Anode : constant Entity_Id :=
- Associated_Node_For_Itype (Ent);
-
- begin
- if Present (Anode) then
-
- -- Enter a link between the associated node of the
- -- old Itype and the new Itype, for updating later
- -- when node is copied.
-
- NCT_Itype_Assoc.Set (Anode, Node (Elmt));
- end if;
- end;
- end if;
-
- Next_Elmt (Elmt);
- end loop;
-
- NCT_Hash_Tables_Used := True;
- NCT_Hash_Table_Setup := True;
- end Build_NCT_Hash_Tables;
-
- ---------------------------------
- -- Copy_Elist_With_Replacement --
- ---------------------------------
-
- function Copy_Elist_With_Replacement
- (Old_Elist : Elist_Id) return Elist_Id
- is
- M : Elmt_Id;
- New_Elist : Elist_Id;
-
- begin
- if No (Old_Elist) then
- return No_Elist;
-
- else
- New_Elist := New_Elmt_List;
-
- M := First_Elmt (Old_Elist);
- while Present (M) loop
- Append_Elmt (Copy_Node_With_Replacement (Node (M)), New_Elist);
- Next_Elmt (M);
- end loop;
- end if;
-
- return New_Elist;
- end Copy_Elist_With_Replacement;
-
- ---------------------------------
- -- Copy_Itype_With_Replacement --
- ---------------------------------
-
- -- This routine exactly parallels its phase one analog Visit_Itype,
- -- and like that routine, knows far too many semantic details about
- -- the descendents of Itypes and whether they need copying or not.
-
- procedure Copy_Itype_With_Replacement (New_Itype : Entity_Id) is
- begin
- -- Translate Next_Entity, Scope and Etype fields, in case they
- -- reference entities that have been mapped into copies.
-
- Set_Next_Entity (New_Itype, Assoc (Next_Entity (New_Itype)));
- Set_Etype (New_Itype, Assoc (Etype (New_Itype)));
-
- if Present (New_Scope) then
- Set_Scope (New_Itype, New_Scope);
- else
- Set_Scope (New_Itype, Assoc (Scope (New_Itype)));
- end if;
-
- -- Copy referenced fields
-
- if Is_Discrete_Type (New_Itype) then
- Set_Scalar_Range (New_Itype,
- Copy_Node_With_Replacement (Scalar_Range (New_Itype)));
-
- elsif Has_Discriminants (Base_Type (New_Itype)) then
- Set_Discriminant_Constraint (New_Itype,
- Copy_Elist_With_Replacement
- (Discriminant_Constraint (New_Itype)));
-
- elsif Is_Array_Type (New_Itype) then
- if Present (First_Index (New_Itype)) then
- Set_First_Index (New_Itype,
- First (Copy_List_With_Replacement
- (List_Containing (First_Index (New_Itype)))));
- end if;
-
- if Is_Packed (New_Itype) then
- Set_Packed_Array_Type (New_Itype,
- Copy_Node_With_Replacement
- (Packed_Array_Type (New_Itype)));
- end if;
- end if;
- end Copy_Itype_With_Replacement;
-
- --------------------------------
- -- Copy_List_With_Replacement --
- --------------------------------
-
- function Copy_List_With_Replacement
- (Old_List : List_Id) return List_Id
- is
- New_List : List_Id;
- E : Node_Id;
-
- begin
- if Old_List = No_List then
- return No_List;
-
- else
- New_List := Empty_List;
-
- E := First (Old_List);
- while Present (E) loop
- Append (Copy_Node_With_Replacement (E), New_List);
- Next (E);
- end loop;
-
- return New_List;
- end if;
- end Copy_List_With_Replacement;
-
- --------------------------------
- -- Copy_Node_With_Replacement --
- --------------------------------
-
- function Copy_Node_With_Replacement
- (Old_Node : Node_Id) return Node_Id
- is
- New_Node : Node_Id;
-
- procedure Adjust_Named_Associations
- (Old_Node : Node_Id;
- New_Node : Node_Id);
- -- If a call node has named associations, these are chained through
- -- the First_Named_Actual, Next_Named_Actual links. These must be
- -- propagated separately to the new parameter list, because these
- -- are not syntactic fields.
-
- function Copy_Field_With_Replacement
- (Field : Union_Id) return Union_Id;
- -- Given Field, which is a field of Old_Node, return a copy of it
- -- if it is a syntactic field (i.e. its parent is Node), setting
- -- the parent of the copy to poit to New_Node. Otherwise returns
- -- the field (possibly mapped if it is an entity).
-
- -------------------------------
- -- Adjust_Named_Associations --
- -------------------------------
-
- procedure Adjust_Named_Associations
- (Old_Node : Node_Id;
- New_Node : Node_Id)
- is
- Old_E : Node_Id;
- New_E : Node_Id;
-
- Old_Next : Node_Id;
- New_Next : Node_Id;
-
- begin
- Old_E := First (Parameter_Associations (Old_Node));
- New_E := First (Parameter_Associations (New_Node));
- while Present (Old_E) loop
- if Nkind (Old_E) = N_Parameter_Association
- and then Present (Next_Named_Actual (Old_E))
- then
- if First_Named_Actual (Old_Node)
- = Explicit_Actual_Parameter (Old_E)
- then
- Set_First_Named_Actual
- (New_Node, Explicit_Actual_Parameter (New_E));
- end if;
-
- -- Now scan parameter list from the beginning,to locate
- -- next named actual, which can be out of order.
-
- Old_Next := First (Parameter_Associations (Old_Node));
- New_Next := First (Parameter_Associations (New_Node));
-
- while Nkind (Old_Next) /= N_Parameter_Association
- or else Explicit_Actual_Parameter (Old_Next)
- /= Next_Named_Actual (Old_E)
- loop
- Next (Old_Next);
- Next (New_Next);
- end loop;
-
- Set_Next_Named_Actual
- (New_E, Explicit_Actual_Parameter (New_Next));
- end if;
-
- Next (Old_E);
- Next (New_E);
- end loop;
- end Adjust_Named_Associations;
-
- ---------------------------------
- -- Copy_Field_With_Replacement --
- ---------------------------------
-
- function Copy_Field_With_Replacement
- (Field : Union_Id) return Union_Id
- is
- begin
- if Field = Union_Id (Empty) then
- return Field;
-
- elsif Field in Node_Range then
- declare
- Old_N : constant Node_Id := Node_Id (Field);
- New_N : Node_Id;
-
- begin
- -- If syntactic field, as indicated by the parent pointer
- -- being set, then copy the referenced node recursively.
-
- if Parent (Old_N) = Old_Node then
- New_N := Copy_Node_With_Replacement (Old_N);
-
- if New_N /= Old_N then
- Set_Parent (New_N, New_Node);
- end if;
-
- -- For semantic fields, update possible entity reference
- -- from the replacement map.
-
- else
- New_N := Assoc (Old_N);
- end if;
-
- return Union_Id (New_N);
- end;
-
- elsif Field in List_Range then
- declare
- Old_L : constant List_Id := List_Id (Field);
- New_L : List_Id;
-
- begin
- -- If syntactic field, as indicated by the parent pointer,
- -- then recursively copy the entire referenced list.
-
- if Parent (Old_L) = Old_Node then
- New_L := Copy_List_With_Replacement (Old_L);
- Set_Parent (New_L, New_Node);
-
- -- For semantic list, just returned unchanged
-
- else
- New_L := Old_L;
- end if;
-
- return Union_Id (New_L);
- end;
-
- -- Anything other than a list or a node is returned unchanged
-
- else
- return Field;
- end if;
- end Copy_Field_With_Replacement;
-
- -- Start of processing for Copy_Node_With_Replacement
-
- begin
- if Old_Node <= Empty_Or_Error then
- return Old_Node;
-
- elsif Has_Extension (Old_Node) then
- return Assoc (Old_Node);
-
- else
- New_Node := New_Copy (Old_Node);
-
- -- If the node we are copying is the associated node of a
- -- previously copied Itype, then adjust the associated node
- -- of the copy of that Itype accordingly.
-
- if Present (Actual_Map) then
- declare
- E : Elmt_Id;
- Ent : Entity_Id;
-
- begin
- -- Case of hash table used
-
- if NCT_Hash_Tables_Used then
- Ent := NCT_Itype_Assoc.Get (Old_Node);
-
- if Present (Ent) then
- Set_Associated_Node_For_Itype (Ent, New_Node);
- end if;
-
- -- Case of no hash table used
-
- else
- E := First_Elmt (Actual_Map);
- while Present (E) loop
- if Is_Itype (Node (E))
- and then
- Old_Node = Associated_Node_For_Itype (Node (E))
- then
- Set_Associated_Node_For_Itype
- (Node (Next_Elmt (E)), New_Node);
- end if;
-
- E := Next_Elmt (Next_Elmt (E));
- end loop;
- end if;
- end;
- end if;
-
- -- Recursively copy descendents
-
- Set_Field1
- (New_Node, Copy_Field_With_Replacement (Field1 (New_Node)));
- Set_Field2
- (New_Node, Copy_Field_With_Replacement (Field2 (New_Node)));
- Set_Field3
- (New_Node, Copy_Field_With_Replacement (Field3 (New_Node)));
- Set_Field4
- (New_Node, Copy_Field_With_Replacement (Field4 (New_Node)));
- Set_Field5
- (New_Node, Copy_Field_With_Replacement (Field5 (New_Node)));
-
- -- Adjust Sloc of new node if necessary
-
- if New_Sloc /= No_Location then
- Set_Sloc (New_Node, New_Sloc);
-
- -- If we adjust the Sloc, then we are essentially making
- -- a completely new node, so the Comes_From_Source flag
- -- should be reset to the proper default value.
-
- Nodes.Table (New_Node).Comes_From_Source :=
- Default_Node.Comes_From_Source;
- end if;
-
- -- If the node is call and has named associations,
- -- set the corresponding links in the copy.
-
- if (Nkind (Old_Node) = N_Function_Call
- or else Nkind (Old_Node) = N_Entry_Call_Statement
- or else
- Nkind (Old_Node) = N_Procedure_Call_Statement)
- and then Present (First_Named_Actual (Old_Node))
- then
- Adjust_Named_Associations (Old_Node, New_Node);
- end if;
-
- -- Reset First_Real_Statement for Handled_Sequence_Of_Statements.
- -- The replacement mechanism applies to entities, and is not used
- -- here. Eventually we may need a more general graph-copying
- -- routine. For now, do a sequential search to find desired node.
-
- if Nkind (Old_Node) = N_Handled_Sequence_Of_Statements
- and then Present (First_Real_Statement (Old_Node))
- then
- declare
- Old_F : constant Node_Id := First_Real_Statement (Old_Node);
- N1, N2 : Node_Id;
-
- begin
- N1 := First (Statements (Old_Node));
- N2 := First (Statements (New_Node));
-
- while N1 /= Old_F loop
- Next (N1);
- Next (N2);
- end loop;
-
- Set_First_Real_Statement (New_Node, N2);
- end;
- end if;
- end if;
-
- -- All done, return copied node
-
- return New_Node;
- end Copy_Node_With_Replacement;
-
- -----------------
- -- Visit_Elist --
- -----------------
-
- procedure Visit_Elist (E : Elist_Id) is
- Elmt : Elmt_Id;
- begin
- if Present (E) then
- Elmt := First_Elmt (E);
-
- while Elmt /= No_Elmt loop
- Visit_Node (Node (Elmt));
- Next_Elmt (Elmt);
- end loop;
- end if;
- end Visit_Elist;
-
- -----------------
- -- Visit_Field --
- -----------------
-
- procedure Visit_Field (F : Union_Id; N : Node_Id) is
- begin
- if F = Union_Id (Empty) then
- return;
-
- elsif F in Node_Range then
-
- -- Copy node if it is syntactic, i.e. its parent pointer is
- -- set to point to the field that referenced it (certain
- -- Itypes will also meet this criterion, which is fine, since
- -- these are clearly Itypes that do need to be copied, since
- -- we are copying their parent.)
-
- if Parent (Node_Id (F)) = N then
- Visit_Node (Node_Id (F));
- return;
-
- -- Another case, if we are pointing to an Itype, then we want
- -- to copy it if its associated node is somewhere in the tree
- -- being copied.
-
- -- Note: the exclusion of self-referential copies is just an
- -- optimization, since the search of the already copied list
- -- would catch it, but it is a common case (Etype pointing
- -- to itself for an Itype that is a base type).
-
- elsif Has_Extension (Node_Id (F))
- and then Is_Itype (Entity_Id (F))
- and then Node_Id (F) /= N
- then
- declare
- P : Node_Id;
-
- begin
- P := Associated_Node_For_Itype (Node_Id (F));
- while Present (P) loop
- if P = Source then
- Visit_Node (Node_Id (F));
- return;
- else
- P := Parent (P);
- end if;
- end loop;
-
- -- An Itype whose parent is not being copied definitely
- -- should NOT be copied, since it does not belong in any
- -- sense to the copied subtree.
-
- return;
- end;
- end if;
-
- elsif F in List_Range
- and then Parent (List_Id (F)) = N
- then
- Visit_List (List_Id (F));
- return;
- end if;
- end Visit_Field;
-
- -----------------
- -- Visit_Itype --
- -----------------
-
- -- Note: we are relying on far too much semantic knowledge in this
- -- routine, it really should just do a blind replacement of all
- -- fields, or at least a more blind replacement. For example, we
- -- do not deal with corresponding record types, and that works
- -- because we have no Itypes of task types, but nowhere is there
- -- a guarantee that this will always be the case. ???
-
- procedure Visit_Itype (Old_Itype : Entity_Id) is
- New_Itype : Entity_Id;
- E : Elmt_Id;
- Ent : Entity_Id;
-
- begin
- -- Itypes that describe the designated type of access to subprograms
- -- have the structure of subprogram declarations, with signatures,
- -- etc. Either we duplicate the signatures completely, or choose to
- -- share such itypes, which is fine because their elaboration will
- -- have no side effects. In any case, this is additional semantic
- -- information that seems awkward to have in atree.
-
- if Ekind (Old_Itype) = E_Subprogram_Type then
- return;
- end if;
-
- New_Itype := New_Copy (Old_Itype);
-
- -- The new Itype has all the attributes of the old one, and
- -- we just copy the contents of the entity. However, the back-end
- -- needs different names for debugging purposes, so we create a
- -- new internal name by appending the letter 'c' (copy) to the
- -- name of the original.
-
- Get_Name_String (Chars (Old_Itype));
- Add_Char_To_Name_Buffer ('c');
- Set_Chars (New_Itype, Name_Enter);
-
- -- If our associated node is an entity that has already been copied,
- -- then set the associated node of the copy to point to the right
- -- copy. If we have copied an Itype that is itself the associated
- -- node of some previously copied Itype, then we set the right
- -- pointer in the other direction.
-
- if Present (Actual_Map) then
-
- -- Case of hash tables used
-
- if NCT_Hash_Tables_Used then
-
- Ent := NCT_Assoc.Get (Associated_Node_For_Itype (Old_Itype));
-
- if Present (Ent) then
- Set_Associated_Node_For_Itype (New_Itype, Ent);
- end if;
-
- Ent := NCT_Itype_Assoc.Get (Old_Itype);
- if Present (Ent) then
- Set_Associated_Node_For_Itype (Ent, New_Itype);
-
- -- If the hash table has no association for this Itype and
- -- its associated node, enter one now.
-
- else
- NCT_Itype_Assoc.Set
- (Associated_Node_For_Itype (Old_Itype), New_Itype);
- end if;
-
- -- Case of hash tables not used
-
- else
- E := First_Elmt (Actual_Map);
- while Present (E) loop
- if Associated_Node_For_Itype (Old_Itype) = Node (E) then
- Set_Associated_Node_For_Itype
- (New_Itype, Node (Next_Elmt (E)));
- end if;
-
- if Is_Type (Node (E))
- and then
- Old_Itype = Associated_Node_For_Itype (Node (E))
- then
- Set_Associated_Node_For_Itype
- (Node (Next_Elmt (E)), New_Itype);
- end if;
-
- E := Next_Elmt (Next_Elmt (E));
- end loop;
- end if;
- end if;
-
- if Present (Freeze_Node (New_Itype)) then
- Set_Is_Frozen (New_Itype, False);
- Set_Freeze_Node (New_Itype, Empty);
- end if;
-
- -- Add new association to map
-
- if No (Actual_Map) then
- Actual_Map := New_Elmt_List;
- end if;
-
- Append_Elmt (Old_Itype, Actual_Map);
- Append_Elmt (New_Itype, Actual_Map);
-
- if NCT_Hash_Tables_Used then
- NCT_Assoc.Set (Old_Itype, New_Itype);
-
- else
- NCT_Table_Entries := NCT_Table_Entries + 1;
-
- if NCT_Table_Entries > NCT_Hash_Threshhold then
- Build_NCT_Hash_Tables;
- end if;
- end if;
-
- -- If a record subtype is simply copied, the entity list will be
- -- shared. Thus cloned_Subtype must be set to indicate the sharing.
-
- if Ekind (Old_Itype) = E_Record_Subtype
- or else Ekind (Old_Itype) = E_Class_Wide_Subtype
- then
- Set_Cloned_Subtype (New_Itype, Old_Itype);
- end if;
-
- -- Visit descendents that eventually get copied
-
- Visit_Field (Union_Id (Etype (Old_Itype)), Old_Itype);
-
- if Is_Discrete_Type (Old_Itype) then
- Visit_Field (Union_Id (Scalar_Range (Old_Itype)), Old_Itype);
-
- elsif Has_Discriminants (Base_Type (Old_Itype)) then
- -- ??? This should involve call to Visit_Field
- Visit_Elist (Discriminant_Constraint (Old_Itype));
-
- elsif Is_Array_Type (Old_Itype) then
- if Present (First_Index (Old_Itype)) then
- Visit_Field (Union_Id (List_Containing
- (First_Index (Old_Itype))),
- Old_Itype);
- end if;
-
- if Is_Packed (Old_Itype) then
- Visit_Field (Union_Id (Packed_Array_Type (Old_Itype)),
- Old_Itype);
- end if;
- end if;
- end Visit_Itype;
-
- ----------------
- -- Visit_List --
- ----------------
-
- procedure Visit_List (L : List_Id) is
- N : Node_Id;
- begin
- if L /= No_List then
- N := First (L);
-
- while Present (N) loop
- Visit_Node (N);
- Next (N);
- end loop;
- end if;
- end Visit_List;
-
- ----------------
- -- Visit_Node --
- ----------------
-
- procedure Visit_Node (N : Node_Or_Entity_Id) is
-
- -- Start of processing for Visit_Node
-
- begin
- -- Handle case of an Itype, which must be copied
-
- if Has_Extension (N)
- and then Is_Itype (N)
- then
- -- Nothing to do if already in the list. This can happen with an
- -- Itype entity that appears more than once in the tree.
- -- Note that we do not want to visit descendents in this case.
-
- -- Test for already in list when hash table is used
-
- if NCT_Hash_Tables_Used then
- if Present (NCT_Assoc.Get (Entity_Id (N))) then
- return;
- end if;
-
- -- Test for already in list when hash table not used
-
- else
- declare
- E : Elmt_Id;
- begin
- if Present (Actual_Map) then
- E := First_Elmt (Actual_Map);
- while Present (E) loop
- if Node (E) = N then
- return;
- else
- E := Next_Elmt (Next_Elmt (E));
- end if;
- end loop;
- end if;
- end;
- end if;
-
- Visit_Itype (N);
- end if;
-
- -- Visit descendents
-
- Visit_Field (Field1 (N), N);
- Visit_Field (Field2 (N), N);
- Visit_Field (Field3 (N), N);
- Visit_Field (Field4 (N), N);
- Visit_Field (Field5 (N), N);
- end Visit_Node;
-
- -- Start of processing for New_Copy_Tree
-
- begin
- Actual_Map := Map;
-
- -- See if we should use hash table
-
- if No (Actual_Map) then
- NCT_Hash_Tables_Used := False;
-
- else
- declare
- Elmt : Elmt_Id;
-
- begin
- NCT_Table_Entries := 0;
-
- Elmt := First_Elmt (Actual_Map);
- while Present (Elmt) loop
- NCT_Table_Entries := NCT_Table_Entries + 1;
- Next_Elmt (Elmt);
- Next_Elmt (Elmt);
- end loop;
-
- if NCT_Table_Entries > NCT_Hash_Threshhold then
- Build_NCT_Hash_Tables;
- else
- NCT_Hash_Tables_Used := False;
- end if;
- end;
- end if;
-
- -- Hash table set up if required, now start phase one by visiting
- -- top node (we will recursively visit the descendents).
-
- Visit_Node (Source);
-
- -- Now the second phase of the copy can start. First we process
- -- all the mapped entities, copying their descendents.
-
- if Present (Actual_Map) then
- declare
- Elmt : Elmt_Id;
- New_Itype : Entity_Id;
- begin
- Elmt := First_Elmt (Actual_Map);
- while Present (Elmt) loop
- Next_Elmt (Elmt);
- New_Itype := Node (Elmt);
- Copy_Itype_With_Replacement (New_Itype);
- Next_Elmt (Elmt);
- end loop;
- end;
- end if;
-
- -- Now we can copy the actual tree
-
- return Copy_Node_With_Replacement (Source);
- end New_Copy_Tree;
-
----------------
-- New_Entity --
----------------
diff --git a/gcc/ada/atree.ads b/gcc/ada/atree.ads
index df25f6e7291..ae6a1ac7588 100644
--- a/gcc/ada/atree.ads
+++ b/gcc/ada/atree.ads
@@ -430,46 +430,6 @@ package Atree is
-- Source to be Empty, in which case Relocate_Node simply returns
-- Empty as the result.
- function New_Copy_Tree
- (Source : Node_Id;
- Map : Elist_Id := No_Elist;
- New_Sloc : Source_Ptr := No_Location;
- New_Scope : Entity_Id := Empty) return Node_Id;
- -- Given a node that is the root of a subtree, Copy_Tree copies the entire
- -- syntactic subtree, including recursively any descendents whose parent
- -- field references a copied node (descendents not linked to a copied node
- -- by the parent field are not copied, instead the copied tree references
- -- the same descendent as the original in this case, which is appropriate
- -- for non-syntactic fields such as Etype). The parent pointers in the
- -- copy are properly set. Copy_Tree (Empty/Error) returns Empty/Error.
- -- The one exception to the rule of not copying semantic fields is that
- -- any implicit types attached to the subtree are duplicated, so that
- -- the copy contains a distinct set of implicit type entities. The Map
- -- argument, if set to a non-empty Elist, specifies a set of mappings
- -- to be applied to entities in the tree. The map has the form:
- --
- -- old entity 1
- -- new entity to replace references to entity 1
- -- old entity 2
- -- new entity to replace references to entity 2
- -- ...
- --
- -- The call destroys the contents of Map in this case
- --
- -- The parameter New_Sloc, if set to a value other than No_Location, is
- -- used as the Sloc value for all nodes in the new copy. If New_Sloc is
- -- set to its default value No_Location, then the Sloc values of the
- -- nodes in the copy are simply copied from the corresponding original.
- --
- -- The Comes_From_Source indication is unchanged if New_Sloc is set to
- -- the default No_Location value, but is reset if New_Sloc is given, since
- -- in this case the result clearly is neither a source node or an exact
- -- copy of a source node.
- --
- -- The parameter New_Scope, if set to a value other than Empty, is the
- -- value to use as the Scope for any Itypes that are copied. The most
- -- typical value for this parameter, if given, is Current_Scope.
-
function Copy_Separate_Tree (Source : Node_Id) return Node_Id;
-- Given a node that is the root of a subtree, Copy_Separate_Tree copies
-- the entire syntactic subtree, including recursively any descendants
@@ -3114,6 +3074,95 @@ package Atree is
for Node_Record'Size use 8*32;
for Node_Record'Alignment use 4;
+ function E_To_N is new Unchecked_Conversion (Entity_Kind, Node_Kind);
+ function N_To_E is new Unchecked_Conversion (Node_Kind, Entity_Kind);
+
+ -- Default value used to initialize default nodes. Note that some of the
+ -- fields get overwritten, and in particular, Nkind always gets reset.
+
+ Default_Node : Node_Record := (
+ Is_Extension => False,
+ Pflag1 => False,
+ Pflag2 => False,
+ In_List => False,
+ Unused_1 => False,
+ Rewrite_Ins => False,
+ Analyzed => False,
+ Comes_From_Source => False,
+ -- modified by Set_Comes_From_Source_Default
+ Error_Posted => False,
+ Flag4 => False,
+
+ Flag5 => False,
+ Flag6 => False,
+ Flag7 => False,
+ Flag8 => False,
+ Flag9 => False,
+ Flag10 => False,
+ Flag11 => False,
+ Flag12 => False,
+
+ Flag13 => False,
+ Flag14 => False,
+ Flag15 => False,
+ Flag16 => False,
+ Flag17 => False,
+ Flag18 => False,
+
+ Nkind => N_Unused_At_Start,
+
+ Sloc => No_Location,
+ Link => Empty_List_Or_Node,
+ Field1 => Empty_List_Or_Node,
+ Field2 => Empty_List_Or_Node,
+ Field3 => Empty_List_Or_Node,
+ Field4 => Empty_List_Or_Node,
+ Field5 => Empty_List_Or_Node);
+
+ -- Default value used to initialize node extensions (i.e. the second
+ -- and third and fourth components of an extended node). Note we are
+ -- cheating a bit here when it comes to Node12, which really holds
+ -- flags an (for the third component), the convention. But it works
+ -- because Empty, False, Convention_Ada, all happen to be all zero bits.
+
+ Default_Node_Extension : constant Node_Record := (
+ Is_Extension => True,
+ Pflag1 => False,
+ Pflag2 => False,
+ In_List => False,
+ Unused_1 => False,
+ Rewrite_Ins => False,
+ Analyzed => False,
+ Comes_From_Source => False,
+ Error_Posted => False,
+ Flag4 => False,
+
+ Flag5 => False,
+ Flag6 => False,
+ Flag7 => False,
+ Flag8 => False,
+ Flag9 => False,
+ Flag10 => False,
+ Flag11 => False,
+ Flag12 => False,
+
+ Flag13 => False,
+ Flag14 => False,
+ Flag15 => False,
+ Flag16 => False,
+ Flag17 => False,
+ Flag18 => False,
+
+ Nkind => E_To_N (E_Void),
+
+ Field6 => Empty_List_Or_Node,
+ Field7 => Empty_List_Or_Node,
+ Field8 => Empty_List_Or_Node,
+ Field9 => Empty_List_Or_Node,
+ Field10 => Empty_List_Or_Node,
+ Field11 => Empty_List_Or_Node,
+ Field12 => Empty_List_Or_Node);
+
-- The following defines the extendable array used for the nodes table
-- Nodes with extensions use five consecutive entries in the array
diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb
index 6f6b557ca1d..ce81c7ae005 100644
--- a/gcc/ada/bindgen.adb
+++ b/gcc/ada/bindgen.adb
@@ -2273,7 +2273,7 @@ package body Bindgen is
-- If the standard library is not suppressed, these variables
-- are in the runtime data area for easy access from the
- -- runtime
+ -- runtime.
if not Suppress_Standard_Library_On_Target then
WBI ("");
@@ -2332,10 +2332,13 @@ package body Bindgen is
"""__gnat_ada_main_program_name"");");
end if;
- WBI ("");
- WBI (" procedure " & Ada_Final_Name.all & ";");
- WBI (" pragma Export (C, " & Ada_Final_Name.all & ", """ &
- Ada_Final_Name.all & """);");
+ if not Cumulative_Restrictions.Set (No_Finalization) then
+ WBI ("");
+ WBI (" procedure " & Ada_Final_Name.all & ";");
+ WBI (" pragma Export (C, " & Ada_Final_Name.all & ", """ &
+ Ada_Final_Name.all & """);");
+ end if;
+
WBI ("");
WBI (" procedure " & Ada_Init_Name.all & ";");
WBI (" pragma Export (C, " & Ada_Init_Name.all & ", """ &
@@ -2507,7 +2510,11 @@ package body Bindgen is
Gen_Adainit_Ada;
- Gen_Adafinal_Ada;
+ -- Generate the adafinal routine unless there is no finalization to do
+
+ if not Cumulative_Restrictions.Set (No_Finalization) then
+ Gen_Adafinal_Ada;
+ end if;
if Bind_Main_Program and then VM_Target = No_VM then
diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb
index 45462db72b5..39f63f3a383 100644
--- a/gcc/ada/checks.adb
+++ b/gcc/ada/checks.adb
@@ -3568,6 +3568,11 @@ package body Checks is
then
return;
+ -- Nothing to do for unsigned integer types, which do not overflow
+
+ elsif Is_Modular_Integer_Type (Typ) then
+ return;
+
-- Nothing to do if the range of the result is known OK. We skip this
-- for conversions, since the caller already did the check, and in any
-- case the condition for deleting the check for a type conversion is
diff --git a/gcc/ada/checks.ads b/gcc/ada/checks.ads
index 07ac2722549..e0cc54d0936 100644
--- a/gcc/ada/checks.ads
+++ b/gcc/ada/checks.ads
@@ -135,9 +135,9 @@ package Checks is
Typ : Entity_Id;
No_Sliding : Boolean := False);
-- Top-level procedure, calls all the others depending on the class of Typ.
- -- Checks that expression N verifies the constraint of type Typ. No_Sliding
- -- is only relevant for constrained array types, if set to True, it
- -- checks that indexes are in range.
+ -- Checks that expression N satisfies the constraint of type Typ.
+ -- No_Sliding is only relevant for constrained array types, if set to True,
+ -- it checks that indexes are in range.
procedure Apply_Discriminant_Check
(N : Node_Id;
diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb
index 2cc4f74a469..0ce0db632e6 100644
--- a/gcc/ada/debug.adb
+++ b/gcc/ada/debug.adb
@@ -91,9 +91,9 @@ package body Debug is
-- dY Enable configurable run-time mode
-- dZ Generate listing showing the contents of the dispatch tables
- -- d.a
+ -- d.a Force Target_Strict_Alignment mode to True
-- d.b
- -- d.c
+ -- d.c Generate inline concatenation, do not call procedure
-- d.d
-- d.e
-- d.f Inhibit folding of static expressions
@@ -120,7 +120,7 @@ package body Debug is
-- d.A
-- d.B
- -- d.C
+ -- d.C Generate concatenation call, do not generate inline code
-- d.D
-- d.E
-- d.F
@@ -498,6 +498,14 @@ package body Debug is
-- - In case of abstract subprograms the text "is abstract" is
-- added at the end of the line.
+ -- d.a Force Target_Strict_Alignment to True, even on targets where it
+ -- would normally be false. Can be used for testing strict alignment
+ -- circuitry in the compiler.
+
+ -- d.c Generate inline concatenation, instead of calling one of the
+ -- System.Concat_n.Str_Concat_n routines in cases where the latter
+ -- routines would normally be called.
+
-- d.f Suppress folding of static expressions. This of course results
-- in seriously non-conforming behavior, but is useful sometimes
-- when tracking down handling of complex expressions.
@@ -542,6 +550,9 @@ package body Debug is
-- fully compiled and analyzed, they just get eliminated from the
-- code generation step.
+ -- d.C Generate call to System.Concat_n.Str_Concat_n routines in cases
+ -- where we would normally generate inline concatenation code.
+
-- d.I Inspector mode. Relevant for VM_Target /= None. Try to generate
-- byte code, even in case of unsupported construct, for the sake
-- of static analysis tools.
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb
index 72db40fcf84..92d9ce26b8f 100644
--- a/gcc/ada/einfo.adb
+++ b/gcc/ada/einfo.adb
@@ -206,6 +206,7 @@ package body Einfo is
-- Stored_Constraint Elist23
-- Spec_PPC_List Node24
+ -- Underlying_Record_View Node24
-- Interface_Alias Node25
-- Interfaces Elist25
@@ -2672,6 +2673,12 @@ package body Einfo is
return Node19 (Id);
end Underlying_Full_View;
+ function Underlying_Record_View (Id : E) return E is
+ begin
+ pragma Assert (Ekind (Id) = E_Record_Type);
+ return Node24 (Id);
+ end Underlying_Record_View;
+
function Universal_Aliasing (Id : E) return B is
begin
pragma Assert (Is_Type (Id));
@@ -5152,6 +5159,12 @@ package body Einfo is
Set_Node19 (Id, V);
end Set_Underlying_Full_View;
+ procedure Set_Underlying_Record_View (Id : E; V : E) is
+ begin
+ pragma Assert (Ekind (Id) = E_Record_Type);
+ Set_Node24 (Id, V);
+ end Set_Underlying_Record_View;
+
procedure Set_Universal_Aliasing (Id : E; V : B := True) is
begin
pragma Assert (Is_Type (Id) and then Id = Base_Type (Id));
@@ -7909,6 +7922,9 @@ package body Einfo is
when Subprogram_Kind =>
Write_Str ("Spec_PPC_List");
+ when E_Record_Type =>
+ Write_Str ("Underlying record view");
+
when others =>
Write_Str ("???");
end case;
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index 94861354b70..91883e72a89 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -3558,6 +3558,13 @@ package Einfo is
-- private completion. If Td is already constrained, then its full view
-- can serve directly as the full view of T.
+-- Underlying_Record_View (Node24)
+-- Present in record types. Set for record types that are extensions of
+-- types with unknown discriminants. Such types do not have a completion,
+-- but they cannot be used without having some discriminated view at
+-- hand. This view is a record type with the same structure, whose parent
+-- type is the full view of the parent in the original type extension.
+
-- Underlying_Type (synthesized)
-- Applies to all entities. This is the identity function except in the
-- case where it is applied to an incomplete or private type, in which
@@ -5246,6 +5253,7 @@ package Einfo is
-- Discriminant_Constraint (Elist21)
-- Corresponding_Remote_Type (Node22)
-- Stored_Constraint (Elist23)
+ -- Underlying_Record_View (Node24) (base type only)
-- Interfaces (Elist25)
-- Component_Alignment (special) (base type only)
-- C_Pass_By_Copy (Flag125) (base type only)
@@ -5983,6 +5991,7 @@ package Einfo is
function Task_Body_Procedure (Id : E) return N;
function Treat_As_Volatile (Id : E) return B;
function Underlying_Full_View (Id : E) return E;
+ function Underlying_Record_View (Id : E) return E;
function Universal_Aliasing (Id : E) return B;
function Unset_Reference (Id : E) return N;
function Used_As_Generic_Actual (Id : E) return B;
@@ -6534,6 +6543,7 @@ package Einfo is
procedure Set_Task_Body_Procedure (Id : E; V : N);
procedure Set_Treat_As_Volatile (Id : E; V : B := True);
procedure Set_Underlying_Full_View (Id : E; V : E);
+ procedure Set_Underlying_Record_View (Id : E; V : E);
procedure Set_Universal_Aliasing (Id : E; V : B := True);
procedure Set_Unset_Reference (Id : E; V : N);
procedure Set_Used_As_Generic_Actual (Id : E; V : B := True);
@@ -7226,6 +7236,7 @@ package Einfo is
pragma Inline (Task_Body_Procedure);
pragma Inline (Treat_As_Volatile);
pragma Inline (Underlying_Full_View);
+ pragma Inline (Underlying_Record_View);
pragma Inline (Universal_Aliasing);
pragma Inline (Unset_Reference);
pragma Inline (Used_As_Generic_Actual);
@@ -7610,6 +7621,7 @@ package Einfo is
pragma Inline (Set_Task_Body_Procedure);
pragma Inline (Set_Treat_As_Volatile);
pragma Inline (Set_Underlying_Full_View);
+ pragma Inline (Set_Underlying_Record_View);
pragma Inline (Set_Universal_Aliasing);
pragma Inline (Set_Unset_Reference);
pragma Inline (Set_Used_As_Generic_Actual);
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 6ea4ddc961f..bd9fb0d1e85 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -506,6 +506,8 @@ package body Exp_Aggr is
-- 9. There cannot be any discriminated record components, since the
-- back end cannot handle this complex case.
+ -- 10. No controlled actions need to be generated for components.
+
function Backend_Processing_Possible (N : Node_Id) return Boolean is
Typ : constant Entity_Id := Etype (N);
-- Typ is the correct constrained array subtype of the aggregate
@@ -580,9 +582,9 @@ package body Exp_Aggr is
-- Start of processing for Backend_Processing_Possible
begin
- -- Checks 2 (array must not be bit packed)
+ -- Checks 2 (array not bit packed) and 10 (no controlled actions)
- if Is_Bit_Packed_Array (Typ) then
+ if Is_Bit_Packed_Array (Typ) or else Needs_Finalization (Typ) then
return False;
end if;
@@ -1226,10 +1228,10 @@ package body Exp_Aggr is
if Present (Comp_Type)
and then Needs_Finalization (Comp_Type)
and then not Is_Limited_Type (Comp_Type)
- and then
- (not Is_Array_Type (Comp_Type)
- or else not Is_Controlled (Component_Type (Comp_Type))
- or else Nkind (Expr) /= N_Aggregate)
+ and then not
+ (Is_Array_Type (Comp_Type)
+ and then Is_Controlled (Component_Type (Comp_Type))
+ and then Nkind (Expr) = N_Aggregate)
then
Append_List_To (L,
Make_Adjust_Call (
@@ -2548,6 +2550,9 @@ package body Exp_Aggr is
-- in the limited case, the ancestor part must be either a
-- function call (possibly qualified, or wrapped in an unchecked
-- conversion) or aggregate (definitely qualified).
+ -- The ancestor part can also be a function call (that may be
+ -- transformed into an explicit dereference) or a qualification
+ -- of one such.
elsif Is_Limited_Type (Etype (A))
and then Nkind (Unqualify (A)) /= N_Function_Call -- aggregate?
@@ -2555,6 +2560,7 @@ package body Exp_Aggr is
(Nkind (Unqualify (A)) /= N_Unchecked_Type_Conversion
or else
Nkind (Expression (Unqualify (A))) /= N_Function_Call)
+ and then Nkind (Unqualify (A)) /= N_Explicit_Dereference
then
Ancestor_Is_Expression := True;
@@ -3418,6 +3424,7 @@ package body Exp_Aggr is
procedure Convert_To_Assignments (N : Node_Id; Typ : Entity_Id) is
Loc : constant Source_Ptr := Sloc (N);
+ T : Entity_Id;
Temp : Entity_Id;
Instr : Node_Id;
@@ -3506,10 +3513,10 @@ package body Exp_Aggr is
Is_Controlled (Typ) or else Has_Controlled_Component (Typ));
end if;
- -- If the aggregate is non-limited, create a temporary. If it is
- -- limited and the context is an assignment, this is a subaggregate
- -- for an enclosing aggregate being expanded. It must be built in place,
- -- so use the target of the current assignment.
+ -- If the aggregate is non-limited, create a temporary. If it is limited
+ -- and the context is an assignment, this is a subaggregate for an
+ -- enclosing aggregate being expanded. It must be built in place, so use
+ -- the target of the current assignment.
if Is_Limited_Type (Typ)
and then Nkind (Parent (N)) = N_Assignment_Statement
@@ -3522,18 +3529,29 @@ package body Exp_Aggr is
else
Temp := Make_Defining_Identifier (Loc, New_Internal_Name ('A'));
+ -- If the type inherits unknown discriminants, use the view with
+ -- known discriminants if available.
+
+ if Has_Unknown_Discriminants (Typ)
+ and then Present (Underlying_Record_View (Typ))
+ then
+ T := Underlying_Record_View (Typ);
+ else
+ T := Typ;
+ end if;
+
Instr :=
Make_Object_Declaration (Loc,
Defining_Identifier => Temp,
- Object_Definition => New_Occurrence_Of (Typ, Loc));
+ Object_Definition => New_Occurrence_Of (T, Loc));
Set_No_Initialization (Instr);
Insert_Action (N, Instr);
- Initialize_Discriminants (Instr, Typ);
+ Initialize_Discriminants (Instr, T);
Target_Expr := New_Occurrence_Of (Temp, Loc);
- Insert_Actions (N, Build_Record_Aggr_Code (N, Typ, Target_Expr));
+ Insert_Actions (N, Build_Record_Aggr_Code (N, T, Target_Expr));
Rewrite (N, New_Occurrence_Of (Temp, Loc));
- Analyze_And_Resolve (N, Typ);
+ Analyze_And_Resolve (N, T);
end if;
end Convert_To_Assignments;
@@ -4947,8 +4965,8 @@ package body Exp_Aggr is
-- STEP 3
- -- Delay expansion for nested aggregates it will be taken care of
- -- when the parent aggregate is expanded
+ -- Delay expansion for nested aggregates: it will be taken care of
+ -- when the parent aggregate is expanded.
Parent_Node := Parent (N);
Parent_Kind := Nkind (Parent_Node);
@@ -4979,7 +4997,7 @@ package body Exp_Aggr is
-- STEP 4
- -- Look if in place aggregate expansion is possible
+ -- Look if in place aggregate expansion is possible.
-- For object declarations we build the aggregate in place, unless
-- the array is bit-packed or the component is controlled.
@@ -5018,8 +5036,8 @@ package body Exp_Aggr is
and then In_Place_Assign_OK);
end if;
- -- If this is an array of tasks, it will be expanded into build-in-
- -- -place assignments. Build an activation chain for the tasks now
+ -- If this is an array of tasks, it will be expanded into build-in-place
+ -- assignments. Build an activation chain for the tasks now.
if Has_Task (Etype (N)) then
Build_Activation_Chain_Entity (N);
@@ -5114,8 +5132,8 @@ package body Exp_Aggr is
Set_No_Initialization (Tmp_Decl, True);
-- If we are within a loop, the temporary will be pushed on the
- -- stack at each iteration. If the aggregate is the expression for
- -- an allocator, it will be immediately copied to the heap and can
+ -- stack at each iteration. If the aggregate is the expression for an
+ -- allocator, it will be immediately copied to the heap and can
-- be reclaimed at once. We create a transient scope around the
-- aggregate for this purpose.
@@ -5128,9 +5146,9 @@ package body Exp_Aggr is
Insert_Action (N, Tmp_Decl);
end if;
- -- Construct and insert the aggregate code. We can safely suppress
- -- index checks because this code is guaranteed not to raise CE
- -- on index checks. However we should *not* suppress all checks.
+ -- Construct and insert the aggregate code. We can safely suppress index
+ -- checks because this code is guaranteed not to raise CE on index
+ -- checks. However we should *not* suppress all checks.
declare
Target : Node_Id;
diff --git a/gcc/ada/exp_aggr.ads b/gcc/ada/exp_aggr.ads
index 8f9f9630a25..5d14f1d5fe1 100644
--- a/gcc/ada/exp_aggr.ads
+++ b/gcc/ada/exp_aggr.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2009, 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- --
@@ -34,9 +34,9 @@ package Exp_Aggr is
-- Returns True if N is an aggregate of some kind whose Expansion_Delayed
-- flag is set (see sinfo for meaning of flag).
- procedure Convert_Aggr_In_Object_Decl (N : Node_Id);
- -- N is a N_Object_Declaration with an expression which must be
- -- an N_Aggregate or N_Extension_Aggregate with Expansion_Delayed
+ procedure Convert_Aggr_In_Object_Decl (N : Node_Id);
+ -- N is a N_Object_Declaration with an expression which must be an
+ -- N_Aggregate or N_Extension_Aggregate with Expansion_Delayed.
-- This procedure performs in-place aggregate assignment.
procedure Convert_Aggr_In_Allocator
@@ -45,7 +45,7 @@ package Exp_Aggr is
Aggr : Node_Id);
-- Alloc is the allocator whose expression is the aggregate Aggr.
-- Decl is an N_Object_Declaration created during allocator expansion.
- -- This procedure perform in-place aggregate assignment into the
+ -- This procedure performs in-place aggregate assignment into the
-- temporary declared in Decl, and the allocator becomes an access to
-- that temporary.
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index 7f30178432c..4442a78e01d 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -2061,9 +2061,9 @@ package body Exp_Ch3 is
-- return O.Iface_Comp'Position;
-- end Fxx;
- ------------------------------
- -- Build_Offset_To_Top_Body --
- ------------------------------
+ ----------------------------------
+ -- Build_Offset_To_Top_Function --
+ ----------------------------------
procedure Build_Offset_To_Top_Function (Iface_Comp : Entity_Id) is
Body_Node : Node_Id;
@@ -2394,9 +2394,8 @@ package body Exp_Ch3 is
and then Convention (Prim) = Convention_CPP
and then not Present (Interface_Alias (Prim))
then
- Register_Primitive (Loc,
- Prim => Prim,
- Ins_Nod => Last (Init_Tags_List));
+ Append_List_To (Init_Tags_List,
+ Register_Primitive (Loc, Prim => Prim));
end if;
Next_Elmt (E);
@@ -3008,7 +3007,9 @@ package body Exp_Ch3 is
-- If it is a type derived from a type with unknown discriminants,
-- we cannot build an initialization procedure for it.
- if Has_Unknown_Discriminants (Rec_Id) then
+ if Has_Unknown_Discriminants (Rec_Id)
+ or else Has_Unknown_Discriminants (Etype (Rec_Id))
+ then
return False;
end if;
@@ -3891,6 +3892,16 @@ package body Exp_Ch3 is
Par_Subtype := Process_Subtype (New_Copy_Tree (Indic), Def);
end if;
+ -- If this is an extension of a type with unknown discriminants, use
+ -- full view to provide proper discriminants to gigi.
+
+ if Has_Unknown_Discriminants (Par_Subtype)
+ and then Is_Private_Type (Par_Subtype)
+ and then Present (Full_View (Par_Subtype))
+ then
+ Par_Subtype := Full_View (Par_Subtype);
+ end if;
+
Set_Parent_Subtype (T, Par_Subtype);
Comp_Decl :=
@@ -4146,7 +4157,6 @@ package body Exp_Ch3 is
Expr_Q : Node_Id;
Id_Ref : Node_Id;
New_Ref : Node_Id;
- BIP_Call : Boolean := False;
Init_After : Node_Id := N;
-- Node after which the init proc call is to be inserted. This is
@@ -4410,21 +4420,25 @@ package body Exp_Ch3 is
if Is_Delayed_Aggregate (Expr_Q) then
Convert_Aggr_In_Object_Decl (N);
- else
- -- Ada 2005 (AI-318-02): If the initialization expression is a
- -- call to a build-in-place function, then access to the declared
- -- object must be passed to the function. Currently we limit such
- -- functions to those with constrained limited result subtypes,
- -- but eventually we plan to expand the allowed forms of functions
- -- that are treated as build-in-place.
+ -- Ada 2005 (AI-318-02): If the initialization expression is a call
+ -- to a build-in-place function, then access to the declared object
+ -- must be passed to the function. Currently we limit such functions
+ -- to those with constrained limited result subtypes, but eventually
+ -- plan to expand the allowed forms of functions that are treated as
+ -- build-in-place.
- if Ada_Version >= Ada_05
- and then Is_Build_In_Place_Function_Call (Expr_Q)
- then
- Make_Build_In_Place_Call_In_Object_Declaration (N, Expr_Q);
- BIP_Call := True;
- end if;
+ elsif Ada_Version >= Ada_05
+ and then Is_Build_In_Place_Function_Call (Expr_Q)
+ then
+ Make_Build_In_Place_Call_In_Object_Declaration (N, Expr_Q);
+
+ -- The previous call expands the expression initializing the
+ -- built-in-place object into further code that will be analyzed
+ -- later. No further expansion needed here.
+ return;
+
+ else
-- In most cases, we must check that the initial value meets any
-- constraint imposed by the declared type. However, there is one
-- very important exception to this rule. If the entity has an
@@ -4572,7 +4586,6 @@ package body Exp_Ch3 is
if Needs_Finalization (Typ)
and then not Is_Inherently_Limited_Type (Typ)
- and then not BIP_Call
then
Insert_Actions_After (Init_After,
Make_Adjust_Call (
@@ -5731,6 +5744,27 @@ package body Exp_Ch3 is
end if;
end if;
+ -- If the type has unknown discriminants, propagate dispatching
+ -- information to its underlying record view, which does not get
+ -- its own dispatch table.
+
+ if Is_Derived_Type (Def_Id)
+ and then Has_Unknown_Discriminants (Def_Id)
+ and then Present (Underlying_Record_View (Def_Id))
+ then
+ declare
+ Rep : constant Entity_Id :=
+ Underlying_Record_View (Def_Id);
+ begin
+ Set_Access_Disp_Table
+ (Rep, Access_Disp_Table (Def_Id));
+ Set_Dispatch_Table_Wrappers
+ (Rep, Dispatch_Table_Wrappers (Def_Id));
+ Set_Primitive_Operations
+ (Rep, Primitive_Operations (Def_Id));
+ end;
+ end if;
+
-- Make sure that the primitives Initialize, Adjust and Finalize
-- are Frozen before other TSS subprograms. We don't want them
-- Frozen inside.
@@ -6857,8 +6891,7 @@ package body Exp_Ch3 is
and then Is_Variable_Size_Record (Etype (Comp_Typ))
and then Chars (Tag_Comp) /= Name_uTag
then
- pragma Assert
- (Present (DT_Offset_To_Top_Func (Tag_Comp)));
+ pragma Assert (Present (DT_Offset_To_Top_Func (Tag_Comp)));
-- Issue error if Set_Dynamic_Offset_To_Top is not available in a
-- configurable run-time environment.
@@ -7526,7 +7559,7 @@ package body Exp_Ch3 is
Null_Exclusion_Present =>
Null_Exclusion_Present (Parent (Formal)),
Parameter_Type =>
- New_Reference_To (Etype (Formal), Loc),
+ New_Occurrence_Of (Etype (Formal), Loc),
Expression =>
New_Copy_Tree (Expression (Parent (Formal)))),
Formal_List);
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 27bc6c6e7e0..ef4dbc51989 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -25,6 +25,7 @@
with Atree; use Atree;
with Checks; use Checks;
+with Debug; use Debug;
with Einfo; use Einfo;
with Elists; use Elists;
with Errout; use Errout;
@@ -976,15 +977,14 @@ package body Exp_Ch4 is
Rewrite (Exp, New_Copy (Expression (Exp)));
end if;
else
- -- First check against the type of the qualified expression
- --
- -- NOTE: The commented call should be correct, but for some reason
- -- causes the compiler to bomb (sigsegv) on ACVC test c34007g, so for
- -- now we just perform the old (incorrect) test against the
- -- designated subtype with no sliding in the else part of the if
- -- statement below. ???
- --
- -- Apply_Constraint_Check (Exp, T, No_Sliding => True);
+ -- If we have:
+ -- type A is access T1;
+ -- X : A := new T2'(...);
+ -- T1 and T2 can be different subtypes, and we might need to check
+ -- both constraints. First check against the type of the qualified
+ -- expression.
+
+ Apply_Constraint_Check (Exp, T, No_Sliding => True);
-- A check is also needed in cases where the designated subtype is
-- constrained and differs from the subtype given in the qualified
@@ -996,14 +996,6 @@ package body Exp_Ch4 is
then
Apply_Constraint_Check
(Exp, DesigT, No_Sliding => False);
-
- -- The nonsliding check should really be performed (unconditionally)
- -- against the subtype of the qualified expression, but that causes a
- -- problem with c34007g (see above), so for now we retain this.
-
- else
- Apply_Constraint_Check
- (Exp, DesigT, No_Sliding => True);
end if;
-- For an access to unconstrained packed array, GIGI needs to see an
@@ -2757,9 +2749,10 @@ package body Exp_Ch4 is
Right_Opnd => Make_Artyp_Literal (1))));
-- Note that calculation of the high bound may cause overflow in some
- -- very weird cases, so in the general case we need an overflow check
- -- on the high bound. We can avoid this for the common case of string
- -- types since we chose a wider range for the arithmetic type.
+ -- very weird cases, so in the general case we need an overflow check on
+ -- the high bound. We can avoid this for the common case of string types
+ -- and other types whose index is Positive, since we chose a wider range
+ -- for the arithmetic type.
if Istyp /= Standard_Positive then
Activate_Overflow_Check (High_Bound);
@@ -2813,6 +2806,80 @@ package body Exp_Ch4 is
-- Now we will generate the assignments to do the actual concatenation
+ -- There is one case in which we will not do this, namely when all the
+ -- following conditions are met:
+
+ -- The result type is Standard.String
+
+ -- There are nine or fewer retained (non-null) operands
+
+ -- The optimization level is -O0
+
+ -- The corresponding System.Concat_n.Str_Concat_n routine is
+ -- available in the run time.
+
+ -- The debug flag gnatd.c is not set
+
+ -- If all these conditions are met then we generate a call to the
+ -- relevant concatenation routine. The purpose of this is to avoid
+ -- undesirable code bloat at -O0.
+
+ if Atyp = Standard_String
+ and then NN in 2 .. 9
+ and then (Opt.Optimization_Level = 0 or else Debug_Flag_Dot_CC)
+ and then not Debug_Flag_Dot_C
+ then
+ declare
+ RR : constant array (Nat range 2 .. 9) of RE_Id :=
+ (RE_Str_Concat_2,
+ RE_Str_Concat_3,
+ RE_Str_Concat_4,
+ RE_Str_Concat_5,
+ RE_Str_Concat_6,
+ RE_Str_Concat_7,
+ RE_Str_Concat_8,
+ RE_Str_Concat_9);
+
+ begin
+ if RTE_Available (RR (NN)) then
+ declare
+ Opnds : constant List_Id :=
+ New_List (New_Occurrence_Of (Ent, Loc));
+
+ begin
+ for J in 1 .. NN loop
+ if Is_List_Member (Operands (J)) then
+ Remove (Operands (J));
+ end if;
+
+ if Base_Type (Etype (Operands (J))) = Ctyp then
+ Append_To (Opnds,
+ Make_Aggregate (Loc,
+ Component_Associations => New_List (
+ Make_Component_Association (Loc,
+ Choices => New_List (
+ Make_Integer_Literal (Loc, 1)),
+ Expression => Operands (J)))));
+
+ else
+ Append_To (Opnds, Operands (J));
+ end if;
+ end loop;
+
+ Insert_Action (Cnode,
+ Make_Procedure_Call_Statement (Loc,
+ Name => New_Reference_To (RTE (RR (NN)), Loc),
+ Parameter_Associations => Opnds));
+
+ Result := New_Reference_To (Ent, Loc);
+ goto Done;
+ end;
+ end if;
+ end;
+ end if;
+
+ -- Not special case so generate the assignments
+
Known_Non_Null_Operand_Seen := False;
for J in 1 .. NN loop
@@ -2935,6 +3002,12 @@ package body Exp_Ch4 is
-- constrain. Such occurrences can be rewritten as aliased objects
-- and their unrestricted access used instead of the coextension.
+ function Size_In_Storage_Elements (E : Entity_Id) return Node_Id;
+ -- Given a constrained array type E, returns a node representing the
+ -- code to compute the size in storage elements for the given type.
+ -- This is done without using the attribute (which malfunctions for
+ -- large sizes ???)
+
---------------------------------------
-- Complete_Coextension_Finalization --
---------------------------------------
@@ -3031,8 +3104,10 @@ package body Exp_Ch4 is
-- Retrieve the declaration of the body
- Decl := Parent (Parent (
- Corresponding_Body (Parent (Parent (S)))));
+ Decl :=
+ Parent
+ (Parent
+ (Corresponding_Body (Parent (Parent (S)))));
exit;
end if;
@@ -3161,6 +3236,61 @@ package body Exp_Ch4 is
Analyze_And_Resolve (N, PtrT);
end Rewrite_Coextension;
+ ------------------------------
+ -- Size_In_Storage_Elements --
+ ------------------------------
+
+ function Size_In_Storage_Elements (E : Entity_Id) return Node_Id is
+ begin
+ -- Logically this just returns E'Max_Size_In_Storage_Elements.
+ -- However, the reason for the existence of this function is
+ -- to construct a test for sizes too large, which means near the
+ -- 32-bit limit on a 32-bit machine, and precisely the trouble
+ -- is that we get overflows when sizes are greater than 2**31.
+
+ -- So what we end up doing for array types is to use the expression:
+
+ -- number-of-elements * component_type'Max_Size_In_Storage_Elements
+
+ -- which avoids this problem. All this is a big bogus, but it does
+ -- mean we catch common cases of trying to allocate arrays that
+ -- are too large, and which in the absence of a check results in
+ -- undetected chaos ???
+
+ declare
+ Len : Node_Id;
+ Res : Node_Id;
+
+ begin
+ for J in 1 .. Number_Dimensions (E) loop
+ Len :=
+ Make_Attribute_Reference (Loc,
+ Prefix => New_Occurrence_Of (E, Loc),
+ Attribute_Name => Name_Length,
+ Expressions => New_List (
+ Make_Integer_Literal (Loc, J)));
+
+ if J = 1 then
+ Res := Len;
+
+ else
+ Res :=
+ Make_Op_Multiply (Loc,
+ Left_Opnd => Res,
+ Right_Opnd => Len);
+ end if;
+ end loop;
+
+ return
+ Make_Op_Multiply (Loc,
+ Left_Opnd => Len,
+ Right_Opnd =>
+ Make_Attribute_Reference (Loc,
+ Prefix => New_Occurrence_Of (Component_Type (E), Loc),
+ Attribute_Name => Name_Max_Size_In_Storage_Elements));
+ end;
+ end Size_In_Storage_Elements;
+
-- Start of processing for Expand_N_Allocator
begin
@@ -3272,9 +3402,51 @@ package body Exp_Ch4 is
Complete_Coextension_Finalization;
end if;
+ -- Check for size too large, we do this because the back end misses
+ -- proper checks here and can generate rubbish allocation calls when
+ -- we are near the limit. We only do this for the 32-bit address case
+ -- since that is from a practical point of view where we see a problem.
+
+ if System_Address_Size = 32
+ and then not Storage_Checks_Suppressed (PtrT)
+ and then not Storage_Checks_Suppressed (Dtyp)
+ and then not Storage_Checks_Suppressed (Etyp)
+ then
+ -- The check we want to generate should look like
+
+ -- if Etyp'Max_Size_In_Storage_Elements > 3.5 gigabytes then
+ -- raise Storage_Error;
+ -- end if;
+
+ -- where 3.5 gigabytes is a constant large enough to accomodate any
+ -- reasonable request for. But we can't do it this way because at
+ -- least at the moment we don't compute this attribute right, and
+ -- can silently give wrong results when the result gets large. Since
+ -- this is all about large results, that's bad, so instead we only
+ -- apply the check for constrained arrays, and manually compute the
+ -- value of the attribute ???
+
+ if Is_Array_Type (Etyp) and then Is_Constrained (Etyp) then
+ Insert_Action (N,
+ Make_Raise_Storage_Error (Loc,
+ Condition =>
+ Make_Op_Gt (Loc,
+ Left_Opnd => Size_In_Storage_Elements (Etyp),
+ Right_Opnd =>
+ Make_Integer_Literal (Loc,
+ Intval => Uint_7 * (Uint_2 ** 29))),
+ Reason => SE_Object_Too_Large));
+ end if;
+ end if;
+
-- Handle case of qualified expression (other than optimization above)
+ -- First apply constraint checks, because the bounds or discriminants
+ -- in the aggregate might not match the subtype mark in the allocator.
if Nkind (Expression (N)) = N_Qualified_Expression then
+ Apply_Constraint_Check
+ (Expression (Expression (N)), Etype (Expression (N)));
+
Expand_Allocator_Expression (N);
return;
end if;
diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb
index 99870dc873d..5008f4c1eed 100644
--- a/gcc/ada/exp_ch5.adb
+++ b/gcc/ada/exp_ch5.adb
@@ -308,6 +308,14 @@ package body Exp_Ch5 is
-- can be performed directly.
end if;
+ -- If either operand has an address clause clear Backwards_OK and
+ -- Forwards_OK, since we cannot tell if the operands overlap.
+
+ if Has_Address_Clause (Lhs) or else Has_Address_Clause (Rhs) then
+ Set_Forwards_OK (N, False);
+ Set_Backwards_OK (N, False);
+ end if;
+
-- We certainly must use a loop for change of representation and also
-- we use the operand of the conversion on the right hand side as the
-- effective right hand side (the component types must match in this
@@ -634,16 +642,21 @@ package body Exp_Ch5 is
end if;
end if;
- -- If after that analysis, Forwards_OK is still True, and
- -- Loop_Required is False, meaning that we have not discovered some
- -- non-overlap reason for requiring a loop, then we can still let
- -- gigi handle it.
+ -- If after that analysis Loop_Required is False, meaning that we
+ -- have not discovered some non-overlap reason for requiring a loop,
+ -- then the outcome depends on the capabilities of the back end.
if not Loop_Required then
- -- Assume gigi can handle it if Forwards_OK is set
+ -- The GCC back end can deal with all cases of overlap by falling
+ -- back to memmove if it cannot use a more efficient approach.
- if Forwards_OK (N) then
+ if VM_Target = No_VM and not AAMP_On_Target then
+ return;
+
+ -- Assume other back ends can handle it if Forwards_OK is set
+
+ elsif Forwards_OK (N) then
return;
-- If Forwards_OK is not set, the back end will need something
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 2cd2f101a64..17332f26fbc 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -215,6 +215,10 @@ package body Exp_Ch6 is
-- reference to the object itself, and the call becomes a call to the
-- corresponding protected subprogram.
+ function Is_Null_Procedure (Subp : Entity_Id) return Boolean;
+ -- Predicate to recognize stubbed procedures and null procedures, which
+ -- can be inlined unconditionally in all cases.
+
----------------------------------------------
-- Add_Access_Actual_To_Build_In_Place_Call --
----------------------------------------------
@@ -2887,6 +2891,14 @@ package body Exp_Ch6 is
if Ekind (Subp) = E_Function
or else Ekind (Subp) = E_Procedure
then
+ -- A simple optimization: always replace calls to null procedures
+ -- with a null statement.
+
+ if Is_Null_Procedure (Subp) then
+ Rewrite (N, Make_Null_Statement (Loc));
+ return;
+ end if;
+
if Is_Inlined (Subp) then
Inlined_Subprogram : declare
@@ -3216,10 +3228,6 @@ package body Exp_Ch6 is
-- If the type returned by the function is unconstrained and the
-- call can be inlined, special processing is required.
- function Is_Null_Procedure return Boolean;
- -- Predicate to recognize stubbed procedures and null procedures, for
- -- which there is no need for the full inlining mechanism.
-
procedure Make_Exit_Label;
-- Build declaration for exit label to be used in Return statements
@@ -3246,50 +3254,6 @@ package body Exp_Ch6 is
function Formal_Is_Used_Once (Formal : Entity_Id) return Boolean;
-- Determine whether a formal parameter is used only once in Orig_Bod
- -----------------------
- -- Is_Null_Procedure --
- -----------------------
-
- function Is_Null_Procedure return Boolean is
- Decl : constant Node_Id := Unit_Declaration_Node (Subp);
-
- begin
- if Ekind (Subp) /= E_Procedure then
- return False;
-
- elsif Nkind (Orig_Bod) /= N_Subprogram_Body then
- return False;
-
- -- Check if this is an Ada 2005 null procedure
-
- elsif Nkind (Decl) = N_Subprogram_Declaration
- and then Null_Present (Specification (Decl))
- then
- return True;
-
- -- Check if the body contains only a null statement, followed by the
- -- return statement added during expansion.
-
- else
- declare
- Stat : constant Node_Id :=
- First
- (Statements (Handled_Statement_Sequence (Orig_Bod)));
-
- Stat2 : constant Node_Id := Next (Stat);
-
- begin
- return
- Nkind (Stat) = N_Null_Statement
- and then
- (No (Stat2)
- or else
- (Nkind (Stat2) = N_Simple_Return_Statement
- and then No (Next (Stat2))));
- end;
- end if;
- end Is_Null_Procedure;
-
---------------------
-- Make_Exit_Label --
---------------------
@@ -3611,11 +3575,11 @@ package body Exp_Ch6 is
-- Start of processing for Expand_Inlined_Call
begin
- -- Check for special case of To_Address call, and if so, just do an
- -- unchecked conversion instead of expanding the call. Not only is this
- -- more efficient, but it also avoids problem with order of elaboration
- -- when address clauses are inlined (address expression elaborated at
- -- wrong point).
+
+ -- For To_Address, just do an unchecked conversion . Not only is this
+ -- efficient, but it also avoids problem with order of elaboration
+ -- when address clauses are inlined (address expression elaborated
+ -- at the wrong point).
if Subp = RTE (RE_To_Address) then
Rewrite (N,
@@ -3623,10 +3587,6 @@ package body Exp_Ch6 is
(RTE (RE_Address),
Relocate_Node (First_Actual (N))));
return;
-
- elsif Is_Null_Procedure then
- Rewrite (N, Make_Null_Statement (Loc));
- return;
end if;
-- Check for an illegal attempt to inline a recursive procedure. If the
@@ -3795,9 +3755,19 @@ package body Exp_Ch6 is
-- its value is captured in a renaming declaration. Otherwise
-- declare a local constant initialized with the actual.
+ -- We also use a renaming declaration for expressions of an array
+ -- type that is not bit-packed, both for efficiency reasons and to
+ -- respect the semantics of the call: in most cases the original
+ -- call will pass the parameter by reference, and thus the inlined
+ -- code will have the same semantics.
+
if Ekind (F) = E_In_Parameter
and then not Is_Limited_Type (Etype (A))
and then not Is_Tagged_Type (Etype (A))
+ and then
+ (not Is_Array_Type (Etype (A))
+ or else not Is_Object_Reference (A)
+ or else Is_Bit_Packed_Array (Etype (A)))
then
Decl :=
Make_Object_Declaration (Loc,
@@ -3847,9 +3817,9 @@ package body Exp_Ch6 is
Set_Is_Internal (Temp);
-- For the unconstrained case, the generated temporary has the
- -- same constrained declaration as the result variable.
- -- It may eventually be possible to remove that temporary and
- -- use the result variable directly.
+ -- same constrained declaration as the result variable. It may
+ -- eventually be possible to remove that temporary and use the
+ -- result variable directly.
if Is_Unc then
Decl :=
@@ -3909,7 +3879,7 @@ package body Exp_Ch6 is
end if;
-- Analyze Blk with In_Inlined_Body set, to avoid spurious errors on
- -- conflicting private views that Gigi would ignore. If this is
+ -- conflicting private views that Gigi would ignore. If this is a
-- predefined unit, analyze with checks off, as is done in the non-
-- inlined run-time units.
@@ -3972,9 +3942,9 @@ package body Exp_Ch6 is
begin
Expand_Call (N);
- -- If the return value of a foreign compiled function is
- -- VAX Float then expand the return (adjusts the location
- -- of the return value on Alpha/VMS, noop everywhere else).
+ -- If the return value of a foreign compiled function is VAX Float, then
+ -- expand the return (adjusts the location of the return value on
+ -- Alpha/VMS, no-op everywhere else).
-- Comes_From_Source intercepts recursive expansion.
if Vax_Float (Etype (N))
@@ -4001,11 +3971,11 @@ package body Exp_Ch6 is
-- Expand_N_Subprogram_Body --
------------------------------
- -- Add poll call if ATC polling is enabled, unless the body will be
- -- inlined by the back-end.
+ -- Add poll call if ATC polling is enabled, unless the body will be inlined
+ -- by the back-end.
-- Add dummy push/pop label nodes at start and end to clear any local
- -- exception indications if local-exception-to-goto optimization active.
+ -- exception indications if local-exception-to-goto optimization is active.
-- Add return statement if last statement in body is not a return statement
-- (this makes things easier on Gigi which does not want to have to handle
@@ -4037,8 +4007,8 @@ package body Exp_Ch6 is
procedure Add_Return (S : List_Id);
-- Append a return statement to the statement sequence S if the last
-- statement is not already a return or a goto statement. Note that
- -- the latter test is not critical, it does not matter if we add a
- -- few extra returns, since they get eliminated anyway later on.
+ -- the latter test is not critical, it does not matter if we add a few
+ -- extra returns, since they get eliminated anyway later on.
----------------
-- Add_Return --
@@ -4084,11 +4054,11 @@ package body Exp_Ch6 is
Rtn : constant Node_Id := Make_Simple_Return_Statement (Loc);
begin
- -- Append return statement, and set analyzed manually. We
- -- can't call Analyze on this return since the scope is wrong.
+ -- Append return statement, and set analyzed manually. We can't
+ -- call Analyze on this return since the scope is wrong.
-- Note: it almost works to push the scope and then do the
- -- analyze call, but something goes wrong in some weird cases
+ -- Analyze call, but something goes wrong in some weird cases
-- and it is not worth worrying about ???
Append_To (S, Rtn);
@@ -4114,9 +4084,9 @@ package body Exp_Ch6 is
-- Start of processing for Expand_N_Subprogram_Body
begin
- -- Set L to either the list of declarations if present, or
- -- to the list of statements if no declarations are present.
- -- This is used to insert new stuff at the start.
+ -- Set L to either the list of declarations if present, or to the list
+ -- of statements if no declarations are present. This is used to insert
+ -- new stuff at the start.
if Is_Non_Empty_List (Declarations (N)) then
L := Declarations (N);
@@ -4174,11 +4144,13 @@ package body Exp_Ch6 is
-- Need poll on entry to subprogram if polling enabled. We only do this
-- for non-empty subprograms, since it does not seem necessary to poll
- -- for a dummy null subprogram. Do not add polling point if calls to
- -- this subprogram will be inlined by the back-end, to avoid repeated
- -- polling points in nested inlinings.
+ -- for a dummy null subprogram.
if Is_Non_Empty_List (L) then
+
+ -- Do not add a polling call if the subprogram is to be inlined by
+ -- the back-end, to avoid repeated calls with multiple inlinings.
+
if Is_Inlined (Spec_Id)
and then Front_End_Inlining
and then Optimization_Level > 1
@@ -4189,18 +4161,18 @@ package body Exp_Ch6 is
end if;
end if;
- -- If this is a Pure function which has any parameters whose root
- -- type is System.Address, reset the Pure indication, since it will
- -- likely cause incorrect code to be generated as the parameter is
- -- probably a pointer, and the fact that the same pointer is passed
- -- does not mean that the same value is being referenced.
+ -- If this is a Pure function which has any parameters whose root type
+ -- is System.Address, reset the Pure indication, since it will likely
+ -- cause incorrect code to be generated as the parameter is probably
+ -- a pointer, and the fact that the same pointer is passed does not mean
+ -- that the same value is being referenced.
-- Note that if the programmer gave an explicit Pure_Function pragma,
-- then we believe the programmer, and leave the subprogram Pure.
- -- This code should probably be at the freeze point, so that it
- -- happens even on a -gnatc (or more importantly -gnatt) compile
- -- so that the semantic tree has Is_Pure set properly ???
+ -- This code should probably be at the freeze point, so that it happens
+ -- even on a -gnatc (or more importantly -gnatt) compile, so that the
+ -- semantic tree has Is_Pure set properly ???
if Is_Pure (Spec_Id)
and then Is_Subprogram (Spec_Id)
@@ -4286,8 +4258,8 @@ package body Exp_Ch6 is
Set_Discriminals (Parent (Base_Type (Scope (Spec_Id))));
end if;
- -- Returns_By_Ref flag is normally set when the subprogram is frozen
- -- but subprograms with no specs are not frozen.
+ -- Returns_By_Ref flag is normally set when the subprogram is frozen but
+ -- subprograms with no specs are not frozen.
declare
Typ : constant Entity_Id := Etype (Spec_Id);
@@ -4308,8 +4280,8 @@ package body Exp_Ch6 is
end if;
end;
- -- For a procedure, we add a return for all possible syntactic ends
- -- of the subprogram.
+ -- For a procedure, we add a return for all possible syntactic ends of
+ -- the subprogram.
if Ekind (Spec_Id) = E_Procedure
or else Ekind (Spec_Id) = E_Generic_Procedure
@@ -4342,13 +4314,13 @@ package body Exp_Ch6 is
-- raise Program_Error;
-- end;
- -- This approach is necessary because the raise must be signalled
- -- to the caller, not handled by any local handler (RM 6.4(11)).
+ -- This approach is necessary because the raise must be signalled to the
+ -- caller, not handled by any local handler (RM 6.4(11)).
- -- Note: we do not need to analyze the constructed sequence here,
- -- since it has no handler, and an attempt to analyze the handled
- -- statement sequence twice is risky in various ways (e.g. the
- -- issue of expanding cleanup actions twice).
+ -- Note: we do not need to analyze the constructed sequence here, since
+ -- it has no handler, and an attempt to analyze the handled statement
+ -- sequence twice is risky in various ways (e.g. the issue of expanding
+ -- cleanup actions twice).
elsif Has_Missing_Return (Spec_Id) then
declare
@@ -4736,22 +4708,6 @@ package body Exp_Ch6 is
end if;
end Is_Build_In_Place_Function_Call;
- ---------------------------------------
- -- Is_Build_In_Place_Function_Return --
- ---------------------------------------
-
- function Is_Build_In_Place_Function_Return (N : Node_Id) return Boolean is
- begin
- if Nkind_In (N, N_Simple_Return_Statement,
- N_Extended_Return_Statement)
- then
- return Is_Build_In_Place_Function
- (Return_Applies_To (Return_Statement_Entity (N)));
- else
- return False;
- end if;
- end Is_Build_In_Place_Function_Return;
-
-----------------------
-- Freeze_Subprogram --
-----------------------
@@ -4911,9 +4867,8 @@ package body Exp_Ch6 is
Register_Predefined_DT_Entry (Subp);
end if;
- Register_Primitive (Loc,
- Prim => Subp,
- Ins_Nod => N);
+ Insert_Actions_After (N,
+ Register_Primitive (Loc, Prim => Subp));
end if;
end if;
end;
@@ -4935,6 +4890,61 @@ package body Exp_Ch6 is
end;
end Freeze_Subprogram;
+ -----------------------
+ -- Is_Null_Procedure --
+ -----------------------
+
+ function Is_Null_Procedure (Subp : Entity_Id) return Boolean is
+ Decl : constant Node_Id := Unit_Declaration_Node (Subp);
+
+ begin
+ if Ekind (Subp) /= E_Procedure then
+ return False;
+
+ -- Check if this is a declared null procedure
+
+ elsif Nkind (Decl) = N_Subprogram_Declaration then
+ if Null_Present (Specification (Decl)) then
+ return True;
+
+ elsif No (Body_To_Inline (Decl)) then
+ return False;
+
+ -- Check if the body contains only a null statement, followed by
+ -- the return statement added during expansion.
+
+ else
+ declare
+ Orig_Bod : constant Node_Id := Body_To_Inline (Decl);
+
+ Stat : Node_Id;
+ Stat2 : Node_Id;
+
+ begin
+ if Nkind (Orig_Bod) /= N_Subprogram_Body then
+ return False;
+ else
+ Stat :=
+ First
+ (Statements (Handled_Statement_Sequence (Orig_Bod)));
+ Stat2 := Next (Stat);
+
+ return
+ Nkind (Stat) = N_Null_Statement
+ and then
+ (No (Stat2)
+ or else
+ (Nkind (Stat2) = N_Simple_Return_Statement
+ and then No (Next (Stat2))));
+ end if;
+ end;
+ end if;
+
+ else
+ return False;
+ end if;
+ end Is_Null_Procedure;
+
-------------------------------------------
-- Make_Build_In_Place_Call_In_Allocator --
-------------------------------------------
@@ -5593,7 +5603,7 @@ package body Exp_Ch6 is
-- in current scope). The Next_Entity links of the two entities also
-- have to be swapped since the entities are part of the return
-- scope's entity list and the list structure would otherwise be
- -- corrupted.
+ -- corrupted. Finally, the homonym chain must be preserved as well.
declare
Renaming_Def_Id : constant Entity_Id :=
@@ -5607,6 +5617,7 @@ package body Exp_Ch6 is
Set_Next_Entity (Renaming_Def_Id, Next_Entity (Obj_Def_Id));
Set_Next_Entity (Obj_Def_Id, Next_Entity_Temp);
+ Set_Homonym (Renaming_Def_Id, Homonym (Obj_Def_Id));
Exchange_Entities (Renaming_Def_Id, Obj_Def_Id);
end;
diff --git a/gcc/ada/exp_ch6.ads b/gcc/ada/exp_ch6.ads
index c470ee329ab..242995f490d 100644
--- a/gcc/ada/exp_ch6.ads
+++ b/gcc/ada/exp_ch6.ads
@@ -112,11 +112,6 @@ package Exp_Ch6 is
-- that requires handling as a build-in-place call or is a qualified
-- expression applied to such a call; otherwise returns False.
- function Is_Build_In_Place_Function_Return (N : Node_Id) return Boolean;
- -- Ada 2005 (AI-318-02): Returns True if N is an N_Simple_Return_Statement
- -- or N_Extended_Return_Statement and it applies to a build-in-place
- -- function or generic function.
-
procedure Make_Build_In_Place_Call_In_Allocator
(Allocator : Node_Id;
Function_Call : Node_Id);
diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb
index c44c17f3e30..ea05b24b264 100644
--- a/gcc/ada/exp_ch7.adb
+++ b/gcc/ada/exp_ch7.adb
@@ -87,11 +87,11 @@ package body Exp_Ch7 is
-- (See Wrap_Transient_Expression for details)
-- 3. In a expression of an object_declaration. No wrapping is possible
- -- here, so the finalization actions, if any are done right after the
+ -- here, so the finalization actions, if any, are done right after the
-- declaration and the secondary stack deallocation is done in the
-- proper enclosing scope (see Wrap_Transient_Declaration for details)
- -- Note about functions returning tagged types: It has been decided to
+ -- Note about functions returning tagged types: it has been decided to
-- always allocate their result in the secondary stack, even though is not
-- absolutely mandatory when the tagged type is constrained because the
-- caller knows the size of the returned object and thus could allocate the
@@ -124,10 +124,9 @@ package body Exp_Ch7 is
--------------------------------------------------
function Find_Node_To_Be_Wrapped (N : Node_Id) return Node_Id;
- -- N is a node which may generate a transient scope. Loop over the
- -- parent pointers of N until it find the appropriate node to
- -- wrap. It it returns Empty, it means that no transient scope is
- -- needed in this context.
+ -- N is a node which may generate a transient scope. Loop over the parent
+ -- pointers of N until it find the appropriate node to wrap. If it returns
+ -- Empty, it means that no transient scope is needed in this context.
function Make_Clean
(N : Node_Id;
@@ -158,14 +157,14 @@ package body Exp_Ch7 is
procedure Insert_Actions_In_Scope_Around (N : Node_Id);
-- Insert the before-actions kept in the scope stack before N, and the
- -- after after-actions, after N which must be a member of a list.
+ -- after-actions after N, which must be a member of a list.
function Make_Transient_Block
(Loc : Source_Ptr;
Action : Node_Id) return Node_Id;
- -- Create a transient block whose name is Scope, which is also a
- -- controlled block if Flist is not empty and whose only code is
- -- Action (either a single statement or single declaration).
+ -- Create a transient block whose name is Scope, which is also a controlled
+ -- block if Flist is not empty and whose only code is Action (either a
+ -- single statement or single declaration).
type Final_Primitives is (Initialize_Case, Adjust_Case, Finalize_Case);
-- This enumeration type is defined in order to ease sharing code for
@@ -193,26 +192,24 @@ package body Exp_Ch7 is
(Prim : Final_Primitives;
Typ : Entity_Id;
Stmts : List_Id) return Node_Id;
- -- This function generates the tree for Deep_Initialize, Deep_Adjust
- -- or Deep_Finalize procedures according to the first parameter,
- -- these procedures operate on the type Typ. The Stmts parameter
- -- gives the body of the procedure.
+ -- This function generates the tree for Deep_Initialize, Deep_Adjust or
+ -- Deep_Finalize procedures according to the first parameter, these
+ -- procedures operate on the type Typ. The Stmts parameter gives the body
+ -- of the procedure.
function Make_Deep_Array_Body
(Prim : Final_Primitives;
Typ : Entity_Id) return List_Id;
-- This function generates the list of statements for implementing
- -- Deep_Initialize, Deep_Adjust or Deep_Finalize procedures
- -- according to the first parameter, these procedures operate on the
- -- array type Typ.
+ -- Deep_Initialize, Deep_Adjust or Deep_Finalize procedures according to
+ -- the first parameter, these procedures operate on the array type Typ.
function Make_Deep_Record_Body
(Prim : Final_Primitives;
Typ : Entity_Id) return List_Id;
-- This function generates the list of statements for implementing
- -- Deep_Initialize, Deep_Adjust or Deep_Finalize procedures
- -- according to the first parameter, these procedures operate on the
- -- record type Typ.
+ -- Deep_Initialize, Deep_Adjust or Deep_Finalize procedures according to
+ -- the first parameter, these procedures operate on the record type Typ.
procedure Check_Visibly_Controlled
(Prim : Final_Primitives;
@@ -1371,47 +1368,38 @@ package body Exp_Ch7 is
end if;
-- Resolution is now finished, make sure we don't start analysis again
- -- because of the duplication
+ -- because of the duplication.
Set_Analyzed (N);
Ref := Duplicate_Subexpr_No_Checks (N);
- -- Now we can generate the Attach Call, note that this value is
- -- always in the (secondary) stack and thus is attached to a singly
- -- linked final list:
+ -- Now we can generate the Attach Call. Note that this value is always
+ -- on the (secondary) stack and thus is attached to a singly linked
+ -- final list:
-- Resx := F (X)'reference;
-- Attach_To_Final_List (_Lx, Resx.all, 1);
- -- or when there are controlled components
+ -- or when there are controlled components:
-- Attach_To_Final_List (_Lx, Resx._controller, 1);
- -- or when it is both is_controlled and has_controlled_components
+ -- or when it is both Is_Controlled and Has_Controlled_Components:
-- Attach_To_Final_List (_Lx, Resx._controller, 1);
-- Attach_To_Final_List (_Lx, Resx, 1);
- -- or if it is an array with is_controlled (and has_controlled)
+ -- or if it is an array with Is_Controlled (and Has_Controlled)
-- Attach_To_Final_List (_Lx, Resx (Resx'last), 3);
- -- An attach level of 3 means that a whole array is to be
- -- attached to the finalization list (including the controlled
- -- components)
- -- or if it is an array with has_controlled components but not
- -- is_controlled
+ -- An attach level of 3 means that a whole array is to be attached to
+ -- the finalization list (including the controlled components).
- -- Attach_To_Final_List (_Lx, Resx (Resx'last)._controller, 3);
-
- -- If the context is an aggregate, the call will be expanded into an
- -- assignment, and the attachment will be done when the aggregate
- -- expansion is complete. See body of Exp_Aggr for the treatment of
- -- other controlled components.
+ -- or if it is an array with Has_Controlled_Components but not
+ -- Is_Controlled:
- if Nkind (Parent (N)) = N_Aggregate then
- return;
- end if;
+ -- Attach_To_Final_List (_Lx, Resx (Resx'last)._controller, 3);
-- Case where type has controlled components
@@ -1424,10 +1412,10 @@ package body Exp_Ch7 is
if Is_Array_Type (T2) then
Len_Ref :=
Make_Attribute_Reference (Loc,
- Prefix =>
- Duplicate_Subexpr_Move_Checks
- (Unchecked_Convert_To (T2, Ref)),
- Attribute_Name => Name_Length);
+ Prefix =>
+ Duplicate_Subexpr_Move_Checks
+ (Unchecked_Convert_To (T2, Ref)),
+ Attribute_Name => Name_Length);
end if;
while Is_Array_Type (T2) loop
@@ -1461,8 +1449,8 @@ package body Exp_Ch7 is
end if;
end;
- -- Here we know that 'Ref' has a controller so we may as well
- -- attach it directly
+ -- Here we know that 'Ref' has a controller so we may as well attach
+ -- it directly.
Action :=
Make_Attach_Call (
@@ -1480,12 +1468,12 @@ package body Exp_Ch7 is
With_Attach => Make_Integer_Literal (Loc, Attach_Level));
end if;
- -- Here, we have a controlled type that does not seem to have
- -- controlled components but it could be a class wide type whose
- -- further derivations have controlled components. So we don't know
- -- if the object itself needs to be attached or if it has a record
- -- controller. We need to call a runtime function (Deep_Tag_Attach)
- -- which knows what to do thanks to the RC_Offset in the dispatch table.
+ -- Here, we have a controlled type that does not seem to have controlled
+ -- components but it could be a class wide type whose further
+ -- derivations have controlled components. So we don't know if the
+ -- object itself needs to be attached or if it has a record controller.
+ -- We need to call a runtime function (Deep_Tag_Attach) which knows what
+ -- to do thanks to the RC_Offset in the dispatch table.
else
Action :=
diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb
index 1a91bf1b0a3..d09911a680b 100644
--- a/gcc/ada/exp_ch9.adb
+++ b/gcc/ada/exp_ch9.adb
@@ -1132,8 +1132,9 @@ package body Exp_Ch9 is
-- for Lnn in Family_Low .. Family_High loop
-- Inn := Inn + 1;
-- Set_Entry_Name
- -- (_init._object, Inn, new String ("<Entry name> " & Lnn'Img));
- -- _init._task_id
+ -- (_init._object <or> _init._task_id,
+ -- Inn,
+ -- new String ("<Entry name>(" & Lnn'Img & ")"));
-- end loop;
-- Note that the bounds of the range may reference discriminants. The
-- above construct is added directly to the statements of the block.
@@ -1141,8 +1142,10 @@ package body Exp_Ch9 is
procedure Build_Entry_Name (Id : Entity_Id);
-- Generate:
-- Inn := Inn + 1;
- -- Set_Entry_Name (_init._task_id, Inn, new String ("<Entry name>");
- -- _init._object
+ -- Set_Entry_Name
+ -- (_init._object <or>_init._task_id,
+ -- Inn,
+ -- new String ("<Entry name>");
-- The above construct is added directly to the statements of the block.
function Build_Set_Entry_Name_Call (Arg3 : Node_Id) return Node_Id;
@@ -1213,13 +1216,12 @@ package body Exp_Ch9 is
begin
Get_Name_String (Chars (Id));
- if Is_Enumeration_Type (Etype (Def)) then
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := ' ';
- end if;
+ -- Add a leading '('
+
+ Add_Char_To_Name_Buffer ('(');
-- Generate:
- -- new String'("<Entry name>" & Lnn'Img);
+ -- new String'("<Entry name>(" & Lnn'Img & ")");
-- This is an implicit heap allocation, and Comes_From_Source is
-- False, which ensures that it will get flagged as a violation of
@@ -1233,13 +1235,18 @@ package body Exp_Ch9 is
Expression =>
Make_Op_Concat (Loc,
Left_Opnd =>
- Make_String_Literal (Loc,
- String_From_Name_Buffer),
+ Make_Op_Concat (Loc,
+ Left_Opnd =>
+ Make_String_Literal (Loc,
+ Strval => String_From_Name_Buffer),
+ Right_Opnd =>
+ Make_Attribute_Reference (Loc,
+ Prefix =>
+ New_Reference_To (L_Id, Loc),
+ Attribute_Name => Name_Img)),
Right_Opnd =>
- Make_Attribute_Reference (Loc,
- Prefix =>
- New_Reference_To (L_Id, Loc),
- Attribute_Name => Name_Img))));
+ Make_String_Literal (Loc,
+ Strval => ")"))));
Increment_Index (L_Stmts);
Append_To (L_Stmts, Build_Set_Entry_Name_Call (Val));
@@ -1247,7 +1254,8 @@ package body Exp_Ch9 is
-- Generate:
-- for Lnn in Family_Low .. Family_High loop
-- Inn := Inn + 1;
- -- Set_Entry_Name (_init._task_id, Inn, <Val>);
+ -- Set_Entry_Name
+ -- (_init._object <or> _init._task_id, Inn, <Val>);
-- end loop;
Append_To (B_Stmts,
@@ -3167,13 +3175,9 @@ package body Exp_Ch9 is
Name_Len := Name_Len - 1;
end if;
- Name_Buffer (Name_Len + 1) := '_';
- Name_Buffer (Name_Len + 2) := '_';
-
- Name_Len := Name_Len + 2;
+ Add_Str_To_Name_Buffer ("__");
for J in 1 .. Select_Len loop
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := Select_Buffer (J);
+ Add_Char_To_Name_Buffer (Select_Buffer (J));
end loop;
-- Now add the Append_Char if specified. The encoding to follow
@@ -3186,13 +3190,10 @@ package body Exp_Ch9 is
if Append_Char /= ' ' then
if Append_Char = 'P' or Append_Char = 'N' then
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := Append_Char;
+ Add_Char_To_Name_Buffer (Append_Char);
return Name_Find;
else
- Name_Buffer (Name_Len + 1) := '_';
- Name_Buffer (Name_Len + 2) := Append_Char;
- Name_Len := Name_Len + 2;
+ Add_Str_To_Name_Buffer ((1 => '_', 2 => Append_Char));
return New_External_Name (Name_Find, ' ', -1);
end if;
else
@@ -7461,10 +7462,27 @@ package body Exp_Ch9 is
E_Count : Int;
Object_Comp : Node_Id;
+ procedure Check_Inlining (Subp : Entity_Id);
+ -- If the original operation has a pragma Inline, propagate the flag
+ -- to the internal body, for possible inlining later on. The source
+ -- operation is invisible to the back-end and is never actually called.
+
procedure Register_Handler;
-- For a protected operation that is an interrupt handler, add the
-- freeze action that will register it as such.
+ --------------------
+ -- Check_Inlining --
+ --------------------
+
+ procedure Check_Inlining (Subp : Entity_Id) is
+ begin
+ if Is_Inlined (Subp) then
+ Set_Is_Inlined (Protected_Body_Subprogram (Subp));
+ Set_Is_Inlined (Subp, False);
+ end if;
+ end Check_Inlining;
+
----------------------
-- Register_Handler --
----------------------
@@ -7713,7 +7731,7 @@ package body Exp_Ch9 is
Set_Protected_Body_Subprogram
(Defining_Unit_Name (Specification (Priv)),
Defining_Unit_Name (Specification (Sub)));
-
+ Check_Inlining (Defining_Unit_Name (Specification (Priv)));
Current_Node := Sub;
Sub :=
@@ -7800,6 +7818,7 @@ package body Exp_Ch9 is
Set_Protected_Body_Subprogram
(Defining_Unit_Name (Specification (Comp)),
Defining_Unit_Name (Specification (Sub)));
+ Check_Inlining (Defining_Unit_Name (Specification (Comp)));
-- Make the protected version of the subprogram available for
-- expansion of external calls.
diff --git a/gcc/ada/exp_code.adb b/gcc/ada/exp_code.adb
index e42bd6aa9dc..2b0275268cf 100644
--- a/gcc/ada/exp_code.adb
+++ b/gcc/ada/exp_code.adb
@@ -220,8 +220,7 @@ package body Exp_Code is
Name_Len := 0;
loop
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := C;
+ Add_Char_To_Name_Buffer (C);
Clobber_Ptr := Clobber_Ptr + 1;
exit when Clobber_Ptr > Len;
C := Get_Character (Get_String_Char (Str, Clobber_Ptr));
diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb
index 72131c4f68b..d0903200a59 100644
--- a/gcc/ada/exp_disp.adb
+++ b/gcc/ada/exp_disp.adb
@@ -164,14 +164,29 @@ package body Exp_Disp is
-- Handle full type declarations and derivations of library
-- level tagged types
- elsif (Nkind (D) = N_Full_Type_Declaration
- or else Nkind (D) = N_Derived_Type_Definition)
+ elsif Nkind_In (D, N_Full_Type_Declaration,
+ N_Derived_Type_Definition)
and then Is_Library_Level_Tagged_Type (Defining_Entity (D))
and then Ekind (Defining_Entity (D)) /= E_Record_Subtype
and then not Is_Private_Type (Defining_Entity (D))
then
- Insert_List_After_And_Analyze (Last (Target_List),
- Make_DT (Defining_Entity (D)));
+ -- We do not generate dispatch tables for the internal type
+ -- created for a type extension with unknown discriminants
+ -- The needed information is shared with the source type,
+ -- See Expand_N_Record_Extension.
+
+ if not Comes_From_Source (Defining_Entity (D))
+ and then
+ Has_Unknown_Discriminants (Etype (Defining_Entity (D)))
+ and then
+ not Comes_From_Source (First_Subtype (Defining_Entity (D)))
+ then
+ null;
+
+ else
+ Insert_List_After_And_Analyze (Last (Target_List),
+ Make_DT (Defining_Entity (D)));
+ end if;
-- Handle private types of library level tagged types. We must
-- exchange the private and full-view to ensure the correct
@@ -6273,17 +6288,16 @@ package body Exp_Disp is
-- Register_Primitive --
------------------------
- procedure Register_Primitive
+ function Register_Primitive
(Loc : Source_Ptr;
- Prim : Entity_Id;
- Ins_Nod : Node_Id)
+ Prim : Entity_Id) return List_Id
is
DT_Ptr : Entity_Id;
Iface_Prim : Entity_Id;
Iface_Typ : Entity_Id;
Iface_DT_Ptr : Entity_Id;
Iface_DT_Elmt : Elmt_Id;
- L : List_Id;
+ L : constant List_Id := New_List;
Pos : Uint;
Tag : Entity_Id;
Tag_Typ : Entity_Id;
@@ -6294,7 +6308,7 @@ package body Exp_Disp is
pragma Assert (not Restriction_Active (No_Dispatching_Calls));
if not RTE_Available (RE_Tag) then
- return;
+ return L;
end if;
if not Present (Interface_Alias (Prim)) then
@@ -6308,7 +6322,7 @@ package body Exp_Disp is
DT_Ptr :=
Node (Next_Elmt (First_Elmt (Access_Disp_Table (Tag_Typ))));
- Insert_After (Ins_Nod,
+ Append_To (L,
Build_Set_Predefined_Prim_Op_Address (Loc,
Tag_Node => New_Reference_To (DT_Ptr, Loc),
Position => Pos,
@@ -6324,7 +6338,7 @@ package body Exp_Disp is
and then RTE_Record_Component_Available (RE_Size_Func)
then
DT_Ptr := Node (First_Elmt (Access_Disp_Table (Tag_Typ)));
- Insert_After (Ins_Nod,
+ Append_To (L,
Build_Set_Size_Function (Loc,
Tag_Node => New_Reference_To (DT_Ptr, Loc),
Size_Func => Prim));
@@ -6334,7 +6348,7 @@ package body Exp_Disp is
pragma Assert (Pos /= Uint_0 and then Pos <= DT_Entry_Count (Tag));
DT_Ptr := Node (First_Elmt (Access_Disp_Table (Tag_Typ)));
- Insert_After (Ins_Nod,
+ Append_To (L,
Build_Set_Prim_Op_Address (Loc,
Typ => Tag_Typ,
Tag_Node => New_Reference_To (DT_Ptr, Loc),
@@ -6363,12 +6377,6 @@ package body Exp_Disp is
if not Is_Ancestor (Iface_Typ, Tag_Typ)
and then Present (Thunk_Code)
then
- -- Comment needed on why checks are suppressed. This is not just
- -- efficiency, but fundamental functionality (see 1.295 RH, which
- -- still does not answer this question) ???
-
- Insert_Action (Ins_Nod, Thunk_Code, Suppress => All_Checks);
-
-- Generate the code necessary to fill the appropriate entry of
-- the secondary dispatch table of Prim's controlling type with
-- Thunk_Id's address.
@@ -6380,7 +6388,8 @@ package body Exp_Disp is
Iface_Prim := Interface_Alias (Prim);
Pos := DT_Position (Iface_Prim);
Tag := First_Tag_Component (Iface_Typ);
- L := New_List;
+
+ Prepend_To (L, Thunk_Code);
if Is_Predefined_Dispatching_Operation (Prim)
or else Is_Predefined_Dispatching_Alias (Prim)
@@ -6412,8 +6421,6 @@ package body Exp_Disp is
Prefix => New_Reference_To (Alias (Prim), Loc),
Attribute_Name => Name_Unrestricted_Access))));
- Insert_Actions_After (Ins_Nod, L);
-
else
pragma Assert (Pos /= Uint_0
and then Pos <= DT_Entry_Count (Tag));
@@ -6445,10 +6452,11 @@ package body Exp_Disp is
Prefix => New_Reference_To (Alias (Prim), Loc),
Attribute_Name => Name_Unrestricted_Access))));
- Insert_Actions_After (Ins_Nod, L);
end if;
end if;
end if;
+
+ return L;
end Register_Primitive;
-------------------------
diff --git a/gcc/ada/exp_disp.ads b/gcc/ada/exp_disp.ads
index abdc949855e..ed866695246 100644
--- a/gcc/ada/exp_disp.ads
+++ b/gcc/ada/exp_disp.ads
@@ -306,19 +306,22 @@ package Exp_Disp is
-- tagged types this routine imports the forward declaration of the tag
-- entity, that will be declared and exported by Make_DT.
- procedure Register_Primitive
+ function Register_Primitive
(Loc : Source_Ptr;
- Prim : Entity_Id;
- Ins_Nod : Node_Id);
- -- Register Prim in the corresponding primary or secondary dispatch table.
+ Prim : Entity_Id) return List_Id;
+ -- Build code to register Prim in the primary or secondary dispatch table.
-- If Prim is associated with a secondary dispatch table then generate also
-- its thunk and register it in the associated secondary dispatch table.
-- In general the dispatch tables are always generated by Make_DT and
-- Make_Secondary_DT; this routine is only used in two corner cases:
+ --
-- 1) To construct the dispatch table of a tagged type whose parent
-- is a CPP_Class (see Build_Init_Procedure).
-- 2) To handle late overriding of dispatching operations (see
- -- Check_Dispatching_Operation).
+ -- Check_Dispatching_Operation and Make_DT).
+ --
+ -- The caller is responsible for inserting the generated code in the
+ -- proper place.
procedure Set_All_DT_Position (Typ : Entity_Id);
-- Set the DT_Position field for each primitive operation. In the CPP
diff --git a/gcc/ada/exp_dist.adb b/gcc/ada/exp_dist.adb
index 0fc6288604f..04a2187c8ce 100644
--- a/gcc/ada/exp_dist.adb
+++ b/gcc/ada/exp_dist.adb
@@ -3645,9 +3645,7 @@ package body Exp_Dist is
(Vis_Decl : Node_Id;
RAS_Type : Entity_Id)
is
- pragma Warnings (Off);
pragma Unreferenced (RAS_Type);
- pragma Warnings (On);
begin
Add_RAS_Access_TSS (Vis_Decl);
end Add_RAST_Features;
@@ -4111,10 +4109,8 @@ package body Exp_Dist is
-- List of statements for extra formal parameters. It will appear
-- after the regular statements for writing out parameters.
- pragma Warnings (Off);
pragma Unreferenced (RACW_Type);
-- Used only for the PolyORB case
- pragma Warnings (On);
begin
-- The general form of a calling stub for a given subprogram is:
@@ -5601,9 +5597,7 @@ package body Exp_Dist is
RPC_Receiver_Decl : Node_Id;
Body_Decls : List_Id)
is
- pragma Warnings (Off);
pragma Unreferenced (RPC_Receiver_Decl);
- pragma Warnings (On);
begin
Add_RACW_From_Any
@@ -5730,9 +5724,8 @@ package body Exp_Dist is
Stub_Type_Access : Entity_Id;
Body_Decls : List_Id)
is
- pragma Warnings (Off);
pragma Unreferenced (Stub_Type, Stub_Type_Access);
- pragma Warnings (On);
+
Loc : constant Source_Ptr := Sloc (RACW_Type);
Proc_Decl : Node_Id;
@@ -6047,9 +6040,7 @@ package body Exp_Dist is
Stub_Type_Access : Entity_Id;
Body_Decls : List_Id)
is
- pragma Warnings (Off);
pragma Unreferenced (Stub_Type, Stub_Type_Access);
- pragma Warnings (On);
Loc : constant Source_Ptr := Sloc (RACW_Type);
@@ -7157,13 +7148,37 @@ package body Exp_Dist is
is
Loc : constant Source_Ptr := Sloc (Nod);
+ Request : constant Entity_Id :=
+ Make_Defining_Identifier (Loc, New_Internal_Name ('R'));
+ -- The request object constructed by these stubs
+ -- Could we use Name_R instead??? (see GLADE client stubs)
+
+ function Make_Request_RTE_Call
+ (RE : RE_Id;
+ Actuals : List_Id := New_List) return Node_Id;
+ -- Generate a procedure call statement calling RE with the given
+ -- actuals. Request is appended to the list.
+
+ ---------------------------
+ -- Make_Request_RTE_Call --
+ ---------------------------
+
+ function Make_Request_RTE_Call
+ (RE : RE_Id;
+ Actuals : List_Id := New_List) return Node_Id
+ is
+ begin
+ Append_To (Actuals, New_Occurrence_Of (Request, Loc));
+ return Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Occurrence_Of (RTE (RE), Loc),
+ Parameter_Associations => Actuals);
+ end Make_Request_RTE_Call;
+
Arguments : Node_Id;
-- Name of the named values list used to transmit parameters
-- to the remote package
- Request : Node_Id;
- -- The request object constructed by these stubs
-
Result : Node_Id;
-- Name of the result named value (in non-APC cases) which get the
-- result of the remote subprogram.
@@ -7194,8 +7209,8 @@ package body Exp_Dist is
-- after the regular statements for writing out parameters.
After_Statements : constant List_Id := New_List;
- -- Statements to be executed after call returns (to assign
- -- in out or out parameter values).
+ -- Statements to be executed after call returns (to assign IN OUT or
+ -- OUT parameter values).
Etyp : Entity_Id;
-- The type of the formal parameter being processed
@@ -7209,7 +7224,6 @@ package body Exp_Dist is
begin
-- ??? document general form of stub subprograms for the PolyORB case
- Request := Make_Defining_Identifier (Loc, New_Internal_Name ('R'));
Append_To (Decls,
Make_Object_Declaration (Loc,
@@ -7449,19 +7463,13 @@ package body Exp_Dist is
Append_List_To (Statements, Extra_Formal_Statements);
Append_To (Statements,
- Make_Procedure_Call_Statement (Loc,
- Name =>
- New_Occurrence_Of (RTE (RE_Request_Create), Loc),
-
- Parameter_Associations => New_List (
- Target_Object,
- Subprogram_Id,
- New_Occurrence_Of (Arguments, Loc),
- New_Occurrence_Of (Result, Loc),
- New_Occurrence_Of (RTE (RE_Nil_Exc_List), Loc))));
-
- Append_To (Parameter_Associations (Last (Statements)),
- New_Occurrence_Of (Request, Loc));
+ Make_Request_RTE_Call (RE_Request_Create, New_List (
+ Target_Object,
+ Subprogram_Id,
+ New_Occurrence_Of (Arguments, Loc),
+ New_Occurrence_Of (Result, Loc),
+ New_Occurrence_Of
+ (RTE (RE_Nil_Exc_List), Loc))));
pragma Assert
(not (Is_Known_Non_Asynchronous and Is_Known_Asynchronous));
@@ -7487,22 +7495,22 @@ package body Exp_Dist is
RTE (RE_Asynchronous_P_To_Sync_Scope), Loc),
Expressions => New_List (Asynchronous_P)));
- Append_To (Statements,
- Make_Procedure_Call_Statement (Loc,
- Name =>
- New_Occurrence_Of (RTE (RE_Request_Invoke), Loc),
- Parameter_Associations => New_List (
- New_Occurrence_Of (Request, Loc))));
+ Append_To (Statements, Make_Request_RTE_Call (RE_Request_Invoke));
- Non_Asynchronous_Statements := New_List (Make_Null_Statement (Loc));
- Asynchronous_Statements := New_List (Make_Null_Statement (Loc));
+ -- Asynchronous case
- if not Is_Known_Asynchronous then
+ if not Is_Known_Non_Asynchronous then
+ Asynchronous_Statements :=
+ New_List (Make_Request_RTE_Call (RE_Request_Destroy));
+ end if;
+
+ -- Non-asynchronous case
+ if not Is_Known_Asynchronous then
-- Reraise an exception occurrence from the completed request.
-- If the exception occurrence is empty, this is a no-op.
- Append_To (Non_Asynchronous_Statements,
+ Non_Asynchronous_Statements := New_List (
Make_Procedure_Call_Statement (Loc,
Name =>
New_Occurrence_Of (RTE (RE_Request_Raise_Occurrence), Loc),
@@ -7511,6 +7519,9 @@ package body Exp_Dist is
if Is_Function then
+ Append_To (Non_Asynchronous_Statements,
+ Make_Request_RTE_Call (RE_Request_Destroy));
+
-- If this is a function call, read the value and return it
Append_To (Non_Asynchronous_Statements,
@@ -7522,11 +7533,18 @@ package body Exp_Dist is
Prefix => Result,
Selector_Name => Name_Argument),
Decls))));
+
+ else
+
+ -- Case of a procedure: deal with IN OUT and OUT formals
+
+ Append_List_To (Non_Asynchronous_Statements, After_Statements);
+
+ Append_To (Non_Asynchronous_Statements,
+ Make_Request_RTE_Call (RE_Request_Destroy));
end if;
end if;
- Append_List_To (Non_Asynchronous_Statements, After_Statements);
-
if Is_Known_Asynchronous then
Append_List_To (Statements, Asynchronous_Statements);
@@ -7602,9 +7620,8 @@ package body Exp_Dist is
RPC_Receiver_Decl : out Node_Id)
is
Loc : constant Source_Ptr := Sloc (Stub_Type);
- pragma Warnings (Off);
+
pragma Unreferenced (RACW_Type);
- pragma Warnings (On);
begin
Stub_Type_Decl :=
@@ -7667,9 +7684,9 @@ package body Exp_Dist is
Request := Make_Defining_Identifier (Loc, Name_R);
RPC_Receiver_Spec :=
- Build_RPC_Receiver_Specification (
- RPC_Receiver => RPC_Receiver,
- Request_Parameter => Request);
+ Build_RPC_Receiver_Specification
+ (RPC_Receiver => RPC_Receiver,
+ Request_Parameter => Request);
Subp_Id := Make_Defining_Identifier (Loc, Name_P);
Subp_Index := Make_Defining_Identifier (Loc, Name_I);
@@ -8461,8 +8478,17 @@ package body Exp_Dist is
else
declare
Decl : Entity_Id;
+ Typ : Entity_Id := U_Type;
+
begin
- Build_From_Any_Function (Loc, U_Type, Decl, Fnam);
+ -- For the subtype representing a generic actual type, go
+ -- to the base type.
+
+ if Is_Generic_Actual_Type (Typ) then
+ Typ := Base_Type (Typ);
+ end if;
+
+ Build_From_Any_Function (Loc, Typ, Decl, Fnam);
Append_To (Decls, Decl);
end;
end if;
@@ -8528,7 +8554,7 @@ package body Exp_Dist is
Parameter_Type => New_Occurrence_Of (RTE (RE_Any), Loc))),
Result_Definition => New_Occurrence_Of (Typ, Loc));
- -- The following is taken care of by Exp_Dist.Add_RACW_From_Any
+ -- The RACW case is taken care of by Exp_Dist.Add_RACW_From_Any
pragma Assert
(not (Is_Remote_Access_To_Class_Wide_Type (Typ)));
@@ -8565,11 +8591,10 @@ package body Exp_Dist is
Append_To (Stms,
Make_Simple_Return_Statement (Loc,
Expression =>
- OK_Convert_To (Typ,
- Build_From_Any_Call
- (Etype (Typ),
- New_Occurrence_Of (Any_Parameter, Loc),
- Decls))));
+ Build_From_Any_Call
+ (Etype (Typ),
+ New_Occurrence_Of (Any_Parameter, Loc),
+ Decls)));
else
declare
@@ -9859,9 +9884,7 @@ package body Exp_Dist is
Counter : Entity_Id;
Datum : Node_Id)
is
- pragma Warnings (Off);
pragma Unreferenced (Counter);
- pragma Warnings (On);
Element_Any : Node_Id;
@@ -10352,9 +10375,7 @@ package body Exp_Dist is
Rec : Entity_Id;
Field : Node_Id)
is
- pragma Warnings (Off);
pragma Unreferenced (Any, Counter, Rec);
- pragma Warnings (On);
begin
if Nkind (Field) = N_Defining_Identifier then
diff --git a/gcc/ada/exp_fixd.adb b/gcc/ada/exp_fixd.adb
index afac7b0b298..fa878c2bf78 100644
--- a/gcc/ada/exp_fixd.adb
+++ b/gcc/ada/exp_fixd.adb
@@ -1701,13 +1701,15 @@ package body Exp_Fixd is
Set_Result (N, Expr, Rng_Check, Trunc => True);
-- Normal case where multiply is required
+ -- Rounding is truncating for decimal fixed point types only,
+ -- see RM 4.6(29).
else
Set_Result (N,
Build_Multiply (N,
Fpt_Value (Expr),
Real_Literal (N, Ureal_1 / Small)),
- Rng_Check, Trunc => True);
+ Rng_Check, Trunc => Is_Decimal_Fixed_Point_Type (Result_Type));
end if;
end Expand_Convert_Float_To_Fixed;
diff --git a/gcc/ada/exp_imgv.adb b/gcc/ada/exp_imgv.adb
index ed53ca0c111..cf4a9c02a80 100644
--- a/gcc/ada/exp_imgv.adb
+++ b/gcc/ada/exp_imgv.adb
@@ -1158,9 +1158,8 @@ package body Exp_Imgv is
-- as is done with other ZFP violations.
declare
- pragma Warnings (Off); -- since Discard is unreferenced
Discard : constant Entity_Id := RTE (RE_Null);
- pragma Warnings (On);
+ pragma Unreferenced (Discard);
begin
return;
end;
diff --git a/gcc/ada/fmap.adb b/gcc/ada/fmap.adb
index 6770ee96ecb..0d5061dd18d 100644
--- a/gcc/ada/fmap.adb
+++ b/gcc/ada/fmap.adb
@@ -321,9 +321,10 @@ package body Fmap is
if (Last < First + 2) or else (SP (Last - 1) /= '%')
or else (SP (Last) /= 's' and then SP (Last) /= 'b')
then
- Write_Str ("warning: mapping file """);
- Write_Str (File_Name);
- Write_Line (""" is incorrectly formatted");
+ Write_Line
+ ("warning: mapping file """ & File_Name &
+ """ is incorrectly formatted");
+ Write_Line ("Line = """ & SP (First .. Last) & '"');
Empty_Tables;
return;
end if;
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index 31b41d51470..31e32af0455 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -2483,36 +2483,17 @@ package body Freeze is
Error_Msg_Qual_Level := 0;
end if;
- -- Ada 2005 (AI-326): Check wrong use of tag incomplete
- -- types with unknown discriminants. For example:
-
- -- type T (<>) is tagged;
- -- procedure P (X : access T); -- ERROR
- -- procedure P (X : T); -- ERROR
-
if not From_With_Type (F_Type) then
if Is_Access_Type (F_Type) then
F_Type := Designated_Type (F_Type);
end if;
- if Ekind (F_Type) = E_Incomplete_Type
- and then Is_Tagged_Type (F_Type)
- and then not Is_Class_Wide_Type (F_Type)
- and then No (Full_View (F_Type))
- and then Unknown_Discriminants_Present
- (Parent (F_Type))
- and then No (Stored_Constraint (F_Type))
- then
- Error_Msg_N
- ("(Ada 2005): invalid use of unconstrained tagged"
- & " incomplete type", E);
-
-- If the formal is an anonymous_access_to_subprogram
-- freeze the subprogram type as well, to prevent
-- scope anomalies in gigi, because there is no other
-- clear point at which it could be frozen.
- elsif Is_Itype (Etype (Formal))
+ if Is_Itype (Etype (Formal))
and then Ekind (F_Type) = E_Subprogram_Type
then
Freeze_And_Append (F_Type, Loc, Result);
@@ -2522,7 +2503,7 @@ package body Freeze is
Next_Formal (Formal);
end loop;
- -- Case of function
+ -- Case of function: similar checks on return type.
if Ekind (E) = E_Function then
@@ -2594,36 +2575,17 @@ package body Freeze is
end if;
end if;
- if Is_Array_Type (Etype (E))
- and then not Is_Constrained (Etype (E))
+ if Is_Array_Type (R_Type)
+ and then not Is_Constrained (R_Type)
and then not Is_Imported (E)
and then Has_Foreign_Convention (E)
and then Warn_On_Export_Import
and then not Has_Warnings_Off (E)
- and then not Has_Warnings_Off (Etype (E))
+ and then not Has_Warnings_Off (R_Type)
then
Error_Msg_N
("?foreign convention function& should not " &
"return unconstrained array!", E);
-
- -- Ada 2005 (AI-326): Check wrong use of tagged
- -- incomplete type
-
- -- type T is tagged;
- -- function F (X : Boolean) return T; -- ERROR
-
- -- The type must be declared in the current scope for the
- -- use to be legal, and the full view must be available
- -- when the construct that mentions it is frozen.
-
- elsif Ekind (Etype (E)) = E_Incomplete_Type
- and then Is_Tagged_Type (Etype (E))
- and then No (Full_View (Etype (E)))
- and then not Is_Value_Type (Etype (E))
- then
- Error_Msg_N
- ("(Ada 2005): invalid use of tagged incomplete type",
- E);
end if;
end if;
end;
@@ -3510,62 +3472,36 @@ package body Freeze is
-- For access subprogram, freeze types of all formals, the return
-- type was already frozen, since it is the Etype of the function.
+ -- Formal types can be tagged Taft amendment types, but otherwise
+ -- they cannot be incomplete.
elsif Ekind (E) = E_Subprogram_Type then
Formal := First_Formal (E);
+
while Present (Formal) loop
+ if Ekind (Etype (Formal)) = E_Incomplete_Type
+ and then No (Full_View (Etype (Formal)))
+ and then not Is_Value_Type (Etype (Formal))
+ then
+ if Is_Tagged_Type (Etype (Formal)) then
+ null;
+ else
+ Error_Msg_NE
+ ("invalid use of incomplete type&", E, Etype (Formal));
+ end if;
+ end if;
+
Freeze_And_Append (Etype (Formal), Loc, Result);
Next_Formal (Formal);
end loop;
Freeze_Subprogram (E);
- -- Ada 2005 (AI-326): Check wrong use of tag incomplete type
-
- -- type T is tagged;
- -- type Acc is access function (X : T) return T; -- ERROR
-
- if Ekind (Etype (E)) = E_Incomplete_Type
- and then Is_Tagged_Type (Etype (E))
- and then No (Full_View (Etype (E)))
- and then not Is_Value_Type (Etype (E))
- then
- Error_Msg_N
- ("(Ada 2005): invalid use of tagged incomplete type", E);
- end if;
-
-- For access to a protected subprogram, freeze the equivalent type
-- (however this is not set if we are not generating code or if this
-- is an anonymous type used just for resolution).
elsif Is_Access_Protected_Subprogram_Type (E) then
-
- -- AI-326: Check wrong use of tagged incomplete types
-
- -- type T is tagged;
- -- type As3D is access protected
- -- function (X : Float) return T; -- ERROR
-
- declare
- Etyp : Entity_Id;
-
- begin
- Etyp := Etype (Directly_Designated_Type (E));
-
- if Is_Class_Wide_Type (Etyp) then
- Etyp := Etype (Etyp);
- end if;
-
- if Ekind (Etyp) = E_Incomplete_Type
- and then Is_Tagged_Type (Etyp)
- and then No (Full_View (Etyp))
- and then not Is_Value_Type (Etype (E))
- then
- Error_Msg_N
- ("(Ada 2005): invalid use of tagged incomplete type", E);
- end if;
- end;
-
if Present (Equivalent_Type (E)) then
Freeze_And_Append (Equivalent_Type (E), Loc, Result);
end if;
diff --git a/gcc/ada/frontend.adb b/gcc/ada/frontend.adb
index 8f16a117866..7109383555f 100644
--- a/gcc/ada/frontend.adb
+++ b/gcc/ada/frontend.adb
@@ -42,7 +42,10 @@ with Nlists; use Nlists;
with Opt; use Opt;
with Osint;
with Par;
+with Prep;
with Prepcomp;
+with Restrict; use Restrict;
+with Rident; use Rident;
with Rtsfind;
with Sprint;
with Scn; use Scn;
@@ -64,12 +67,12 @@ procedure Frontend is
-- Gather configuration pragmas
begin
- -- Carry out package initializations. These are initializations which
- -- might logically be performed at elaboration time, were it not for
- -- the fact that we may be doing things more than once in the big loop
- -- over files. Like elaboration, the order in which these calls are
- -- made is in some cases important. For example, Lib cannot be
- -- initialized until Namet, since it uses names table entries.
+ -- Carry out package initializations. These are initializations which might
+ -- logically be performed at elaboration time, were it not for the fact
+ -- that we may be doing things more than once in the big loop over files.
+ -- Like elaboration, the order in which these calls are made is in some
+ -- cases important. For example, Lib cannot be initialized before Namet,
+ -- since it uses names table entries.
Rtsfind.Initialize;
Atree.Initialize;
@@ -82,6 +85,7 @@ begin
Fname.UF.Initialize;
Checks.Initialize;
Sem_Warn.Initialize;
+ Prep.Initialize;
-- Create package Standard
@@ -275,6 +279,17 @@ begin
end;
end if;
+ -- If we have restriction No_Exception_Propagation, and we did not have an
+ -- explicit switch turning off Warn_On_Non_Local_Exception, then turn on
+ -- this warning by default if we have encountered an exception handler.
+
+ if Restriction_Active (No_Exception_Propagation)
+ and then not No_Warn_On_Non_Local_Exception
+ and then Exception_Handler_Encountered
+ then
+ Warn_On_Non_Local_Exception := True;
+ end if;
+
-- Now on to the semantics. Skip if in syntax only mode
if Operating_Mode /= Check_Syntax then
diff --git a/gcc/ada/g-byorma.adb b/gcc/ada/g-byorma.adb
index 7e355b041b5..27138b463f4 100755
--- a/gcc/ada/g-byorma.adb
+++ b/gcc/ada/g-byorma.adb
@@ -31,6 +31,8 @@
-- --
------------------------------------------------------------------------------
+pragma Compiler_Unit;
+
package body GNAT.Byte_Order_Mark is
--------------
diff --git a/gcc/ada/g-byorma.ads b/gcc/ada/g-byorma.ads
index 6016f755bcc..d01404e6eb0 100755
--- a/gcc/ada/g-byorma.ads
+++ b/gcc/ada/g-byorma.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2006-2007, AdaCore --
+-- Copyright (C) 2006-2008, 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- --
@@ -63,9 +63,7 @@
-- cases depend on the first character of the XML file being < so that the
-- encoding of this character can be recognized.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package GNAT.Byte_Order_Mark is
diff --git a/gcc/ada/g-calend.adb b/gcc/ada/g-calend.adb
index 9d3c33d3d35..8ccd4337b61 100644
--- a/gcc/ada/g-calend.adb
+++ b/gcc/ada/g-calend.adb
@@ -293,7 +293,23 @@ package body GNAT.Calendar is
------------------
function Week_In_Year (Date : Time) return Week_In_Year_Number is
- Year : Year_Number;
+ Year : Year_Number;
+ Week : Week_In_Year_Number;
+ pragma Unreferenced (Year);
+ begin
+ Year_Week_In_Year (Date, Year, Week);
+ return Week;
+ end Week_In_Year;
+
+ -----------------------
+ -- Year_Week_In_Year --
+ -----------------------
+
+ procedure Year_Week_In_Year
+ (Date : Time;
+ Year : out Year_Number;
+ Week : out Week_In_Year_Number)
+ is
Month : Month_Number;
Day : Day_Number;
Hour : Hour_Number;
@@ -381,14 +397,13 @@ package body GNAT.Calendar is
is
Last_Jan_1 : constant Day_Name :=
Jan_1_Day_Of_Week (Jan_1, Year, Last_Year => True);
+
begin
-- These two cases are illustrated in the table below
return
Last_Jan_1 = Thursday
- or else
- (Last_Jan_1 = Wednesday
- and then Is_Leap (Year - 1));
+ or else (Last_Jan_1 = Wednesday and then Is_Leap (Year - 1));
end Last_Year_Has_53_Weeks;
-- Start of processing for Week_In_Year
@@ -437,9 +452,7 @@ package body GNAT.Calendar is
-- when special casing the first week of January and the last week of
-- December.
- if Day = 1
- and then Month = 1
- then
+ if Day = 1 and then Month = 1 then
Jan_1 := Day_Of_Week (Date);
else
Jan_1 := Day_Of_Week (Time_Of (Year, 1, 1, 0.0));
@@ -461,19 +474,23 @@ package body GNAT.Calendar is
-- +-----+-----+-----+=====+-----+-----+-----+
if (Day = 1 and then Jan_1 in Friday .. Sunday)
- or else
+ or else
(Day = 2 and then Jan_1 in Friday .. Saturday)
- or else
+ or else
(Day = 3 and then Jan_1 = Friday)
then
if Last_Year_Has_53_Weeks (Jan_1, Year) then
- return 53;
+ Week := 53;
else
- return 52;
+ Week := 52;
end if;
- -- Special case 2: January 1, 2, 3, 4, 5 and 6 of the first week. In
- -- this scenario January 1 does not fall on a Monday.
+ -- January 1, 2 and 3 belong to the previous year
+
+ Year := Year - 1;
+ return;
+
+ -- Special case 2: January 1, 2, 3, 4, 5, 6 and 7 of the first week
-- +-----+-----+-----+=====+-----+-----+-----+
-- | Mon | Tue | Wed # Thu # Fri | Sat | Sun |
@@ -484,14 +501,19 @@ package body GNAT.Calendar is
-- +-----+-----+-----+-----+-----+-----+-----+
-- | 31 | 1 | 2 # 3 # 4 | 5 | 6 |
-- +-----+-----+-----+-----+-----+-----+-----+
+ -- | 1 | 2 | 3 # 4 # 5 | 6 | 7 |
+ -- +-----+-----+-----+=====+-----+-----+-----+
- elsif (Day <= 4 and then Jan_1 in Tuesday .. Thursday)
- or else
- (Day = 5 and then Jan_1 in Tuesday .. Wednesday)
- or else
- (Day = 6 and then Jan_1 = Tuesday)
+ elsif (Day <= 4 and then Jan_1 in Monday .. Thursday)
+ or else
+ (Day = 5 and then Jan_1 in Monday .. Wednesday)
+ or else
+ (Day = 6 and then Jan_1 in Monday .. Tuesday)
+ or else
+ (Day = 7 and then Jan_1 = Monday)
then
- return 1;
+ Week := 1;
+ return;
end if;
-- Special case 3: December 29, 30 and 31. These days may belong to
@@ -507,20 +529,20 @@ package body GNAT.Calendar is
-- | 31 | 1 | 2 # 3 # 4 | 5 | 6 |
-- +-----+-----+-----+=====+-----+-----+-----+
- elsif Month = 12
- and then Day > 28
- then
+ elsif Month = 12 and then Day > 28 then
declare
Next_Jan_1 : constant Day_Name :=
Jan_1_Day_Of_Week (Jan_1, Year, Next_Year => True);
begin
if (Day = 29 and then Next_Jan_1 = Thursday)
- or else
+ or else
(Day = 30 and then Next_Jan_1 in Wednesday .. Thursday)
- or else
+ or else
(Day = 31 and then Next_Jan_1 in Tuesday .. Thursday)
then
- return 1;
+ Year := Year + 1;
+ Week := 1;
+ return;
end if;
end;
end if;
@@ -541,7 +563,7 @@ package body GNAT.Calendar is
-- origin which falls on Monday.
Shift := 7 - Day_Name'Pos (Jan_1);
- return Start_Week + (Day_In_Year (Date) - Shift - 1) / 7;
- end Week_In_Year;
+ Week := Start_Week + (Day_In_Year (Date) - Shift - 1) / 7;
+ end Year_Week_In_Year;
end GNAT.Calendar;
diff --git a/gcc/ada/g-calend.ads b/gcc/ada/g-calend.ads
index 8bb2e6e7cc6..39ca20371a0 100644
--- a/gcc/ada/g-calend.ads
+++ b/gcc/ada/g-calend.ads
@@ -70,18 +70,9 @@ package GNAT.Calendar is
-- Return the day name
function Day_In_Year (Date : Ada.Calendar.Time) return Day_In_Year_Number;
- -- Returns the day number in the year. (1st January is day 1 and 31st
+ -- Return the day number in the year. (1st January is day 1 and 31st
-- December is day 365 or 366 for leap year).
- function Week_In_Year (Date : Ada.Calendar.Time) return Week_In_Year_Number;
- -- Returns the week number as defined in ISO 8601. A week always starts on
- -- a Monday and the first week of a particular year is the one containing
- -- the first Thursday. A year may have 53 weeks when January 1st is a
- -- Wednesday and the year is leap or January 1st is a Thursday. Note that
- -- the last days of December may belong to the first week on the next year
- -- and conversely, the first days of January may belong to the last week
- -- of the last year.
-
procedure Split
(Date : Ada.Calendar.Time;
Year : out Ada.Calendar.Year_Number;
@@ -102,7 +93,23 @@ package GNAT.Calendar is
Minute : Minute_Number;
Second : Second_Number;
Sub_Second : Second_Duration := 0.0) return Ada.Calendar.Time;
- -- Returns an Ada.Calendar.Time data built from the date and time values
+ -- Return an Ada.Calendar.Time data built from the date and time values
+
+ function Week_In_Year (Date : Ada.Calendar.Time) return Week_In_Year_Number;
+ -- Return the week number as defined in ISO 8601. A week always starts on
+ -- a Monday and the first week of a particular year is the one containing
+ -- the first Thursday. A year may have 53 weeks when January 1st is a
+ -- Wednesday and the year is leap or January 1st is a Thursday. Note that
+ -- the last days of December may belong to the first week on the next year
+ -- and conversely, the first days of January may belong to the last week
+ -- of the last year.
+
+ procedure Year_Week_In_Year
+ (Date : Ada.Calendar.Time;
+ Year : out Ada.Calendar.Year_Number;
+ Week : out Week_In_Year_Number);
+ -- Return the week number as defined in ISO 8601 along with the year in
+ -- which the week occurs.
-- C timeval conversion
diff --git a/gcc/ada/g-comlin.adb b/gcc/ada/g-comlin.adb
index 307f890750e..8ee4f427dfb 100644
--- a/gcc/ada/g-comlin.adb
+++ b/gcc/ada/g-comlin.adb
@@ -890,6 +890,7 @@ package body GNAT.Command_Line is
Parser.In_Expansion := False;
Parser.Switch_Character := Switch_Char;
Parser.Stop_At_First := Stop_At_First_Non_Switch;
+ Parser.Section := (others => 1);
-- If we are using sections, we have to preprocess the command line
-- to delimit them. A section can be repeated, so we just give each
@@ -1277,7 +1278,7 @@ package body GNAT.Command_Line is
if Separator (Parser) = ASCII.NUL then
Add_Switch
- (Cmd, Sw & Parameter (Parser), "");
+ (Cmd, Sw & Parameter (Parser), "", ASCII.NUL);
else
Add_Switch
(Cmd, Sw, Parameter (Parser), Separator (Parser));
@@ -2449,6 +2450,8 @@ package body GNAT.Command_Line is
Free (Config.Aliases);
Free (Config.Expansions);
Free (Config.Prefixes);
+ Free (Config.Sections);
+ Free (Config.Switches);
Unchecked_Free (Config);
end if;
end Free;
diff --git a/gcc/ada/g-dirope.adb b/gcc/ada/g-dirope.adb
index ad03db8c7b7..c7670ef558b 100644
--- a/gcc/ada/g-dirope.adb
+++ b/gcc/ada/g-dirope.adb
@@ -168,10 +168,6 @@ package body GNAT.Directory_Operations is
procedure Change_Dir (Dir_Name : Dir_Name_Str) is
C_Dir_Name : constant String := Dir_Name & ASCII.NUL;
-
- function chdir (Dir_Name : String) return Integer;
- pragma Import (C, chdir, "chdir");
-
begin
if chdir (C_Dir_Name) /= 0 then
raise Directory_Error;
@@ -743,9 +739,7 @@ package body GNAT.Directory_Operations is
-- Remove the directory only if it is empty
if not Recursive then
- rmdir (C_Dir_Name);
-
- if GNAT.OS_Lib.Is_Directory (Dir_Name) then
+ if rmdir (C_Dir_Name) /= 0 then
raise Directory_Error;
end if;
@@ -768,7 +762,6 @@ package body GNAT.Directory_Operations is
Str (1 .. Last) /= ".."
then
Remove_Dir (Str (1 .. Last), True);
- Remove_Dir (Str (1 .. Last));
end if;
else
diff --git a/gcc/ada/g-hesora.adb b/gcc/ada/g-hesora.adb
index cb54558a6c7..60f307bba8a 100644
--- a/gcc/ada/g-hesora.adb
+++ b/gcc/ada/g-hesora.adb
@@ -31,9 +31,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body GNAT.Heap_Sort_A is
diff --git a/gcc/ada/g-hesora.ads b/gcc/ada/g-hesora.ads
index bf60cafd9ef..11b89691968 100644
--- a/gcc/ada/g-hesora.ads
+++ b/gcc/ada/g-hesora.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1995-2007, AdaCore --
+-- Copyright (C) 1995-2008, 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- --
@@ -42,9 +42,7 @@
-- worst case and is in place with no additional storage required. See
-- the body for exact details of the algorithm used.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package GNAT.Heap_Sort_A is
pragma Preelaborate;
diff --git a/gcc/ada/g-htable.ads b/gcc/ada/g-htable.ads
index 5f7a27ccb75..a158d09f618 100644
--- a/gcc/ada/g-htable.ads
+++ b/gcc/ada/g-htable.ads
@@ -43,9 +43,7 @@
-- this facility is accessed from run time routines, but clients should
-- always access the version supplied via GNAT.HTable.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.HTable;
diff --git a/gcc/ada/g-moreex.adb b/gcc/ada/g-moreex.adb
index e86d378f1dc..ab3a3065524 100644
--- a/gcc/ada/g-moreex.adb
+++ b/gcc/ada/g-moreex.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2006, AdaCore --
+-- Copyright (C) 2000-2008, 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- --
@@ -47,32 +47,17 @@ package body GNAT.Most_Recent_Exception is
use type Ada.Exceptions.Exception_Occurrence_Access;
begin
- pragma Warnings (Off);
- if EOA = null then
- return Ada.Exceptions.Null_Occurrence;
- else
- return EOA.all;
- end if;
- pragma Warnings (On);
-
- -- ???Note that both of the above return statements violate the Ada
- -- 2005 rule forbidding copying of limited objects (see RM-7.5(2.8/2)).
- -- When compiled with -gnatg, the compiler gives a warning instead of
- -- an error, so we can turn it off.
- -- To fix this, remove the pragmas Warnings above, and use the following
- -- code. We can't do that yet, because AI-318 is not yet implemented.
- --
- -- return Result : Ada.Exceptions.Exception_Occurrence do
- -- if EOA = null then
- -- Ada.Exceptions.Save_Occurrence
- -- (Target => Result,
- -- Source => Ada.Exceptions.Null_Occurrence);
- -- else
- -- Ada.Exceptions.Save_Occurrence
- -- (Target => Result,
- -- Source => EOA.all);
- -- end if;
- -- end return;
+ return Result : Ada.Exceptions.Exception_Occurrence do
+ if EOA = null then
+ Ada.Exceptions.Save_Occurrence
+ (Target => Result,
+ Source => Ada.Exceptions.Null_Occurrence);
+ else
+ Ada.Exceptions.Save_Occurrence
+ (Target => Result,
+ Source => EOA.all);
+ end if;
+ end return;
end Occurrence;
-----------------------
diff --git a/gcc/ada/g-pehage.adb b/gcc/ada/g-pehage.adb
index 129cecc7659..5abb04c2138 100644
--- a/gcc/ada/g-pehage.adb
+++ b/gcc/ada/g-pehage.adb
@@ -1146,9 +1146,10 @@ package body GNAT.Perfect_Hash_Generators is
-- words already there because a previous computation failed. We are
-- currently retrying and the reduced words have to be deallocated.
- for W in NK .. WT.Last loop
+ for W in Reduced (0) .. WT.Last loop
Free_Word (WT.Table (W));
end loop;
+
IT.Init;
-- Initialize of computation variables
diff --git a/gcc/ada/g-sercom-mingw.adb b/gcc/ada/g-sercom-mingw.adb
index abb32274e4c..03bd6aba191 100644
--- a/gcc/ada/g-sercom-mingw.adb
+++ b/gcc/ada/g-sercom-mingw.adb
@@ -106,7 +106,7 @@ package body GNAT.Serial_Communications is
Success := CloseHandle (HANDLE (Port.H.all));
end if;
- Port.H.all := CreateFile
+ Port.H.all := CreateFileA
(lpFileName => C_Name (C_Name'First)'Address,
dwDesiredAccess => GENERIC_READ or GENERIC_WRITE,
dwShareMode => 0,
diff --git a/gcc/ada/g-sercom.adb b/gcc/ada/g-sercom.adb
index c1b4b8e481b..a39d4dbbca4 100644
--- a/gcc/ada/g-sercom.adb
+++ b/gcc/ada/g-sercom.adb
@@ -67,7 +67,8 @@ package body GNAT.Serial_Communications is
procedure Open
(Port : out Serial_Port;
- Name : Port_Name) is
+ Name : Port_Name)
+ is
begin
Unimplemented;
end Open;
@@ -83,7 +84,8 @@ package body GNAT.Serial_Communications is
Stop_Bits : Stop_Bits_Number := One;
Parity : Parity_Check := None;
Block : Boolean := True;
- Timeout : Duration := 10.0) is
+ Timeout : Duration := 10.0)
+ is
begin
Unimplemented;
end Set;
@@ -95,7 +97,8 @@ package body GNAT.Serial_Communications is
overriding procedure Read
(Port : in out Serial_Port;
Buffer : out Stream_Element_Array;
- Last : out Stream_Element_Offset) is
+ Last : out Stream_Element_Offset)
+ is
begin
Unimplemented;
end Read;
@@ -106,7 +109,8 @@ package body GNAT.Serial_Communications is
overriding procedure Write
(Port : in out Serial_Port;
- Buffer : Stream_Element_Array) is
+ Buffer : Stream_Element_Array)
+ is
begin
Unimplemented;
end Write;
diff --git a/gcc/ada/g-socket.adb b/gcc/ada/g-socket.adb
index 92407cc188b..784d0626bad 100644
--- a/gcc/ada/g-socket.adb
+++ b/gcc/ada/g-socket.adb
@@ -228,6 +228,13 @@ package body GNAT.Sockets is
(Stream : in out Stream_Socket_Stream_Type;
Item : Ada.Streams.Stream_Element_Array);
+ procedure Stream_Write
+ (Socket : Socket_Type;
+ Item : Ada.Streams.Stream_Element_Array;
+ To : access Sock_Addr_Type);
+ -- Common implementation for the Write operation of Datagram_Socket_Stream_
+ -- Type and Stream_Socket_Stream_Type.
+
procedure Wait_On_Socket
(Socket : Socket_Type;
For_Read : Boolean;
@@ -1674,6 +1681,17 @@ package body GNAT.Sockets is
end case;
end if;
+ -- Special case: EAGAIN may be the same value as EWOULDBLOCK, so we
+ -- can't include it in the case statement below.
+
+ pragma Warnings (Off);
+ -- Condition "EAGAIN /= EWOULDBLOCK" is known at compile time
+
+ if EAGAIN /= EWOULDBLOCK and then Error_Value = EAGAIN then
+ return Resource_Temporarily_Unavailable;
+ end if;
+ pragma Warnings (On);
+
case Error_Value is
when ENOERROR => return Success;
when EACCES => return Permission_Denied;
@@ -1709,6 +1727,7 @@ package body GNAT.Sockets is
when ENOTSOCK => return Socket_Operation_On_Non_Socket;
when EOPNOTSUPP => return Operation_Not_Supported;
when EPFNOSUPPORT => return Protocol_Family_Not_Supported;
+ when EPIPE => return Broken_Pipe;
when EPROTONOSUPPORT => return Protocol_Not_Supported;
when EPROTOTYPE => return Protocol_Wrong_Type_For_Socket;
when ESHUTDOWN => return
@@ -1717,10 +1736,9 @@ package body GNAT.Sockets is
when ETIMEDOUT => return Connection_Timed_Out;
when ETOOMANYREFS => return Too_Many_References;
when EWOULDBLOCK => return Resource_Temporarily_Unavailable;
- when others => null;
- end case;
- return Cannot_Resolve_Error;
+ when others => return Cannot_Resolve_Error;
+ end case;
end Resolve_Error;
-----------------------
@@ -1801,21 +1819,24 @@ package body GNAT.Sockets is
Last : out Ada.Streams.Stream_Element_Offset;
Flags : Request_Flag_Type := No_Request_Flag)
is
- Res : C.int;
-
begin
- Res :=
- C_Send
- (C.int (Socket),
- Item'Address,
- Item'Length,
- Set_Forced_Flags (To_Int (Flags)));
+ Send_Socket (Socket, Item, Last, To => null, Flags => Flags);
+ end Send_Socket;
- if Res = Failure then
- Raise_Socket_Error (Socket_Errno);
- end if;
+ -----------------
+ -- Send_Socket --
+ -----------------
- Last := Item'First + Ada.Streams.Stream_Element_Offset (Res - 1);
+ procedure Send_Socket
+ (Socket : Socket_Type;
+ Item : Ada.Streams.Stream_Element_Array;
+ Last : out Ada.Streams.Stream_Element_Offset;
+ To : Sock_Addr_Type;
+ Flags : Request_Flag_Type := No_Request_Flag)
+ is
+ begin
+ Send_Socket
+ (Socket, Item, Last, To => To'Unrestricted_Access, Flags => Flags);
end Send_Socket;
-----------------
@@ -1826,26 +1847,36 @@ package body GNAT.Sockets is
(Socket : Socket_Type;
Item : Ada.Streams.Stream_Element_Array;
Last : out Ada.Streams.Stream_Element_Offset;
- To : Sock_Addr_Type;
+ To : access Sock_Addr_Type;
Flags : Request_Flag_Type := No_Request_Flag)
is
- Res : C.int;
- Sin : aliased Sockaddr_In;
- Len : constant C.int := Sin'Size / 8;
+ Res : C.int;
+
+ Sin : aliased Sockaddr_In;
+ C_To : Sockaddr_In_Access;
+ Len : C.int;
begin
- Set_Family (Sin.Sin_Family, To.Family);
- Set_Address (Sin'Unchecked_Access, To_In_Addr (To.Addr));
- Set_Port
- (Sin'Unchecked_Access,
- Short_To_Network (C.unsigned_short (To.Port)));
+ if To /= null then
+ Set_Family (Sin.Sin_Family, To.Family);
+ Set_Address (Sin'Unchecked_Access, To_In_Addr (To.Addr));
+ Set_Port
+ (Sin'Unchecked_Access,
+ Short_To_Network (C.unsigned_short (To.Port)));
+ C_To := Sin'Unchecked_Access;
+ Len := Sin'Size / 8;
+
+ else
+ C_To := null;
+ Len := 0;
+ end if;
Res := C_Sendto
(C.int (Socket),
Item'Address,
Item'Length,
Set_Forced_Flags (To_Int (Flags)),
- Sin'Unchecked_Access,
+ C_To,
Len);
if Res = Failure then
@@ -2094,6 +2125,43 @@ package body GNAT.Sockets is
return Stream_Access (S);
end Stream;
+ ------------------
+ -- Stream_Write --
+ ------------------
+
+ procedure Stream_Write
+ (Socket : Socket_Type;
+ Item : Ada.Streams.Stream_Element_Array;
+ To : access Sock_Addr_Type)
+ is
+ First : Ada.Streams.Stream_Element_Offset;
+ Index : Ada.Streams.Stream_Element_Offset;
+ Max : constant Ada.Streams.Stream_Element_Offset := Item'Last;
+
+ begin
+ First := Item'First;
+ Index := First - 1;
+ while First <= Max loop
+ Send_Socket (Socket, Item (First .. Max), Index, To);
+
+ -- Exit when all or zero data sent. Zero means that the socket has
+ -- been closed by peer.
+
+ exit when Index < First or else Index = Max;
+
+ First := Index + 1;
+ end loop;
+
+ -- For an empty array, we have First > Max, and hence Index >= Max (no
+ -- error, the loop above is never executed). After a succesful send,
+ -- Index = Max. The only remaining case, Index < Max, is therefore
+ -- always an actual send failure.
+
+ if Index < Max then
+ Raise_Socket_Error (Socket_Errno);
+ end if;
+ end Stream_Write;
+
----------
-- To_C --
----------
@@ -2315,31 +2383,8 @@ package body GNAT.Sockets is
(Stream : in out Datagram_Socket_Stream_Type;
Item : Ada.Streams.Stream_Element_Array)
is
- pragma Warnings (Off, Stream);
-
- First : Ada.Streams.Stream_Element_Offset := Item'First;
- Index : Ada.Streams.Stream_Element_Offset := First - 1;
- Max : constant Ada.Streams.Stream_Element_Offset := Item'Last;
-
begin
- loop
- Send_Socket
- (Stream.Socket,
- Item (First .. Max),
- Index,
- Stream.To);
-
- -- Exit when all or zero data sent. Zero means that the socket has
- -- been closed by peer.
-
- exit when Index < First or else Index = Max;
-
- First := Index + 1;
- end loop;
-
- if Index /= Max then
- raise Socket_Error;
- end if;
+ Stream_Write (Stream.Socket, Item, To => Stream.To'Unrestricted_Access);
end Write;
-----------
@@ -2350,27 +2395,8 @@ package body GNAT.Sockets is
(Stream : in out Stream_Socket_Stream_Type;
Item : Ada.Streams.Stream_Element_Array)
is
- pragma Warnings (Off, Stream);
-
- First : Ada.Streams.Stream_Element_Offset := Item'First;
- Index : Ada.Streams.Stream_Element_Offset := First - 1;
- Max : constant Ada.Streams.Stream_Element_Offset := Item'Last;
-
begin
- loop
- Send_Socket (Stream.Socket, Item (First .. Max), Index);
-
- -- Exit when all or zero data sent. Zero means that the socket has
- -- been closed by peer.
-
- exit when Index < First or else Index = Max;
-
- First := Index + 1;
- end loop;
-
- if Index /= Max then
- raise Socket_Error;
- end if;
+ Stream_Write (Stream.Socket, Item, To => null);
end Write;
Sockets_Library_Controller_Object : Sockets_Library_Controller;
diff --git a/gcc/ada/g-socket.ads b/gcc/ada/g-socket.ads
index b730065cc69..f8dd6bfecfc 100644
--- a/gcc/ada/g-socket.ads
+++ b/gcc/ada/g-socket.ads
@@ -603,6 +603,9 @@ package GNAT.Sockets is
-- brackets and a string describing the error code.
-- The name of the enumeration constant documents the error condition
+ -- Note that on some platforms, a single error value is used for both
+ -- EWOULDBLOCK and EAGAIN. Both errors are therefore always reported as
+ -- Resource_Temporarily_Unavailable.
type Error_Type is
(Success,
@@ -644,6 +647,7 @@ package GNAT.Sockets is
Connection_Timed_Out,
Too_Many_References,
Resource_Temporarily_Unavailable,
+ Broken_Pipe,
Unknown_Host,
Host_Name_Lookup_Failure,
Non_Recoverable_Error,
@@ -917,8 +921,21 @@ package GNAT.Sockets is
(Socket : Socket_Type;
Item : Ada.Streams.Stream_Element_Array;
Last : out Ada.Streams.Stream_Element_Offset;
+ To : access Sock_Addr_Type;
Flags : Request_Flag_Type := No_Request_Flag);
- -- Transmit a message to another socket. Note that Last is set to
+ pragma Inline (Send_Socket);
+ -- Transmit a message over a socket. For a datagram socket, the address is
+ -- given by To.all. For a stream socket, To must be null. Flags
+ -- allows to control the transmission. Raises Socket_Error on error.
+ -- Note: this subprogram is inlined because it is also used to implement
+ -- the two variants below.
+
+ procedure Send_Socket
+ (Socket : Socket_Type;
+ Item : Ada.Streams.Stream_Element_Array;
+ Last : out Ada.Streams.Stream_Element_Offset;
+ Flags : Request_Flag_Type := No_Request_Flag);
+ -- Transmit a message over a socket. Note that Last is set to
-- Item'First-1 when socket has been closed by peer. This is not
-- considered an error and no exception is raised. Flags allows to control
-- the transmission. Raises Socket_Error on any other error condition.
@@ -929,8 +946,9 @@ package GNAT.Sockets is
Last : out Ada.Streams.Stream_Element_Offset;
To : Sock_Addr_Type;
Flags : Request_Flag_Type := No_Request_Flag);
- -- Transmit a message to another socket. The address is given by To. Flags
- -- allows to control the transmission. Raises Socket_Error on error.
+ -- Transmit a message over a datagram socket. The destination address is
+ -- To. Flags allows to control the transmission. Raises Socket_Error on
+ -- error.
procedure Send_Vector
(Socket : Socket_Type;
diff --git a/gcc/ada/g-socthi-mingw.adb b/gcc/ada/g-socthi-mingw.adb
index a85a2572d8f..c3a120f32a1 100644
--- a/gcc/ada/g-socthi-mingw.adb
+++ b/gcc/ada/g-socthi-mingw.adb
@@ -390,11 +390,13 @@ package body GNAT.Sockets.Thin is
begin
for J in Iovec'Range loop
- Res := C_Send
+ Res := C_Sendto
(Fd,
Iovec (J).Base.all'Address,
C.int (Iovec (J).Length),
- 0);
+ Flags => 0,
+ To => null,
+ Tolen => 0);
if Res < 0 then
return Res;
diff --git a/gcc/ada/g-socthi-mingw.ads b/gcc/ada/g-socthi-mingw.ads
index 408d789665c..ab4e7b0d051 100644
--- a/gcc/ada/g-socthi-mingw.ads
+++ b/gcc/ada/g-socthi-mingw.ads
@@ -153,12 +153,6 @@ package GNAT.Sockets.Thin is
Exceptfds : access Fd_Set;
Timeout : Timeval_Access) return C.int;
- function C_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int;
-
function C_Sendto
(S : C.int;
Msg : System.Address;
@@ -243,7 +237,6 @@ private
pragma Import (Stdcall, C_Listen, "listen");
pragma Import (Stdcall, C_Recv, "recv");
pragma Import (Stdcall, C_Recvfrom, "recvfrom");
- pragma Import (Stdcall, C_Send, "send");
pragma Import (Stdcall, C_Sendto, "sendto");
pragma Import (Stdcall, C_Setsockopt, "setsockopt");
pragma Import (Stdcall, C_Shutdown, "shutdown");
diff --git a/gcc/ada/g-socthi-vms.adb b/gcc/ada/g-socthi-vms.adb
index 389c256c1b8..8a410a44c40 100644
--- a/gcc/ada/g-socthi-vms.adb
+++ b/gcc/ada/g-socthi-vms.adb
@@ -92,13 +92,6 @@ package body GNAT.Sockets.Thin is
Fromlen : not null access C.int) return C.int;
pragma Import (C, Syscall_Recvfrom, "recvfrom");
- function Syscall_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int;
- pragma Import (C, Syscall_Send, "send");
-
function Syscall_Sendto
(S : C.int;
Msg : System.Address;
@@ -285,31 +278,6 @@ package body GNAT.Sockets.Thin is
return Res;
end C_Recvfrom;
- ------------
- -- C_Send --
- ------------
-
- function C_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int
- is
- Res : C.int;
-
- begin
- loop
- Res := Syscall_Send (S, Msg, Len, Flags);
- exit when SOSC.Thread_Blocking_IO
- or else Res /= Failure
- or else Non_Blocking_Socket (S)
- or else Errno /= SOSC.EWOULDBLOCK;
- delay Quantum;
- end loop;
-
- return Res;
- end C_Send;
-
--------------
-- C_Sendto --
--------------
@@ -500,11 +468,13 @@ package body GNAT.Sockets.Thin is
begin
for J in Iovec'Range loop
- Res := C_Send
+ Res := C_Sendto
(Fd,
Iovec (J).Base.all'Address,
Interfaces.C.int (Iovec (J).Length),
- SOSC.MSG_Forced_Flags);
+ SOSC.MSG_Forced_Flags,
+ To => null,
+ Tolen => 0);
if Res < 0 then
return Res;
diff --git a/gcc/ada/g-socthi-vms.ads b/gcc/ada/g-socthi-vms.ads
index dd317bfce9a..52a9d144b05 100644
--- a/gcc/ada/g-socthi-vms.ads
+++ b/gcc/ada/g-socthi-vms.ads
@@ -156,12 +156,6 @@ package GNAT.Sockets.Thin is
Exceptfds : access Fd_Set;
Timeout : Timeval_Access) return C.int;
- function C_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int;
-
function C_Sendto
(S : C.int;
Msg : System.Address;
diff --git a/gcc/ada/g-socthi-vxworks.adb b/gcc/ada/g-socthi-vxworks.adb
index 81a8d96eeed..d035b61f807 100644
--- a/gcc/ada/g-socthi-vxworks.adb
+++ b/gcc/ada/g-socthi-vxworks.adb
@@ -102,13 +102,6 @@ package body GNAT.Sockets.Thin is
Fromlen : not null access C.int) return C.int;
pragma Import (C, Syscall_Recvfrom, "recvfrom");
- function Syscall_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int;
- pragma Import (C, Syscall_Send, "send");
-
function Syscall_Sendto
(S : C.int;
Msg : System.Address;
@@ -298,31 +291,6 @@ package body GNAT.Sockets.Thin is
return Res;
end C_Recvfrom;
- ------------
- -- C_Send --
- ------------
-
- function C_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int
- is
- Res : C.int;
-
- begin
- loop
- Res := Syscall_Send (S, Msg, Len, Flags);
- exit when SOSC.Thread_Blocking_IO
- or else Res /= Failure
- or else Non_Blocking_Socket (S)
- or else Errno /= SOSC.EWOULDBLOCK;
- delay Quantum;
- end loop;
-
- return Res;
- end C_Send;
-
--------------
-- C_Sendto --
--------------
diff --git a/gcc/ada/g-socthi-vxworks.ads b/gcc/ada/g-socthi-vxworks.ads
index 06b75e339cb..df987d5adc9 100644
--- a/gcc/ada/g-socthi-vxworks.ads
+++ b/gcc/ada/g-socthi-vxworks.ads
@@ -154,12 +154,6 @@ package GNAT.Sockets.Thin is
Exceptfds : access Fd_Set;
Timeout : Timeval_Access) return C.int;
- function C_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int;
-
function C_Sendto
(S : C.int;
Msg : System.Address;
diff --git a/gcc/ada/g-socthi.adb b/gcc/ada/g-socthi.adb
index 1062354f9b5..fab5fb3ac9e 100644
--- a/gcc/ada/g-socthi.adb
+++ b/gcc/ada/g-socthi.adb
@@ -98,13 +98,6 @@ package body GNAT.Sockets.Thin is
Fromlen : not null access C.int) return C.int;
pragma Import (C, Syscall_Recvfrom, "recvfrom");
- function Syscall_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int;
- pragma Import (C, Syscall_Send, "send");
-
function Syscall_Sendto
(S : C.int;
Msg : System.Address;
@@ -303,31 +296,6 @@ package body GNAT.Sockets.Thin is
return Res;
end C_Recvfrom;
- ------------
- -- C_Send --
- ------------
-
- function C_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int
- is
- Res : C.int;
-
- begin
- loop
- Res := Syscall_Send (S, Msg, Len, Flags);
- exit when SOSC.Thread_Blocking_IO
- or else Res /= Failure
- or else Non_Blocking_Socket (S)
- or else Errno /= SOSC.EWOULDBLOCK;
- delay Quantum;
- end loop;
-
- return Res;
- end C_Send;
-
--------------
-- C_Sendto --
--------------
diff --git a/gcc/ada/g-socthi.ads b/gcc/ada/g-socthi.ads
index 8eae6c6e9bf..65660e3ce47 100644
--- a/gcc/ada/g-socthi.ads
+++ b/gcc/ada/g-socthi.ads
@@ -155,12 +155,6 @@ package GNAT.Sockets.Thin is
Exceptfds : access Fd_Set;
Timeout : Timeval_Access) return C.int;
- function C_Send
- (S : C.int;
- Msg : System.Address;
- Len : C.int;
- Flags : C.int) return C.int;
-
function C_Sendto
(S : C.int;
Msg : System.Address;
diff --git a/gcc/ada/g-spchge.adb b/gcc/ada/g-spchge.adb
index 2e4c7c786fb..b1278a64811 100755
--- a/gcc/ada/g-spchge.adb
+++ b/gcc/ada/g-spchge.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2007, AdaCore --
+-- Copyright (C) 1998-2008, 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- --
@@ -31,9 +31,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body GNAT.Spelling_Checker_Generic is
diff --git a/gcc/ada/g-spchge.ads b/gcc/ada/g-spchge.ads
index 0a29c589a21..786213bf1ff 100755
--- a/gcc/ada/g-spchge.ads
+++ b/gcc/ada/g-spchge.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2007, AdaCore --
+-- Copyright (C) 1998-2008, 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- --
@@ -39,9 +39,7 @@
-- codes for ASCII characters in the range 16#20#..16#7F# have their normal
-- expected encoding values (e.g. the Pos value 16#31# must be digit 1).
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package GNAT.Spelling_Checker_Generic is
pragma Pure;
diff --git a/gcc/ada/g-speche.adb b/gcc/ada/g-speche.adb
index 841eef8ddfe..cd66efee788 100644
--- a/gcc/ada/g-speche.adb
+++ b/gcc/ada/g-speche.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2007, AdaCore --
+-- Copyright (C) 1998-2008, 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- --
@@ -31,9 +31,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with GNAT.Spelling_Checker_Generic;
diff --git a/gcc/ada/g-speche.ads b/gcc/ada/g-speche.ads
index b0eba286a02..0f9b39a6242 100644
--- a/gcc/ada/g-speche.ads
+++ b/gcc/ada/g-speche.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2007, AdaCore --
+-- Copyright (C) 1998-2008, 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- --
@@ -36,9 +36,7 @@
-- This package provides a utility routine for checking for bad spellings
-- for the case of String arguments.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package GNAT.Spelling_Checker is
pragma Pure;
diff --git a/gcc/ada/g-stsifd-sockets.adb b/gcc/ada/g-stsifd-sockets.adb
index 5fe43af4654..23fdb59af76 100644
--- a/gcc/ada/g-stsifd-sockets.adb
+++ b/gcc/ada/g-stsifd-sockets.adb
@@ -67,7 +67,8 @@ package body Signalling_Fds is
-- Address of listening socket
Res : C.int;
- -- Return status of system calls
+ pragma Warnings (Off, Res);
+ -- Return status of system calls (usually ignored, hence warnings off)
begin
Fds.all := (Read_End | Write_End => Failure);
@@ -153,9 +154,7 @@ package body Signalling_Fds is
pragma Assert (Res = Failure
and then
Socket_Errno = SOSC.EADDRINUSE);
- pragma Warnings (Off); -- useless assignment to "Res"
Res := C_Close (W_Sock);
- pragma Warnings (On);
W_Sock := Failure;
Res := C_Close (R_Sock);
R_Sock := Failure;
@@ -227,7 +226,11 @@ package body Signalling_Fds is
function Write (Wsig : C.int) return C.int is
Buf : aliased Character := ASCII.NUL;
begin
- return C_Send (Wsig, Buf'Address, 1, SOSC.MSG_Forced_Flags);
+ return C_Sendto
+ (Wsig, Buf'Address, 1,
+ Flags => SOSC.MSG_Forced_Flags,
+ To => null,
+ Tolen => 0);
end Write;
end Signalling_Fds;
diff --git a/gcc/ada/g-trasym-unimplemented.adb b/gcc/ada/g-trasym-unimplemented.adb
new file mode 100644
index 00000000000..5432eaf9dee
--- /dev/null
+++ b/gcc/ada/g-trasym-unimplemented.adb
@@ -0,0 +1,72 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME COMPONENTS --
+-- --
+-- G N A T . T R A C E B A C K . S Y M B O L I C --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 1999-2008, 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- --
+-- ware Foundation; either version 2, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
+-- for more details. You should have received a copy of the GNU General --
+-- Public License distributed with GNAT; see file COPYING. If not, write --
+-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
+-- Boston, MA 02110-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- Version used on unimplemented targets
+
+-- Run-time symbolic traceback is currently supported on the following
+-- targets:
+
+-- HP-UX
+-- IRIX
+-- GNU/Linux x86
+-- AIX
+-- Solaris sparc
+-- Tru64
+-- OpenVMS/Alpha
+-- Windows NT/XP/Vista
+
+-- This version is used on all other targets, it generates a warning at
+-- compile time if it is with'ed, and the bodies generate messages saying
+-- that the functions are not implemented.
+
+package body GNAT.Traceback.Symbolic is
+
+ ------------------------
+ -- Symbolic_Traceback --
+ ------------------------
+
+ function Symbolic_Traceback (Traceback : Tracebacks_Array) return String
+ is
+ pragma Unreferenced (Traceback);
+ begin
+ return "Symbolic_Traceback not implemented on this target";
+ end Symbolic_Traceback;
+
+ function Symbolic_Traceback (E : Exception_Occurrence) return String
+ is
+ pragma Unreferenced (E);
+ begin
+ return "Symbolic_Traceback not implemented on this target";
+ end Symbolic_Traceback;
+
+end GNAT.Traceback.Symbolic;
diff --git a/gcc/ada/g-trasym-unimplemented.ads b/gcc/ada/g-trasym-unimplemented.ads
new file mode 100644
index 00000000000..d03db88e263
--- /dev/null
+++ b/gcc/ada/g-trasym-unimplemented.ads
@@ -0,0 +1,66 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME COMPONENTS --
+-- --
+-- G N A T . T R A C E B A C K . S Y M B O L I C --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 1999-2008, 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- --
+-- ware Foundation; either version 2, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
+-- for more details. You should have received a copy of the GNU General --
+-- Public License distributed with GNAT; see file COPYING. If not, write --
+-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
+-- Boston, MA 02110-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- Version used on unimplemented targets
+
+-- Run-time symbolic traceback is currently supported on the following
+-- targets:
+
+-- HP-UX hppa and ia64
+-- IRIX
+-- GNU/Linux x86, x86_64, ia64
+-- AIX
+-- Solaris sparc and x86
+-- Tru64
+-- OpenVMS/Alpha
+-- Windows NT/XP/Vista
+
+-- This version is used on all other targets, it generates a warning at
+-- compile time if it is with'ed, and the bodies generate messages saying
+-- that the functions are not implemented.
+
+with Ada.Exceptions; use Ada.Exceptions;
+
+package GNAT.Traceback.Symbolic is
+ pragma Elaborate_Body;
+
+-- pragma Compile_Time_Warning
+-- (True, "symbolic traceback not implemented on this target");
+
+ function Symbolic_Traceback (Traceback : Tracebacks_Array) return String;
+ -- Build a string containing a symbolic traceback of the given call chain
+
+ function Symbolic_Traceback (E : Exception_Occurrence) return String;
+ -- Build string containing symbolic traceback of given exception occurrence
+
+end GNAT.Traceback.Symbolic;
diff --git a/gcc/ada/g-trasym-vms-alpha.adb b/gcc/ada/g-trasym-vms-alpha.adb
index b503441d34e..adfa8f83d4e 100644
--- a/gcc/ada/g-trasym-vms-alpha.adb
+++ b/gcc/ada/g-trasym-vms-alpha.adb
@@ -40,7 +40,7 @@ with System.Traceback_Entries;
package body GNAT.Traceback.Symbolic is
- pragma Warnings (Off);
+ pragma Warnings (Off); -- Needs comment ???
pragma Linker_Options ("--for-linker=sys$library:trace.exe");
use Interfaces.C;
diff --git a/gcc/ada/g-trasym-vms-ia64.adb b/gcc/ada/g-trasym-vms-ia64.adb
index 7e219540916..28dab4729bd 100644
--- a/gcc/ada/g-trasym-vms-ia64.adb
+++ b/gcc/ada/g-trasym-vms-ia64.adb
@@ -39,7 +39,7 @@ with System.Traceback_Entries;
package body GNAT.Traceback.Symbolic is
- pragma Warnings (Off);
+ pragma Warnings (Off); -- ??? needs comment
pragma Linker_Options ("--for-linker=sys$library:trace.exe");
use System;
diff --git a/gcc/ada/g-trasym.ads b/gcc/ada/g-trasym.ads
index fbcf9ca4a65..89362318e3e 100644
--- a/gcc/ada/g-trasym.ads
+++ b/gcc/ada/g-trasym.ads
@@ -35,11 +35,11 @@
-- This capability is currently supported on the following targets:
--- HP-UX
+-- HP-UX hppa and ia64
-- IRIX
--- GNU/Linux x86
+-- GNU/Linux x86, x86_64, ia64
-- AIX
--- Solaris sparc
+-- Solaris sparc and x86
-- Tru64
-- OpenVMS/Alpha
-- Windows NT/XP/Vista
diff --git a/gcc/ada/g-u3spch.adb b/gcc/ada/g-u3spch.adb
index 3e7ede843f2..febe0b43589 100755
--- a/gcc/ada/g-u3spch.adb
+++ b/gcc/ada/g-u3spch.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1998-2007, AdaCore --
+-- Copyright (C) 1998-2008, 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- --
@@ -31,9 +31,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with GNAT.Spelling_Checker_Generic;
diff --git a/gcc/ada/g-u3spch.ads b/gcc/ada/g-u3spch.ads
index 90ab66d978f..773a253b064 100755
--- a/gcc/ada/g-u3spch.ads
+++ b/gcc/ada/g-u3spch.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2007, AdaCore --
+-- Copyright (C) 1998-2008, 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- --
@@ -36,9 +36,7 @@
-- This package provides a utility routine for checking for bad spellings
-- for the case of System.WCh_Cnv.UTF_32_String arguments.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.WCh_Cnv;
diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in
index 3817d7b0133..349e2622664 100644
--- a/gcc/ada/gcc-interface/Make-lang.in
+++ b/gcc/ada/gcc-interface/Make-lang.in
@@ -149,6 +149,8 @@ GNAT_ADA_OBJS = ada/ada.o ada/a-charac.o ada/a-chlat1.o ada/a-except.o \
ada/s-except.o ada/s-exctab.o \
ada/s-secsta.o ada/s-strops.o ada/s-sopco3.o ada/s-sopco4.o ada/s-sopco5.o \
ada/s-traent.o ada/s-wchcnv.o ada/s-wchcon.o ada/s-wchjis.o \
+ ada/s-conca2.o ada/s-conca3.o ada/s-conca4.o ada/s-conca5.o \
+ ada/s-conca6.o ada/s-conca7.o ada/s-conca8.o ada/s-conca9.o \
ada/s-unstyp.o ada/scans.o ada/scng.o ada/scn.o ada/sdefault.o ada/sem.o \
ada/sem_aggr.o ada/sem_attr.o ada/sem_aux.o \
ada/sem_cat.o ada/sem_ch10.o ada/sem_ch11.o \
@@ -233,6 +235,14 @@ GNATBIND_OBJS = \
ada/s-assert.o \
ada/s-carun8.o \
ada/s-casuti.o \
+ ada/s-conca2.o \
+ ada/s-conca3.o \
+ ada/s-conca4.o \
+ ada/s-conca5.o \
+ ada/s-conca6.o \
+ ada/s-conca7.o \
+ ada/s-conca8.o \
+ ada/s-conca9.o \
ada/s-crc32.o \
ada/s-crtl.o \
ada/s-except.o \
@@ -1273,17 +1283,14 @@ ada/alloc.o : ada/alloc.ads ada/system.ads
ada/atree.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
- ada/elists.adb ada/gnat.ads ada/g-htable.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/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-secsta.ads \
- ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+ 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/uintp.adb \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.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/atree.ads ada/atree.adb \
@@ -1414,10 +1421,10 @@ ada/checks.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/comperr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
ada/casing.ads ada/comperr.ads ada/comperr.adb ada/debug.ads \
- ada/einfo.ads ada/einfo.adb ada/elists.ads ada/err_vars.ads \
- ada/errout.ads ada/erroutc.ads ada/fname.ads ada/gnat.ads \
- ada/g-hesorg.ads ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads \
- ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/namet.ads \
+ ada/einfo.ads ada/einfo.adb ada/err_vars.ads ada/errout.ads \
+ ada/erroutc.ads ada/fname.ads ada/gnat.ads ada/g-hesorg.ads \
+ ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads ada/lib.ads \
+ ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/namet.ads \
ada/nlists.ads ada/nlists.adb 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/sinput.adb ada/snames.ads \
@@ -1468,10 +1475,9 @@ ada/debug.o : ada/debug.ads ada/debug.adb ada/system.ads
ada/debug_a.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
ada/casing.ads ada/debug.ads ada/debug_a.ads ada/debug_a.adb \
- ada/einfo.ads ada/elists.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/system.ads ada/s-exctab.ads ada/s-htable.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 \
@@ -1480,16 +1486,15 @@ ada/debug_a.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/einfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.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/casing.ads ada/debug.ads ada/einfo.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/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/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 \
@@ -1512,20 +1517,20 @@ ada/err_vars.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/errout.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
- ada/elists.ads ada/err_vars.ads ada/errout.ads ada/errout.adb \
- ada/erroutc.ads ada/fname.ads ada/gnat.ads ada/g-hesorg.ads \
- ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads ada/lib.ads \
- ada/lib.adb ada/lib-list.adb 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/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-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/err_vars.ads ada/errout.ads ada/errout.adb ada/erroutc.ads \
+ ada/fname.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
+ ada/gnatvsn.ads ada/hostparm.ads ada/lib.ads ada/lib.adb \
+ ada/lib-list.adb 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/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-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/erroutc.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 \
@@ -1533,14 +1538,15 @@ ada/erroutc.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/namet.ads ada/opt.ads ada/output.ads ada/output.adb ada/rident.ads \
ada/sinput.ads ada/sinput.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-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.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/targparm.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
ada/unchconv.ads ada/unchdeal.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/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/eval_fat.ads \
ada/eval_fat.adb ada/gnat.ads ada/g-htable.ads ada/hostparm.ads \
ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/opt.ads \
@@ -1677,11 +1683,11 @@ ada/exp_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-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/unchconv.ads ada/unchdeal.ads ada/urealp.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/uintp.adb 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/atree.ads ada/atree.adb \
@@ -1949,7 +1955,7 @@ ada/exp_code.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/exp_dbug.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/exp_dbug.ads ada/exp_dbug.adb ada/gnat.ads ada/g-htable.ads \
ada/hostparm.ads ada/interfac.ads ada/namet.ads ada/namet.adb \
ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
@@ -2114,22 +2120,22 @@ ada/exp_pakd.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/exp_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
ada/casing.ads ada/casing.adb ada/csets.ads ada/debug.ads ada/einfo.ads \
- ada/einfo.adb ada/elists.ads ada/err_vars.ads ada/errout.ads \
- ada/erroutc.ads ada/exp_ch11.ads ada/exp_prag.ads ada/exp_prag.adb \
- ada/exp_tss.ads ada/exp_util.ads ada/expander.ads ada/fname.ads \
- ada/fname-uf.ads ada/gnat.ads ada/g-htable.ads ada/hostparm.ads \
- ada/lib.ads ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
- ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
- ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/sem.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-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/einfo.adb ada/err_vars.ads ada/errout.ads ada/erroutc.ads \
+ ada/exp_ch11.ads ada/exp_prag.ads ada/exp_prag.adb ada/exp_tss.ads \
+ ada/exp_util.ads ada/expander.ads ada/fname.ads ada/fname-uf.ads \
+ ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/lib.ads \
+ ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \
+ ada/opt.ads ada/output.ads ada/restrict.ads ada/restrict.adb \
+ ada/rident.ads ada/rtsfind.ads ada/sem.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-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 \
@@ -2142,15 +2148,15 @@ ada/exp_sel.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/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-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/unchconv.ads ada/unchdeal.ads ada/urealp.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/uintp.adb 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/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/exp_ch9.ads ada/exp_smem.ads ada/exp_smem.adb ada/exp_tss.ads \
ada/exp_util.ads ada/gnat.ads ada/g-htable.ads ada/hostparm.ads \
ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \
@@ -2159,10 +2165,10 @@ ada/exp_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-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/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/exp_strm.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -2175,11 +2181,11 @@ ada/exp_strm.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-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/unchconv.ads ada/unchdeal.ads ada/urealp.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/atree.ads ada/atree.adb \
@@ -2229,7 +2235,7 @@ ada/exp_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/exp_vfpt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/exp_vfpt.ads ada/exp_vfpt.adb ada/gnat.ads ada/g-htable.ads \
ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/rtsfind.ads \
@@ -2250,27 +2256,26 @@ ada/expander.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/exp_ch12.ads ada/exp_ch13.ads ada/exp_ch2.ads ada/exp_ch3.ads \
ada/exp_ch4.ads ada/exp_ch5.ads ada/exp_ch6.ads ada/exp_ch7.ads \
ada/exp_ch8.ads ada/exp_ch9.ads ada/exp_prag.ads ada/expander.ads \
- ada/expander.adb ada/gnat.ads ada/g-htable.ads ada/hostparm.ads \
- ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/opt.ads \
- ada/output.ads ada/rtsfind.ads ada/sem.ads ada/sem_ch8.ads \
- ada/sem_util.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-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/expander.adb ada/hostparm.ads ada/namet.ads ada/nlists.ads \
+ ada/nlists.adb ada/nmake.ads ada/opt.ads ada/output.ads ada/rtsfind.ads \
+ ada/sem.ads ada/sem_ch8.ads ada/sem_util.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-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/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-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-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/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 \
@@ -2279,10 +2284,10 @@ ada/fname-uf.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-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/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/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 \
@@ -2330,12 +2335,13 @@ ada/frontend.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_dbug.ads \
ada/fmap.ads ada/fname.ads ada/fname-uf.ads ada/frontend.ads \
- ada/frontend.adb ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
- ada/hostparm.ads ada/inline.ads ada/interfac.ads ada/lib.ads \
- ada/lib.adb ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb \
- ada/live.ads ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
- ada/nmake.adb ada/opt.ads ada/osint.ads ada/output.ads ada/par.ads \
- ada/prepcomp.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
+ ada/frontend.adb ada/gnat.ads ada/g-dyntab.ads ada/g-dyntab.adb \
+ ada/g-hesorg.ads ada/g-htable.ads ada/hostparm.ads ada/inline.ads \
+ ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
+ ada/lib-load.ads ada/lib-sort.adb ada/live.ads ada/namet.ads \
+ ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
+ ada/osint.ads ada/output.ads ada/par.ads ada/prep.ads ada/prepcomp.ads \
+ ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads \
ada/sem_aux.ads ada/sem_ch8.ads ada/sem_elab.ads ada/sem_prag.ads \
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
@@ -2434,19 +2440,18 @@ ada/hostparm.o : ada/ada.ads ada/a-unccon.ads ada/hostparm.ads \
ada/impunit.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
- ada/fname.ads ada/fname-uf.ads ada/gnat.ads ada/g-hesorg.ads \
- ada/g-htable.ads ada/hostparm.ads ada/impunit.ads ada/impunit.adb \
- ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
- ada/lib-sort.adb ada/namet.ads ada/namet.adb 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/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/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/fname.ads \
+ ada/fname-uf.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
+ ada/hostparm.ads ada/impunit.ads ada/impunit.adb ada/interfac.ads \
+ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/namet.ads \
+ ada/namet.adb 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/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/inline.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -2486,23 +2491,22 @@ ada/interfac.o : ada/interfac.ads ada/system.ads
ada/itypes.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
- ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/itypes.ads \
- ada/itypes.adb ada/namet.ads ada/nlists.ads ada/nlists.adb \
- ada/nmake.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/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/gnat.ads \
+ ada/g-htable.ads ada/hostparm.ads ada/itypes.ads ada/itypes.adb \
+ ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.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/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-stoele.ads ada/s-stoele.adb ada/s-unstyp.ads \
- ada/types.ads ada/unchconv.ads ada/unchdeal.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/atree.ads ada/atree.adb \
@@ -2558,10 +2562,9 @@ ada/lib-util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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/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-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/lib-writ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/ali.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -2601,41 +2604,40 @@ ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-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/widechar.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/widechar.ads
ada/lib.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/alloc.ads ada/atree.ads ada/atree.adb ada/casing.ads ada/debug.ads \
- ada/einfo.ads ada/einfo.adb ada/elists.ads ada/fname.ads ada/gnat.ads \
- ada/g-hesorg.ads ada/g-hesorg.adb ada/g-htable.ads ada/hostparm.ads \
- ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
- ada/lib-sort.adb ada/namet.ads ada/namet.adb ada/nlists.ads \
- ada/nlists.adb ada/opt.ads ada/output.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-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/einfo.ads ada/einfo.adb ada/fname.ads ada/gnat.ads ada/g-hesorg.ads \
+ ada/g-hesorg.adb ada/g-htable.ads ada/hostparm.ads ada/interfac.ads \
+ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/namet.ads \
+ ada/namet.adb ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.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-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/live.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
- ada/fname.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
- ada/hostparm.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
- ada/lib-sort.adb ada/live.ads ada/live.adb ada/namet.ads ada/nlists.ads \
- ada/nlists.adb ada/nmake.ads ada/opt.ads ada/output.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-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/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/fname.ads \
+ ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads ada/hostparm.ads \
+ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/live.ads \
+ ada/live.adb ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
+ ada/opt.ads ada/output.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-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/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+ ada/urealp.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 \
@@ -2659,27 +2661,26 @@ ada/namet.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/nlists.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.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/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/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads
+ 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/nmake.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.ads ada/gnat.ads \
- ada/g-htable.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
- ada/nlists.adb ada/nmake.ads ada/nmake.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-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/casing.ads ada/debug.ads ada/einfo.ads ada/hostparm.ads \
+ ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.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-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/opt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/debug.ads ada/gnatvsn.ads ada/hostparm.ads ada/opt.ads ada/opt.adb \
@@ -2724,10 +2725,13 @@ ada/osint.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
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-unccon.ads ada/a-uncdea.ads \
- ada/hostparm.ads ada/output.ads ada/output.adb ada/system.ads \
- ada/s-exctab.ads ada/s-os_lib.ads ada/s-stalib.ads ada/s-string.ads \
- ada/s-unstyp.ads ada/types.ads ada/unchconv.ads ada/unchdeal.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/par.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/alloc.ads ada/atree.ads ada/atree.adb ada/casing.ads ada/csets.ads \
@@ -2794,24 +2798,23 @@ ada/prepcomp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/repinfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
- ada/fname.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
- ada/hostparm.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
- ada/lib-sort.adb ada/namet.ads ada/nlists.ads ada/nlists.adb \
- ada/opt.ads ada/output.ads ada/output.adb ada/repinfo.ads \
- ada/repinfo.adb 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/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/fname.ads \
+ ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads ada/hostparm.ads \
+ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/namet.ads \
+ ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads ada/output.adb \
+ ada/repinfo.ads ada/repinfo.adb 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/restrict.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/fname.ads \
ada/fname-uf.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
ada/hostparm.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
@@ -2866,6 +2869,22 @@ ada/s-carun8.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
ada/s-casuti.o : ada/system.ads ada/s-casuti.ads ada/s-casuti.adb
+ada/s-conca2.o : ada/system.ads ada/s-conca2.ads ada/s-conca2.adb
+
+ada/s-conca3.o : ada/system.ads ada/s-conca3.ads ada/s-conca3.adb
+
+ada/s-conca4.o : ada/system.ads ada/s-conca4.ads ada/s-conca4.adb
+
+ada/s-conca5.o : ada/system.ads ada/s-conca5.ads ada/s-conca5.adb
+
+ada/s-conca6.o : ada/system.ads ada/s-conca6.ads ada/s-conca6.adb
+
+ada/s-conca7.o : ada/system.ads ada/s-conca7.ads ada/s-conca7.adb
+
+ada/s-conca8.o : ada/system.ads ada/s-conca8.ads ada/s-conca8.adb
+
+ada/s-conca9.o : ada/system.ads ada/s-conca9.ads ada/s-conca9.adb
+
ada/s-crc32.o : ada/interfac.ads ada/system.ads ada/s-crc32.ads \
ada/s-crc32.adb
@@ -2884,7 +2903,7 @@ ada/s-htable.o : ada/ada.ads ada/a-uncdea.ads ada/system.ads \
ada/s-htable.ads ada/s-htable.adb
ada/s-imenne.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
- ada/s-imenne.ads ada/s-imenne.adb ada/s-stoele.ads ada/s-stoele.adb
+ ada/s-imenne.ads ada/s-imenne.adb
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 \
@@ -2982,10 +3001,10 @@ ada/scans.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/scn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/alloc.ads ada/atree.ads ada/atree.adb ada/casing.ads ada/csets.ads \
- ada/debug.ads ada/einfo.ads ada/elists.ads ada/err_vars.ads \
- ada/errout.ads ada/erroutc.ads ada/gnat.ads ada/g-byorma.ads \
- ada/g-htable.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/debug.ads ada/einfo.ads ada/err_vars.ads ada/errout.ads \
+ ada/erroutc.ads ada/gnat.ads ada/g-byorma.ads ada/g-htable.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/restrict.ads ada/rident.ads ada/scans.ads ada/scn.ads ada/scn.adb \
ada/scng.ads ada/scng.adb ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
ada/sinput.adb ada/snames.ads ada/stringt.ads ada/stringt.adb \
@@ -3015,18 +3034,18 @@ ada/scng.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/alloc.ads ada/atree.ads ada/atree.adb ada/casing.ads ada/debug.ads \
ada/debug_a.ads ada/debug_a.adb ada/einfo.ads ada/einfo.adb \
- ada/elists.ads ada/err_vars.ads ada/errout.ads ada/erroutc.ads \
- ada/exp_tss.ads ada/expander.ads ada/fname.ads ada/gnat.ads \
- ada/g-hesorg.ads ada/g-htable.ads ada/hlo.ads ada/hostparm.ads \
- ada/inline.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
- ada/lib-load.ads ada/lib-sort.adb ada/namet.ads ada/nlists.ads \
- ada/nlists.adb ada/nmake.ads ada/opt.ads ada/output.ads \
- ada/restrict.ads ada/rident.ads ada/sem.ads ada/sem.adb \
- ada/sem_attr.ads ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads \
- ada/sem_ch13.ads ada/sem_ch2.ads ada/sem_ch2.adb 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/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
+ ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_tss.ads \
+ ada/expander.ads ada/fname.ads ada/gnat.ads ada/g-hesorg.ads \
+ ada/g-htable.ads ada/hlo.ads ada/hostparm.ads ada/inline.ads \
+ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-load.ads \
+ ada/lib-sort.adb ada/namet.ads ada/nlists.ads ada/nlists.adb \
+ ada/nmake.ads ada/opt.ads ada/output.ads ada/restrict.ads \
+ ada/rident.ads ada/sem.ads ada/sem.adb ada/sem_attr.ads \
+ ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads ada/sem_ch13.ads \
+ ada/sem_ch2.ads ada/sem_ch2.adb 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/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stringt.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-stalib.ads ada/s-string.ads \
@@ -3102,32 +3121,34 @@ ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
ada/sem_aux.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.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/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-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/casing.ads ada/debug.ads ada/einfo.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/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-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/sem_case.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/gnat.ads \
ada/g-hesorg.ads ada/g-hesorg.adb ada/g-htable.ads ada/hostparm.ads \
- ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \
- ada/opt.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-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/interfac.ads ada/namet.ads ada/namet.adb ada/nlists.ads \
+ ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.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/sem_cat.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -3188,22 +3209,22 @@ ada/sem_ch10.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
ada/casing.ads ada/checks.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
- ada/elists.ads ada/err_vars.ads ada/errout.ads ada/erroutc.ads \
- ada/exp_code.ads ada/fname.ads ada/gnat.ads ada/g-htable.ads \
- ada/hostparm.ads ada/lib.ads ada/lib-xref.ads ada/namet.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.ads ada/sem_aux.ads ada/sem_ch11.ads ada/sem_ch11.adb \
- ada/sem_ch5.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-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/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
+ ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_code.ads \
+ ada/fname.ads ada/gnat.ads ada/g-htable.ads ada/hostparm.ads \
+ ada/lib.ads ada/lib-xref.ads ada/namet.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.ads \
+ ada/sem_aux.ads ada/sem_ch11.ads ada/sem_ch11.adb ada/sem_ch5.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-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/tree_io.ads \
+ ada/types.ads ada/uintp.ads ada/uintp.adb 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/atree.ads ada/atree.adb \
@@ -3264,17 +3285,16 @@ ada/sem_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.ads \
- ada/err_vars.ads ada/errout.ads ada/erroutc.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/restrict.ads \
- ada/rident.ads ada/sem_ch2.ads ada/sem_ch2.adb ada/sem_ch8.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-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/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/err_vars.ads \
+ ada/errout.ads ada/erroutc.ads ada/hostparm.ads ada/namet.ads \
+ ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
+ ada/restrict.ads ada/rident.ads ada/sem_ch2.ads ada/sem_ch2.adb \
+ ada/sem_ch8.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/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -3382,32 +3402,33 @@ ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/einfo.adb ada/elists.ads ada/elists.adb ada/err_vars.ads \
ada/errout.ads ada/erroutc.ads ada/exp_ch6.ads ada/exp_ch7.ads \
ada/exp_ch9.ads ada/exp_disp.ads ada/exp_tss.ads ada/exp_util.ads \
- ada/expander.ads ada/fname.ads ada/freeze.ads ada/get_targ.ads \
- ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads ada/hostparm.ads \
- ada/inline.ads ada/interfac.ads ada/itypes.ads ada/layout.ads \
- ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb \
- ada/lib-xref.ads ada/namet.ads ada/namet.adb 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/scans.ads \
- ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads ada/sem_attr.ads \
- ada/sem_aux.ads ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch12.ads \
- ada/sem_ch3.ads ada/sem_ch4.ads ada/sem_ch5.ads ada/sem_ch6.ads \
- ada/sem_ch6.adb ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads \
- ada/sem_elim.ads ada/sem_eval.ads ada/sem_mech.ads ada/sem_prag.ads \
- ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
- ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
- ada/sinput.ads ada/sinput.adb 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-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/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/expander.ads ada/fname.ads ada/fname-uf.ads ada/freeze.ads \
+ ada/get_targ.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
+ ada/hostparm.ads ada/inline.ads ada/interfac.ads ada/itypes.ads \
+ ada/layout.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
+ ada/lib-sort.adb ada/lib-xref.ads ada/namet.ads ada/namet.adb \
+ ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
+ ada/output.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+ ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
+ ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
+ ada/sem_ch10.ads ada/sem_ch12.ads ada/sem_ch3.ads ada/sem_ch4.ads \
+ ada/sem_ch5.ads ada/sem_ch6.ads ada/sem_ch6.adb ada/sem_ch8.ads \
+ ada/sem_disp.ads ada/sem_dist.ads ada/sem_elim.ads ada/sem_eval.ads \
+ ada/sem_mech.ads ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads \
+ ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads \
+ ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/sinput.adb \
+ 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-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/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_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -3520,23 +3541,24 @@ ada/sem_disp.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/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads \
ada/sem_attr.ads ada/sem_aux.ads ada/sem_ch6.ads ada/sem_ch7.ads \
- ada/sem_ch8.ads ada/sem_disp.ads ada/sem_disp.adb ada/sem_eval.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-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/validsw.ads ada/widechar.ads
+ ada/sem_ch8.ads ada/sem_disp.ads ada/sem_disp.adb ada/sem_elim.ads \
+ ada/sem_eval.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-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/validsw.ads \
+ ada/widechar.ads
ada/sem_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/exp_dist.ads \
ada/exp_tss.ads ada/gnat.ads ada/g-htable.ads ada/hostparm.ads \
ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \
@@ -3546,11 +3568,11 @@ ada/sem_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
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-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/types.adb ada/uintp.ads ada/uintp.adb \
- ada/unchconv.ads ada/unchdeal.ads ada/urealp.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/uintp.adb 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/atree.ads ada/atree.adb \
@@ -3583,7 +3605,7 @@ ada/sem_elab.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_elim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/err_vars.ads ada/errout.ads ada/erroutc.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/sem_elim.ads \
@@ -3629,7 +3651,7 @@ ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/fname.ads \
ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads ada/hostparm.ads \
ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/namet.ads \
@@ -3639,28 +3661,27 @@ ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-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/uintp.adb ada/uname.ads ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.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/uname.ads \
+ ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
ada/sem_maps.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.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/sem_maps.ads ada/sem_maps.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-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/casing.ads ada/debug.ads ada/einfo.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/sem_maps.ads \
+ ada/sem_maps.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-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/sem_mech.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/gnat.ads \
ada/g-htable.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
ada/nlists.adb ada/nmake.ads ada/opt.ads ada/output.ads ada/rident.ads \
@@ -3750,7 +3771,7 @@ ada/sem_res.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sem_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/err_vars.ads ada/errout.ads ada/erroutc.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/sem_aux.ads \
@@ -3809,29 +3830,29 @@ ada/sem_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-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-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/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-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/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/atree.adb \
ada/casing.ads ada/cstand.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
- ada/elists.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/rident.ads ada/sem_vfpt.ads ada/sem_vfpt.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-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/ttypef.ads ada/types.ads ada/uintp.ads \
- ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.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/rident.ads \
+ ada/sem_vfpt.ads ada/sem_vfpt.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-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/ttypef.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+ 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/atree.ads ada/atree.adb \
@@ -3861,11 +3882,10 @@ ada/sem_warn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo-cn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.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-cn.ads ada/sinfo-cn.adb ada/sinput.ads ada/snames.ads \
- ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+ 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-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 \
@@ -3873,7 +3893,7 @@ ada/sinfo-cn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/elists.ads ada/gnat.ads \
+ 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/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 \
@@ -3888,10 +3908,9 @@ ada/sinput-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
ada/sinput.ads ada/sinput-c.ads ada/sinput-c.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-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-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/sinput-d.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 \
@@ -3905,22 +3924,22 @@ ada/sinput-d.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sinput-l.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads ada/elists.ads \
+ ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/fname.ads \
ada/gnat.ads ada/g-dyntab.ads ada/g-dyntab.adb ada/g-hesorg.ads \
- ada/g-htable.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
- ada/nlists.ads ada/nlists.adb ada/opt.ads ada/osint.ads ada/output.ads \
- ada/prep.ads ada/prepcomp.ads ada/scans.ads ada/scn.ads ada/scng.ads \
- ada/scng.adb ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
- ada/sinput-l.ads ada/sinput-l.adb ada/snames.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-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-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/hostparm.ads ada/interfac.ads ada/namet.ads ada/nlists.ads \
+ ada/nlists.adb ada/opt.ads ada/osint.ads ada/output.ads ada/prep.ads \
+ ada/prepcomp.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
+ ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput-l.ads \
+ ada/sinput-l.adb ada/snames.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-crc32.adb 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-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 \
ada/a-uncdea.ads ada/alloc.ads ada/casing.ads ada/debug.ads \
@@ -3945,55 +3964,50 @@ ada/snames.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/sprint.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
- ada/elists.ads ada/fname.ads ada/gnat.ads ada/g-hesorg.ads \
- ada/g-htable.ads ada/hostparm.ads ada/interfac.ads ada/lib.ads \
- ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/namet.ads \
- ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/opt.ads \
- ada/output.ads ada/output.adb ada/rtsfind.ads ada/sem_util.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-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/fname.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
+ ada/hostparm.ads ada/interfac.ads ada/lib.ads ada/lib.adb \
+ ada/lib-list.adb ada/lib-sort.adb ada/namet.ads ada/namet.adb \
+ ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/opt.ads ada/output.ads \
+ ada/output.adb ada/rtsfind.ads ada/sem_util.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/stand.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/stand.ads ada/stand.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/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 \
+ ada/s-stalib.ads ada/s-string.ads ada/s-unstyp.ads ada/tree_io.ads \
+ ada/types.ads ada/unchconv.ads ada/unchdeal.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-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/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/atree.ads ada/atree.adb \
- ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads ada/elists.ads \
- ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/gnat.ads \
- ada/g-htable.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/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-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/tree_io.ads \
- ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
- ada/urealp.ads ada/widechar.ads
+ ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
+ ada/err_vars.ads ada/errout.ads ada/erroutc.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/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-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/casing.ads ada/csets.ads \
@@ -4008,8 +4022,8 @@ ada/styleg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/stylesw.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads \
ada/debug.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-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-unstyp.ads \
- ada/s-wchcon.ads ada/types.ads ada/unchconv.ads ada/unchdeal.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 \
@@ -4124,7 +4138,8 @@ ada/treepr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.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-stalib.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/treepr.ads \
ada/treepr.adb ada/treeprs.ads ada/types.ads ada/uintp.ads \
@@ -4163,18 +4178,18 @@ ada/uintp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/uname.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
- ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
- ada/fname.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
- ada/hostparm.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
- ada/lib-sort.adb 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/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-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/uname.ads ada/uname.adb ada/unchconv.ads \
- ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
+ ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/fname.ads \
+ ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads ada/hostparm.ads \
+ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb 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/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-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/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 \
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index a1405380198..ac0ae4c7880 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -374,7 +374,7 @@ PREFIX_REAL_OBJS = ../prefix.o \
../../libiberty/xexit.o
# By default, build socket support units. On platforms that do not support
-# sockets, reset this variable to empty and add DUMMY_SOCKETS_TARGET_PAIRS
+# sockets, reset this variable to empty and add DUMMY_SOCKETS_TARGET_PAIRS
# to LIBGNAT_TARGET_PAIRS.
GNATRTL_SOCKETS_OBJS = g-soccon$(objext) g-socket$(objext) g-socthi$(objext) \
@@ -403,7 +403,7 @@ ifeq ($(strip $(filter-out m68k% wrs vx%,$(targ))),)
s-interr.adb<s-interr-hwint.adb \
s-intman.ads<s-intman-vxworks.ads \
s-intman.adb<s-intman-vxworks.adb \
- s-osinte.adb<s-osinte-vxworks-kernel.adb \
+ s-osinte.adb<s-osinte-vxworks.adb \
s-osinte.ads<s-osinte-vxworks.ads \
s-osprim.adb<s-osprim-vxworks.adb \
s-parame.ads<s-parame-vxworks.ads \
@@ -419,6 +419,8 @@ ifeq ($(strip $(filter-out m68k% wrs vx%,$(targ))),)
g-stsifd.adb<g-stsifd-sockets.adb \
g-sttsne.adb<g-sttsne-vxworks.adb \
g-sttsne.ads<g-sttsne-locking.ads \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-vxworks-m68k.ads
TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb
@@ -447,6 +449,7 @@ ifeq ($(strip $(filter-out powerpc% wrs vxworks,$(targ))),)
s-intman.ads<s-intman-vxworks.ads \
s-intman.adb<s-intman-vxworks.adb \
s-osinte.ads<s-osinte-vxworks.ads \
+ s-osinte.adb<s-osinte-vxworks.adb \
s-osprim.adb<s-osprim-vxworks.adb \
s-parame.ads<s-parame-vxworks.ads \
s-parame.adb<s-parame-vxworks.adb \
@@ -459,7 +462,9 @@ ifeq ($(strip $(filter-out powerpc% wrs vxworks,$(targ))),)
g-socthi.adb<g-socthi-vxworks.adb \
g-stsifd.adb<g-stsifd-sockets.adb \
g-sttsne.adb<g-sttsne-vxworks.adb \
- g-sttsne.ads<g-sttsne-locking.ads
+ g-sttsne.ads<g-sttsne-locking.ads \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb
TOOLS_TARGET_PAIRS=\
mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
@@ -476,7 +481,6 @@ ifeq ($(strip $(filter-out powerpc% wrs vxworks,$(targ))),)
ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
LIBGNAT_TARGET_PAIRS += \
- s-osinte.adb<s-osinte-vxworks.adb \
s-vxwext.ads<s-vxwext-rtp.ads \
s-vxwext.adb<s-vxwext-rtp.adb \
s-tpopsp.adb<s-tpopsp-vxworks-rtp.adb \
@@ -491,6 +495,7 @@ ifeq ($(strip $(filter-out powerpc% wrs vxworks,$(targ))),)
ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
LIBGNAT_TARGET_PAIRS += \
s-vxwext.ads<s-vxwext-kernel.ads \
+ s-vxwext.adb<s-vxwext-kernel.adb \
system.ads<system-vxworks-ppc-kernel.ads
else
LIBGNAT_TARGET_PAIRS += \
@@ -519,7 +524,7 @@ ifeq ($(strip $(filter-out powerpc% wrs vxworksae,$(targ))),)
s-interr.adb<s-interr-hwint.adb \
s-intman.ads<s-intman-vxworks.ads \
s-intman.adb<s-intman-vxworks.adb \
- s-osinte.adb<s-osinte-vxworks-kernel.adb \
+ s-osinte.adb<s-osinte-vxworks.adb \
s-osinte.ads<s-osinte-vxworks.ads \
s-osprim.adb<s-osprim-vxworks.adb \
s-parame.ads<s-parame-ae653.ads \
@@ -527,12 +532,16 @@ ifeq ($(strip $(filter-out powerpc% wrs vxworksae,$(targ))),)
s-taprop.adb<s-taprop-vxworks.adb \
s-taspri.ads<s-taspri-vxworks.ads \
s-tpopsp.adb<s-tpopsp-vxworks.adb \
+ s-vxwext.adb<s-vxwext-noints.adb \
+ s-vxwext.ads<s-vxwext-vthreads.ads \
s-vxwork.ads<s-vxwork-ppc.ads \
g-socthi.ads<g-socthi-vxworks.ads \
g-socthi.adb<g-socthi-vxworks.adb \
g-stsifd.adb<g-stsifd-sockets.adb \
g-sttsne.adb<g-sttsne-vxworks.adb \
g-sttsne.ads<g-sttsne-locking.ads \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-vxworks-ppc-vthread.ads
TOOLS_TARGET_PAIRS=\
@@ -576,7 +585,7 @@ ifeq ($(strip $(filter-out %86 wrs vxworksae,$(targ))),)
s-interr.adb<s-interr-hwint.adb \
s-intman.ads<s-intman-vxworks.ads \
s-intman.adb<s-intman-vxworks.adb \
- s-osinte.adb<s-osinte-vxworks-kernel.adb \
+ s-osinte.adb<s-osinte-vxworks.adb \
s-osinte.ads<s-osinte-vxworks.ads \
s-osprim.adb<s-osprim-vxworks.adb \
s-parame.ads<s-parame-ae653.ads \
@@ -584,12 +593,16 @@ ifeq ($(strip $(filter-out %86 wrs vxworksae,$(targ))),)
s-taspri.ads<s-taspri-vxworks.ads \
s-thread.adb<s-thread-ae653.adb \
s-tpopsp.adb<s-tpopsp-vxworks.adb \
+ s-vxwext.adb<s-vxwext-noints.adb \
+ s-vxwext.ads<s-vxwext-vthreads.ads \
s-vxwork.ads<s-vxwork-x86.ads \
g-socthi.ads<g-socthi-vxworks.ads \
g-socthi.adb<g-socthi-vxworks.adb \
g-stsifd.adb<g-stsifd-sockets.adb \
g-sttsne.adb<g-sttsne-vxworks.adb \
g-sttsne.ads<g-sttsne-locking.ads \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-vxworks-x86.ads
TOOLS_TARGET_PAIRS=\
@@ -624,7 +637,7 @@ ifeq ($(strip $(filter-out sparc% wrs vx%,$(targ))),)
s-interr.adb<s-interr-hwint.adb \
s-intman.ads<s-intman-vxworks.ads \
s-intman.adb<s-intman-vxworks.adb \
- s-osinte.adb<s-osinte-vxworks-kernel.adb \
+ s-osinte.adb<s-osinte-vxworks.adb \
s-osinte.ads<s-osinte-vxworks.ads \
s-osprim.adb<s-osprim-vxworks.adb \
s-parame.ads<s-parame-vxworks.ads \
@@ -640,6 +653,8 @@ ifeq ($(strip $(filter-out sparc% wrs vx%,$(targ))),)
g-stsifd.adb<g-stsifd-sockets.adb \
g-sttsne.adb<g-sttsne-vxworks.adb \
g-sttsne.ads<g-sttsne-locking.ads \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-vxworks-sparcv9.ads \
TOOLS_TARGET_PAIRS=\
@@ -657,6 +672,7 @@ ifeq ($(strip $(filter-out %86 wrs vxworks,$(targ))),)
LIBGNAT_TARGET_PAIRS = \
a-intnam.ads<a-intnam-vxworks.ads \
i-vxwork.ads<i-vxwork-x86.ads \
+ s-osinte.adb<s-osinte-vxworks.adb \
s-osinte.ads<s-osinte-vxworks.ads \
s-inmaop.adb<s-inmaop-posix.adb \
s-intman.ads<s-intman-vxworks.ads \
@@ -676,7 +692,9 @@ ifeq ($(strip $(filter-out %86 wrs vxworks,$(targ))),)
g-socthi.adb<g-socthi-vxworks.adb \
g-stsifd.adb<g-stsifd-sockets.adb \
g-sttsne.adb<g-sttsne-vxworks.adb \
- g-sttsne.ads<g-sttsne-locking.ads
+ g-sttsne.ads<g-sttsne-locking.ads \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb
TOOLS_TARGET_PAIRS=\
mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
@@ -693,7 +711,6 @@ ifeq ($(strip $(filter-out %86 wrs vxworks,$(targ))),)
ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
LIBGNAT_TARGET_PAIRS += \
- s-osinte.adb<s-osinte-vxworks.adb \
s-vxwext.ads<s-vxwext-rtp.ads \
s-vxwext.adb<s-vxwext-rtp.adb \
s-tpopsp.adb<s-tpopsp-vxworks-rtp.adb \
@@ -703,11 +720,12 @@ ifeq ($(strip $(filter-out %86 wrs vxworks,$(targ))),)
else
LIBGNAT_TARGET_PAIRS += \
s-interr.adb<s-interr-hwint.adb \
- s-tpopsp.adb<s-tpopsp-vxworks.adb
+ s-tpopsp.adb<s-tpopsp-vxworks.adb
ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
LIBGNAT_TARGET_PAIRS += \
s-vxwext.ads<s-vxwext-kernel.ads \
+ s-vxwext.adb<s-vxwext-kernel.adb \
system.ads<system-vxworks-x86-kernel.ads
else
LIBGNAT_TARGET_PAIRS += \
@@ -731,7 +749,7 @@ ifeq ($(strip $(filter-out arm% coff wrs vx%,$(targ))),)
s-interr.adb<s-interr-hwint.adb \
s-intman.ads<s-intman-vxworks.ads \
s-intman.adb<s-intman-vxworks.adb \
- s-osinte.adb<s-osinte-vxworks-kernel.adb \
+ s-osinte.adb<s-osinte-vxworks.adb \
s-osinte.ads<s-osinte-vxworks.ads \
s-osprim.adb<s-osprim-vxworks.adb \
s-parame.ads<s-parame-vxworks.ads \
@@ -747,6 +765,8 @@ ifeq ($(strip $(filter-out arm% coff wrs vx%,$(targ))),)
g-stsifd.adb<g-stsifd-sockets.adb \
g-sttsne.adb<g-sttsne-vxworks.adb \
g-sttsne.ads<g-sttsne-locking.ads \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-vxworks-arm.ads
TOOLS_TARGET_PAIRS=\
@@ -768,7 +788,7 @@ ifeq ($(strip $(filter-out mips% wrs vx%,$(targ))),)
s-interr.adb<s-interr-hwint.adb \
s-intman.ads<s-intman-vxworks.ads \
s-intman.adb<s-intman-vxworks.adb \
- s-osinte.adb<s-osinte-vxworks-kernel.adb \
+ s-osinte.adb<s-osinte-vxworks.adb \
s-osinte.ads<s-osinte-vxworks.ads \
s-osprim.adb<s-osprim-vxworks.adb \
s-parame.ads<s-parame-vxworks.ads \
@@ -784,6 +804,8 @@ ifeq ($(strip $(filter-out mips% wrs vx%,$(targ))),)
g-stsifd.adb<g-stsifd-sockets.adb \
g-sttsne.adb<g-sttsne-vxworks.adb \
g-sttsne.ads<g-sttsne-locking.ads \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-vxworks-mips.ads
TOOLS_TARGET_PAIRS=\
@@ -915,11 +937,9 @@ ifeq ($(strip $(filter-out %86 linux%,$(arch) $(osys))),)
g-bytswa.adb<g-bytswa-x86.adb \
s-inmaop.adb<s-inmaop-posix.adb \
s-intman.adb<s-intman-posix.adb \
- s-osprim.adb<s-osprim-posix.adb \
s-taspri.ads<s-taspri-posix.ads \
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
- g-sercom.adb<g-sercom-linux.adb \
- system.ads<system-linux-x86.ads
+ g-sercom.adb<g-sercom-linux.adb
ifeq ($(strip $(filter-out marte,$(THREAD_KIND))),)
LIBGNAT_TARGET_PAIRS += \
@@ -931,7 +951,9 @@ ifeq ($(strip $(filter-out %86 linux%,$(arch) $(osys))),)
a-rttiev.ads<a-rttiev-linux-marte.ads \
s-osinte.adb<s-osinte-linux-marte.adb \
s-osinte.ads<s-osinte-linux-marte.ads \
- s-taprop.adb<s-taprop-linux-marte.adb
+ s-osprim.adb<s-osprim-posix.adb \
+ s-taprop.adb<s-taprop-linux-marte.adb \
+ system.ads<system-linux-x86.ads
EXTRA_GNATRTL_TASKING_OBJS=a-exetim.o a-extiti.o
@@ -945,15 +967,19 @@ ifeq ($(strip $(filter-out %86 linux%,$(arch) $(osys))),)
ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),)
LIBGNAT_TARGET_PAIRS += \
s-osinte.ads<s-osinte-linux-xenomai.ads \
- s-taprop.adb<s-taprop-linux-xenomai.adb
+ s-osprim.adb<s-osprim-linux-xenomai.adb \
+ s-taprop.adb<s-taprop-linux-xenomai.adb \
+ system.ads<system-linux-x86-xenomai.ads
- EH_MECHANISM=
+ EH_MECHANISM=-gcc
else
LIBGNAT_TARGET_PAIRS += \
s-osinte.ads<s-osinte-linux.ads \
+ s-osprim.adb<s-osprim-posix.adb \
s-taprop.adb<s-taprop-linux.adb \
s-tasinf.ads<s-tasinf-linux.ads \
- s-tasinf.adb<s-tasinf-linux.adb
+ s-tasinf.adb<s-tasinf-linux.adb \
+ system.ads<system-linux-x86.ads
EH_MECHANISM=-gcc
endif
@@ -1041,7 +1067,9 @@ ifeq ($(strip $(filter-out s390% linux%,$(arch) $(osys))),)
s-tasinf.ads<s-tasinf-linux.ads \
s-tasinf.adb<s-tasinf-linux.adb \
s-taspri.ads<s-taspri-posix-noaltstack.ads \
- s-tpopsp.adb<s-tpopsp-posix-foreign.adb
+ s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb
LIBGNAT_TARGET_PAIRS_32 = \
system.ads<system-linux-s390.ads
@@ -1216,6 +1244,8 @@ ifeq ($(strip $(filter-out lynxos,$(osys))),)
s-taprop.adb<s-taprop-lynxos.adb \
s-taspri.ads<s-taspri-lynxos.ads \
s-tpopsp.adb<s-tpopsp-lynxos.adb \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-lynxos-x86.ads
PREFIX_OBJS=$(PREFIX_REAL_OBJS)
@@ -1233,6 +1263,8 @@ ifeq ($(strip $(filter-out lynxos,$(osys))),)
s-taprop.adb<s-taprop-lynxos.adb \
s-taspri.ads<s-taspri-lynxos.ads \
s-tpopsp.adb<s-tpopsp-lynxos.adb \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-lynxos-ppc.ads
endif
endif
@@ -1251,7 +1283,9 @@ ifeq ($(strip $(filter-out rtems%,$(osys))),)
s-taspri.ads<s-taspri-posix.ads \
s-tpopsp.adb<s-tpopsp-rtems.adb \
s-stchop.adb<s-stchop-rtems.adb \
- s-interr.adb<s-interr-hwint.adb
+ s-interr.adb<s-interr-hwint.adb \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb
endif
ifeq ($(strip $(filter-out alpha% dec osf%,$(targ))),)
@@ -1302,6 +1336,8 @@ ifeq ($(strip $(filter-out ia64 hp vms% openvms%,$(targ))),)
s-osinte.adb<s-osinte-vms-ia64.adb \
s-osinte.ads<s-osinte-vms-ia64.ads \
s-vaflop.adb<s-vaflop-vms-ia64.adb \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-vms-ia64.ads
LIBGNAT_TARGET_PAIRS_AUX2 = \
@@ -1361,6 +1397,7 @@ endif
s-osprim.adb<s-osprim-vms.adb \
s-osprim.ads<s-osprim-vms.ads \
s-taprop.adb<s-taprop-vms.adb \
+ s-tasdeb.adb<s-tasdeb-vms.adb \
s-taspri.ads<s-taspri-vms.ads \
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
s-tpopde.adb<s-tpopde-vms.adb \
@@ -1600,6 +1637,8 @@ ifeq ($(strip $(filter-out sparc% linux%,$(arch) $(osys))),)
s-tpopsp.adb<s-tpopsp-posix-foreign.adb
LIBGNAT_TARGET_PAIRS_32 = \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-linux-sparc.ads
LIBGNAT_TARGET_PAIRS_64 = \
@@ -1640,6 +1679,8 @@ ifeq ($(strip $(filter-out hppa% linux%,$(arch) $(osys))),)
s-tasinf.adb<s-tasinf-linux.adb \
s-taspri.ads<s-taspri-posix-noaltstack.ads \
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-linux-hppa.ads
TOOLS_TARGET_PAIRS = \
@@ -1731,6 +1772,8 @@ ifeq ($(strip $(filter-out alpha% linux%,$(arch) $(osys))),)
s-tasinf.adb<s-tasinf-linux.adb \
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
s-taspri.ads<s-taspri-posix-noaltstack.ads \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-linux-alpha.ads
TOOLS_TARGET_PAIRS = \
@@ -1790,6 +1833,8 @@ ifeq ($(strip $(filter-out darwin%,$(osys))),)
s-taprop.adb<s-taprop-posix.adb \
s-taspri.ads<s-taspri-posix.ads \
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
a-numaux.ads<a-numaux-x86.ads \
a-numaux.adb<a-numaux-x86.adb
ifeq ($(strip $(MULTISUBDIR)),/x86_64)
@@ -1814,6 +1859,8 @@ ifeq ($(strip $(filter-out darwin%,$(osys))),)
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
a-numaux.ads<a-numaux-x86.ads \
a-numaux.adb<a-numaux-x86.adb \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-darwin-x86_64.ads
endif
@@ -1830,6 +1877,8 @@ ifeq ($(strip $(filter-out darwin%,$(osys))),)
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
a-numaux.ads<a-numaux-darwin.ads \
a-numaux.adb<a-numaux-darwin.adb \
+ g-trasym.ads<g-trasym-unimplemented.ads \
+ g-trasym.adb<g-trasym-unimplemented.adb \
system.ads<system-darwin-ppc.ads
endif
@@ -2236,11 +2285,13 @@ gnatlib-shared-darwin:
-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
$(SO_OPTS) \
+ -Wl,-install_name,@rpath/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
$(MISCLIB) -lm
cd $(RTSDIR); ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \
-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
$(GNATRTL_TASKING_OBJS) \
$(SO_OPTS) \
+ -Wl,-install_name,@rpath/libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
$(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext)
cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
libgnat$(soext)
diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
index b5d1205f5ee..cbb892933f1 100644
--- a/gcc/ada/gcc-interface/misc.c
+++ b/gcc/ada/gcc-interface/misc.c
@@ -91,8 +91,6 @@ static const char *gnat_dwarf_name (tree, int);
static tree gnat_return_tree (tree);
static int gnat_eh_type_covers (tree, tree);
static void gnat_parse_file (int);
-static rtx gnat_expand_expr (tree, rtx, enum machine_mode, int,
- rtx *);
static void internal_error_function (const char *, va_list *);
static tree gnat_type_max_size (const_tree);
@@ -124,8 +122,6 @@ static tree gnat_type_max_size (const_tree);
#define LANG_HOOKS_FINISH_INCOMPLETE_DECL gnat_finish_incomplete_decl
#undef LANG_HOOKS_GET_ALIAS_SET
#define LANG_HOOKS_GET_ALIAS_SET gnat_get_alias_set
-#undef LANG_HOOKS_EXPAND_EXPR
-#define LANG_HOOKS_EXPAND_EXPR gnat_expand_expr
#undef LANG_HOOKS_MARK_ADDRESSABLE
#define LANG_HOOKS_MARK_ADDRESSABLE gnat_mark_addressable
#undef LANG_HOOKS_PRINT_DECL
@@ -612,45 +608,6 @@ gnat_printable_name (tree decl, int verbosity)
return ada_name;
}
-/* Expands GNAT-specific GCC tree nodes. The only ones we support
- here are and NULL_EXPR. */
-
-static rtx
-gnat_expand_expr (tree exp, rtx target, enum machine_mode tmode,
- int modifier, rtx *alt_rtl)
-{
- tree type = TREE_TYPE (exp);
- tree new;
-
- /* Update EXP to be the new expression to expand. */
- switch (TREE_CODE (exp))
- {
-#if 0
- case ALLOCATE_EXPR:
- return
- allocate_dynamic_stack_space
- (expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, TYPE_MODE (sizetype),
- EXPAND_NORMAL),
- NULL_RTX, tree_low_cst (TREE_OPERAND (exp, 1), 1));
-#endif
-
- case UNCONSTRAINED_ARRAY_REF:
- /* If we are evaluating just for side-effects, just evaluate our
- operand. Otherwise, abort since this code should never appear
- in a tree to be evaluated (objects aren't unconstrained). */
- if (target == const0_rtx || TREE_CODE (type) == VOID_TYPE)
- return expand_expr (TREE_OPERAND (exp, 0), const0_rtx,
- VOIDmode, modifier);
-
- /* ... fall through ... */
-
- default:
- gcc_unreachable ();
- }
-
- return expand_expr_real (new, target, tmode, modifier, alt_rtl);
-}
-
/* Do nothing (return the tree node passed). */
static tree
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 981b91310f9..0b46b56a89e 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -544,21 +544,6 @@ gigi (Node_Id gnat_root, int max_gnat_node, int number_name,
= build_qualified_type (TREE_TYPE (raise_nodefer_decl),
TYPE_QUAL_VOLATILE);
- long_long_float_type
- = gnat_to_gnu_entity (Base_Type (standard_long_long_float), NULL_TREE, 0);
-
- if (TREE_CODE (TREE_TYPE (long_long_float_type)) == INTEGER_TYPE)
- {
- /* In this case, the builtin floating point types are VAX float,
- so make up a type for use. */
- longest_float_type_node = make_node (REAL_TYPE);
- TYPE_PRECISION (longest_float_type_node) = LONG_DOUBLE_TYPE_SIZE;
- layout_type (longest_float_type_node);
- record_builtin_type ("longest float type", longest_float_type_node);
- }
- else
- longest_float_type_node = TREE_TYPE (long_long_float_type);
-
/* Build the special descriptor type and its null node if needed. */
if (TARGET_VTABLE_USES_DESCRIPTORS)
{
@@ -577,10 +562,26 @@ gigi (Node_Id gnat_root, int max_gnat_node, int number_name,
null_list = tree_cons (field, null_node, null_list);
}
- finish_record_type (fdesc_type_node, nreverse (field_list), 0, false);
+ finish_record_type (fdesc_type_node, nreverse (field_list), 0, true);
+ record_builtin_type ("descriptor", fdesc_type_node);
null_fdesc_node = gnat_build_constructor (fdesc_type_node, null_list);
}
+ long_long_float_type
+ = gnat_to_gnu_entity (Base_Type (standard_long_long_float), NULL_TREE, 0);
+
+ if (TREE_CODE (TREE_TYPE (long_long_float_type)) == INTEGER_TYPE)
+ {
+ /* In this case, the builtin floating point types are VAX float,
+ so make up a type for use. */
+ longest_float_type_node = make_node (REAL_TYPE);
+ TYPE_PRECISION (longest_float_type_node) = LONG_DOUBLE_TYPE_SIZE;
+ layout_type (longest_float_type_node);
+ record_builtin_type ("longest float type", longest_float_type_node);
+ }
+ else
+ longest_float_type_node = TREE_TYPE (long_long_float_type);
+
/* Dummy objects to materialize "others" and "all others" in the exception
tables. These are exported by a-exexpr.adb, so see this unit for the
types to use. */
@@ -2510,12 +2511,19 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
gnat_formal);
}
- /* Remove any unpadding from the object and reset the copy. */
- if (TREE_CODE (gnu_name) == COMPONENT_REF
- && ((TREE_CODE (TREE_TYPE (TREE_OPERAND (gnu_name, 0)))
- == RECORD_TYPE)
- && (TYPE_IS_PADDING_P
- (TREE_TYPE (TREE_OPERAND (gnu_name, 0))))))
+ /* If the actual type of the object is already the nominal type,
+ we have nothing to do, except if the size is self-referential
+ in which case we'll remove the unpadding below. */
+ if (TREE_TYPE (gnu_name) == gnu_name_type
+ && !CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_name_type)))
+ ;
+
+ /* Otherwise remove unpadding from the object and reset the copy. */
+ else if (TREE_CODE (gnu_name) == COMPONENT_REF
+ && ((TREE_CODE (TREE_TYPE (TREE_OPERAND (gnu_name, 0)))
+ == RECORD_TYPE)
+ && (TYPE_IS_PADDING_P
+ (TREE_TYPE (TREE_OPERAND (gnu_name, 0))))))
gnu_name = gnu_copy = TREE_OPERAND (gnu_name, 0);
/* Otherwise convert to the nominal type of the object if it's
@@ -2528,7 +2536,7 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
else if (TREE_CODE (gnu_name_type) == RECORD_TYPE
&& (TYPE_JUSTIFIED_MODULAR_P (gnu_name_type)
|| smaller_packable_type_p (TREE_TYPE (gnu_name),
- gnu_name_type)))
+ gnu_name_type)))
gnu_name = convert (gnu_name_type, gnu_name);
/* Make a SAVE_EXPR to both properly account for potential side
@@ -6316,7 +6324,7 @@ build_binary_op_trapv (enum tree_code code, tree gnu_type, tree left,
int needed_precision = precision * 2;
if (code == MULT_EXPR && precision == 64)
- {
+ {
tree int_64 = gnat_type_for_size (64, 0);
return convert (gnu_type, build_call_2_expr (mulv64_decl,
@@ -6325,7 +6333,7 @@ build_binary_op_trapv (enum tree_code code, tree gnu_type, tree left,
}
else if (needed_precision <= BITS_PER_WORD
- || (code == MULT_EXPR
+ || (code == MULT_EXPR
&& needed_precision <= LONG_LONG_TYPE_SIZE))
{
tree wide_type = gnat_type_for_size (needed_precision, 0);
diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb
index a59fc30d1ca..3d495ce3c8b 100644
--- a/gcc/ada/gnat1drv.adb
+++ b/gcc/ada/gnat1drv.adb
@@ -339,6 +339,12 @@ begin
List_Representation_Info_Mechanisms := True;
end if;
+ -- Force Target_Strict_Alignment true if debug flag -gnatd.a is set
+
+ if Debug_Flag_Dot_A then
+ Ttypes.Target_Strict_Alignment := True;
+ end if;
+
-- Disable static allocation of dispatch tables if -gnatd.t or if layout
-- is enabled. The front end's layout phase currently treats types that
-- have discriminant-dependent arrays as not being static even when a
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index adb319341f4..322e6fe71ce 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -1041,7 +1041,15 @@ value, and the loop above will be optimized away.
The use of @code{Assume_No_Invalid_Values (On)} is appropriate if
you know your code is free of uninitialized variables and other
possible sources of invalid representations, and may result in
-more efficient code.
+more efficient code. A program that accesses an invalid representation
+with this pragma in effect is erroneous, so no guarantees can be made
+about its behavior.
+
+It is peculiar though permissible to use this pragma in conjunction
+with validity checking (-gnatVa). In such cases, accessing invalid
+values will generally give an exception, though formally the program
+is erroneous so there are no guarantees that this will always be the
+case, and it is recommended that these two options not be used together.
@node Pragma Ast_Entry
@unnumberedsec Pragma Ast_Entry
@@ -5189,9 +5197,9 @@ also be used as a configuration pragma.
The fourth form, with an On|Off parameter and a string, is used to
control individual messages, based on their text. The string argument
is a pattern that is used to match against the text of individual
-warning messages (not including the initial "warnings: " tag).
+warning messages (not including the initial "warning: " tag).
-The pattern may contain asterisks which match zero or more characters in
+The pattern may contain asterisks, which match zero or more characters in
the message. For example, you can use
@code{pragma Warnings (Off, "*bits of*unused")} to suppress the warning
message @code{warning: 960 bits of "a" unused}. No other regular
@@ -8602,6 +8610,12 @@ This restriction does not forbid dependences on the package
as long as no actual stream objects are created and no
stream attributes are used.
+Note that the use of restriction allows optimization of tagged types,
+since they do not need to worry about dispatching stream operations.
+To take maximum advantage of this space-saving optimization, any
+unit declaring a tagged type should be compiled with the restriction,
+though this is not required.
+
@item No_Task_Attributes_Package
@findex No_Task_Attributes_Package
This restriction ensures at compile time that there are no implicit or
@@ -13083,9 +13097,19 @@ string, the filename must be a standard 8bits string.
@end itemize
In the absence of a @samp{encoding=@var{xxx}} form parameter, the
-value UTF-8 is used. This encoding form parameter is only supported on
-the Windows platform. On the other Operating Systems the runtime is
-supporting UTF-8 natively.
+encoding is controlled by the @samp{GNAT_CODE_PAGE} environment
+variable. And if not set @samp{utf8} is assumed.
+
+@table @samp
+@item CP_ACP
+The current system Windows ANSI code page.
+@item CP_UTF8
+UTF-8 encoding
+@end table
+
+This encoding form parameter is only supported on the Windows
+platform. On the other Operating Systems the run-time is supporting
+UTF-8 natively.
@node Open Modes
@section Open Modes
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index f48a55fdf9d..70022f30c6e 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -187,6 +187,7 @@ AdaCore@*
* Stack Related Facilities::
* Verifying Properties Using gnatcheck::
* Creating Sample Bodies Using gnatstub::
+* Generating Ada Bindings for C and C++ headers::
* Other Utility Programs::
* Running and Debugging Ada Programs::
@ifclear vms
@@ -846,6 +847,10 @@ a utility that checks Ada code against a set of rules.
a utility that generates empty but compilable bodies for library units.
@item
+@ref{Generating Ada Bindings for C and C++ headers}, describes how to
+generate automatically Ada bindings from C and C++ headers.
+
+@item
@ref{Other Utility Programs}, discusses several other GNAT utilities,
including @code{gnathtml}.
@@ -10702,6 +10707,11 @@ system, you can set up a procedure where you use @command{gnatchop} each
time you compile, regarding the source files that it writes as temporary
files that you throw away.
+Note that if your file containing multiple units starts with a byte order
+mark (BOM) specifying UTF-8 encoding, then the files generated by gnatchop
+will each start with a copy of this BOM, meaning that they can be compiled
+automatically in UTF-8 mode without needing to specify an explicit encoding.
+
@node Operating gnatchop in Compilation Mode
@section Operating gnatchop in Compilation Mode
@@ -19703,7 +19713,8 @@ Debug Pool info:
The @code{gnatmem} utility monitors dynamic allocation and
deallocation activity in a program, and displays information about
incorrect deallocations and possible sources of memory leaks.
-It provides three type of information:
+It is designed to work in association with a static runtime library
+only and in this context provides three types of information:
@itemize @bullet
@item
General information concerning memory management, such as the total
@@ -22241,6 +22252,148 @@ Verbose mode: generate version information.
@end table
+@c *********************************
+@node Generating Ada Bindings for C and C++ headers
+@chapter Generating Ada Bindings for C and C++ headers
+@findex binding
+
+@noindent
+GNAT now comes with a new experimental binding generator for C and C++
+headers which is intended to do 95% of the tedious work of generating
+Ada specs from C or C++ header files. Note that this still is a work in
+progress, not designed to generate 100% correct Ada specs.
+
+The code generated is using the Ada 2005 syntax, which makes it
+easier to interface with other languages than previous versions of Ada.
+
+@menu
+* Running the binding generator::
+* Generating bindings for C++ headers::
+* Switches::
+@end menu
+
+@node Running the binding generator
+@section Running the binding generator
+
+@noindent
+The binding generator is part of the @command{gcc} compiler and can be
+invoked via the @option{-fdump-ada-spec} switch, which will generate Ada
+spec files for the header files specified on the command line, and all
+header files needed by these files transitivitely. For example:
+
+@smallexample
+$ g++ -c -fdump-ada-spec -C /usr/include/time.h
+$ gcc -c -gnat05 *.ads
+@end smallexample
+
+will generate, under GNU/Linux, the following files: @file{time_h.ads},
+@file{bits_time_h.ads}, @file{stddef_h.ads}, @file{bits_types_h.ads} which
+correspond to the files @file{/usr/include/time.h},
+@file{/usr/include/bits/time.h}, etc@dots{}, and will then compile in Ada 2005
+mode these Ada specs.
+
+The @code{-C} switch tells @command{gcc} to extract comments from headers,
+and will attempt to generate corresponding Ada comments.
+
+If you want to generate a single Ada file and not the transitive closure, you
+can use instead the @option{-fdump-ada-spec-slim} switch.
+
+Note that we recommend when possible to use the @command{g++} driver to
+generate bindings, even for most C headers, since this will in general
+generate better Ada specs. For generating bindings for C++ headers, it is
+mandatory to use the @command{g++} command, or @command{gcc -x c++} which
+is equivalent in this case. If @command{g++} cannot work on your C headers
+because of incompatibilities between C and C++, then you can fallback to
+@command{gcc} instead.
+
+For an example of better bindings generated from the C++ front-end,
+the name of the parameters (when available) are actually ignored by the C
+front-end. Consider the following C header:
+
+@smallexample
+extern void foo (int variable);
+@end smallexample
+
+with the C front-end, @code{variable} is ignored, and the above is handled as:
+
+@smallexample
+extern void foo (int);
+@end smallexample
+
+generating a generic:
+
+@smallexample
+procedure foo (param1 : int);
+@end smallexample
+
+with the C++ front-end, the name is available, and we generate:
+
+@smallexample
+procedure foo (variable : int);
+@end smallexample
+
+In some cases, the generated bindings will be more complete or more meaningful
+when defining some macros, which you can do via the @option{-D} switch. This
+is for example the case with @file{Xlib.h} under GNU/Linux:
+
+@smallexample
+g++ -c -fdump-ada-spec -DXLIB_ILLEGAL_ACCESS -C /usr/include/X11/Xlib.h
+@end smallexample
+
+The above will generate more complete bindings than a straight call without
+the @option{-DXLIB_ILLEGAL_ACCESS} switch.
+
+In other cases, it is not possible to parse a header file in a stand alone
+manner, because other include files need to be included first. In this
+case, the solution is to create a small header file including the needed
+@code{#include} and possible @code{#define} directives. For example, to
+generate Ada bindings for @file{readline/readline.h}, you need to first
+include @file{stdio.h}, so you can create a file with the following two
+lines in e.g. @file{readline1.h}:
+
+@smallexample
+#include <stdio.h>
+#include <readline/readline.h>
+@end smallexample
+
+and then generate Ada bindings from this file:
+
+@smallexample
+$ g++ -c -fdump-ada-spec readline1.h
+@end smallexample
+
+@node Generating bindings for C++ headers
+@section Generating bindings for C++ headers
+
+@noindent
+Generating bindings for C++ headers is done using the same options, always
+with the @command{g++} compiler.
+
+In this mode, C++ classes will be mapped to Ada tagged types, constructors
+will be mapped using the @code{CPP_Constructor} pragma, and when possible,
+multiple inheritance of abstract classes will be mapped to Ada interfaces
+(@xref{Interfacing to C++,,,gnat_rm, GNAT Reference Manual}, for additional
+information on interfacing to C++).
+
+@node Switches
+@section Switches
+
+@table @option
+@item -fdump-ada-spec
+@cindex @option{-fdump-ada-spec} (@command{gcc})
+Generate Ada spec files for the given header files transitively (including
+all header files that these headers depend upon).
+
+@item -fdump-ada-spec-slim
+@cindex @option{-fdump-ada-spec-slim} (@command{gcc})
+Generate Ada spec files for the header files specified on the command line
+only.
+
+@item -C
+@cindex @option{-C} (@command{gcc})
+Extract comments from headers and generate Ada comments in the Ada spec files.
+@end table
+
@node Other Utility Programs
@chapter Other Utility Programs
diff --git a/gcc/ada/gnatchop.adb b/gcc/ada/gnatchop.adb
index 83ccf994f28..ec32c073d56 100644
--- a/gcc/ada/gnatchop.adb
+++ b/gcc/ada/gnatchop.adb
@@ -30,13 +30,14 @@ with Ada.Streams.Stream_IO; use Ada.Streams;
with Ada.Text_IO; use Ada.Text_IO;
with System.CRTL; use System; use System.CRTL;
+with GNAT.Byte_Order_Mark; use GNAT.Byte_Order_Mark;
with GNAT.Command_Line; use GNAT.Command_Line;
with GNAT.OS_Lib; use GNAT.OS_Lib;
with GNAT.Heap_Sort_G;
with GNAT.Table;
with Hostparm;
-with Switch; use Switch;
+with Switch; use Switch;
with Types;
procedure Gnatchop is
@@ -67,6 +68,9 @@ procedure Gnatchop is
-- but properly treated if present. Not generated in output files except
-- as a result of copying input file.
+ BOM_Length : Natural := 0;
+ -- Reset to non-zero value if BOM detected at start of file
+
--------------------
-- File arguments --
--------------------
@@ -303,7 +307,7 @@ procedure Gnatchop is
function Get_Config_Pragmas
(Input : File_Num;
- U : Unit_Num) return String_Access;
+ U : Unit_Num) return String_Access;
-- Call to read configuration pragmas from given unit entry, and
-- return a buffer containing the pragmas to be appended to
-- following units. Input is the file number for the chop file and
@@ -323,11 +327,15 @@ procedure Gnatchop is
-- of line sequence to be written at the end of the pragma.
procedure Write_Unit
- (Source : not null access String;
- Num : Unit_Num;
- TS_Time : OS_Time;
- Success : out Boolean);
- -- Write one compilation unit of the source to file
+ (Source : not null access String;
+ Num : Unit_Num;
+ TS_Time : OS_Time;
+ Write_BOM : Boolean;
+ Success : out Boolean);
+ -- Write one compilation unit of the source to file. Source is the pointer
+ -- to the input string, Num is the unit number, TS_Time is the timestamp,
+ -- Write_BOM is set True to write a UTF-8 BOM at the start of the file.
+ -- Success is set True unless the write attempt fails.
---------
-- dup --
@@ -419,8 +427,7 @@ procedure Gnatchop is
function Get_Config_Pragmas
(Input : File_Num;
- U : Unit_Num)
- return String_Access
+ U : Unit_Num) return String_Access
is
Info : Unit_Info renames Unit.Table (U);
FD : File_Descriptor;
@@ -464,8 +471,7 @@ procedure Gnatchop is
function Get_EOL
(Source : not null access String;
- Start : Positive)
- return EOL_String
+ Start : Positive) return EOL_String
is
Ptr : Positive := Start;
First : Positive;
@@ -1428,6 +1434,10 @@ procedure Gnatchop is
Success : Boolean;
TS_Time : OS_Time;
+ BOM_Present : Boolean;
+ BOM : BOM_Kind;
+ -- Record presence of UTF8 BOM in input
+
begin
FD := Open_Read (Name'Address, Binary);
TS_Time := File_Time_Stamp (FD);
@@ -1449,11 +1459,21 @@ procedure Gnatchop is
Put_Line ("splitting " & File.Table (Input).Name.all & " into:");
end if;
+ -- Test for presence of BOM
+
+ Read_BOM (Buffer.all, BOM_Length, BOM, False);
+ BOM_Present := BOM /= Unknown;
+
-- Only chop those units that come from this file
- for Num in 1 .. Unit.Last loop
- if Unit.Table (Num).Chop_File = Input then
- Write_Unit (Buffer, Num, TS_Time, Success);
+ for Unit_Number in 1 .. Unit.Last loop
+ if Unit.Table (Unit_Number).Chop_File = Input then
+ Write_Unit
+ (Source => Buffer,
+ Num => Unit_Number,
+ TS_Time => TS_Time,
+ Write_BOM => BOM_Present and then Unit_Number /= 1,
+ Success => Success);
exit when not Success;
end if;
end loop;
@@ -1615,10 +1635,11 @@ procedure Gnatchop is
----------------
procedure Write_Unit
- (Source : not null access String;
- Num : Unit_Num;
- TS_Time : OS_Time;
- Success : out Boolean)
+ (Source : not null access String;
+ Num : Unit_Num;
+ TS_Time : OS_Time;
+ Write_BOM : Boolean;
+ Success : out Boolean)
is
procedure OS_Filename
@@ -1643,12 +1664,10 @@ procedure Gnatchop is
W_Name : aliased constant Wide_String := To_Wide_String (Name);
EOL : constant EOL_String :=
Get_EOL (Source, Source'First + Info.Offset);
-
OS_Name : aliased String (1 .. Name'Length * 2);
O_Length : aliased Natural := OS_Name'Length;
Encoding : aliased String (1 .. 64);
E_Length : aliased Natural := Encoding'Length;
-
Length : File_Offset;
begin
@@ -1699,6 +1718,14 @@ procedure Gnatchop is
Length := Info.Length;
end if;
+ -- Write BOM if required
+
+ if Write_BOM then
+ String'Write
+ (Stream_IO.Stream (File),
+ Source.all (Source'First .. Source'First + BOM_Length - 1));
+ end if;
+
-- Prepend configuration pragmas if necessary
if Success and then Info.Bufferg /= null then
diff --git a/gcc/ada/gprep.adb b/gcc/ada/gprep.adb
index c4cf14ba93c..ec56bcc171f 100644
--- a/gcc/ada/gprep.adb
+++ b/gcc/ada/gprep.adb
@@ -167,10 +167,11 @@ package body GPrep is
Namet.Initialize;
Snames.Initialize;
Stringt.Initialize;
+ Prep.Initialize;
-- Initialize the preprocessor
- Prep.Initialize
+ Prep.Setup_Hooks
(Error_Msg => Errutil.Error_Msg'Access,
Scan => Scanner.Scan'Access,
Set_Ignore_Errors => Errutil.Set_Ignore_Errors'Access,
diff --git a/gcc/ada/i-cstrin.ads b/gcc/ada/i-cstrin.ads
index 1d956a6059a..7bfee8f2c6d 100644
--- a/gcc/ada/i-cstrin.ads
+++ b/gcc/ada/i-cstrin.ads
@@ -38,14 +38,10 @@ package Interfaces.C.Strings is
type char_array_access is access all char_array;
- pragma Warnings (Off);
pragma No_Strict_Aliasing (char_array_access);
- pragma Warnings (On);
-- Since this type is used for external interfacing, with the pointer
-- coming from who knows where, it seems a good idea to turn off any
- -- strict aliasing assumptions for this type. We turn off warnings for
- -- this pragma to deal with being compiled with an earlier GNAT version
- -- that does not recognize this pragma.
+ -- strict aliasing assumptions for this type.
type chars_ptr is private;
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index 8476daca115..59aabf2466c 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -53,7 +53,7 @@
#include "tsystem.h"
#include <sys/stat.h>
-/* We don't have libiberty, so us malloc. */
+/* We don't have libiberty, so use malloc. */
#define xmalloc(S) malloc (S)
#else
#include "config.h"
@@ -1964,7 +1964,6 @@ __gnat_init_float (void)
checking is not used. */
void (*__gnat_set_stack_limit_hook)(void) = (void (*)(void))0;
-
/******************/
/* NetBSD Section */
/******************/
@@ -2098,9 +2097,43 @@ __gnat_install_handler(void)
#elif defined(__APPLE__)
#include <signal.h>
+#include <mach/mach_vm.h>
+#include <mach/vm_statistics.h>
+
+/* This must be in keeping with System.OS_Interface.Alternate_Stack_Size. */
+char __gnat_alternate_stack[64 * 1024]; /* 2 * MINSIGSTKSZ */
static void __gnat_error_handler (int sig, siginfo_t * si, void * uc);
+/* Defined in xnu unix_signal.c */
+#define UC_RESET_ALT_STACK 0x80000000
+extern int sigreturn (void *uc, int flavour);
+
+/* Return true if ADDR is within a stack guard area. */
+static int
+__gnat_is_stack_guard (mach_vm_address_t addr)
+{
+ kern_return_t kret;
+ vm_region_submap_info_data_64_t info;
+ mach_vm_address_t start;
+ mach_vm_size_t size;
+ natural_t depth;
+ mach_msg_type_number_t count;
+
+ count = VM_REGION_SUBMAP_INFO_COUNT_64;
+ start = addr;
+ size = -1;
+ depth = 9999;
+ kret = mach_vm_region_recurse (mach_task_self (), &start, &size, &depth,
+ (vm_region_recurse_info_t) &info, &count);
+ if (kret == KERN_SUCCESS
+ && addr >= start && addr < (start + size)
+ && info.protection == VM_PROT_NONE
+ && info.user_tag == VM_MEMORY_STACK)
+ return 1;
+ return 0;
+}
+
static void
__gnat_error_handler (int sig, siginfo_t * si, void * uc)
{
@@ -2110,14 +2143,20 @@ __gnat_error_handler (int sig, siginfo_t * si, void * uc)
switch (sig)
{
case SIGSEGV:
- /* FIXME: we need to detect the case of a *real* SIGSEGV. */
- exception = &storage_error;
- msg = "stack overflow or erroneous memory access";
- break;
-
case SIGBUS:
- exception = &constraint_error;
- msg = "SIGBUS";
+ if (__gnat_is_stack_guard ((unsigned long)si->si_addr))
+ {
+ exception = &storage_error;
+ msg = "stack overflow";
+ }
+ else
+ {
+ exception = &constraint_error;
+ msg = "erroneous memory access";
+ }
+ /* Reset the use of alt stack, so that the alt stack will be used
+ for the next signal delivery. */
+ sigreturn (NULL, UC_RESET_ALT_STACK);
break;
case SIGFPE:
@@ -2140,7 +2179,16 @@ __gnat_install_handler (void)
/* Set up signal handler to map synchronous signals to appropriate
exceptions. Make sure that the handler isn't interrupted by another
- signal that might cause a scheduling event! */
+ signal that might cause a scheduling event! Also setup an alternate
+ stack region for the handler execution so that stack overflows can be
+ handled properly, avoiding a SEGV generation from stack usage by the
+ handler itself (and it is required by Darwin). */
+
+ stack_t stack;
+ stack.ss_sp = __gnat_alternate_stack;
+ stack.ss_size = sizeof (__gnat_alternate_stack);
+ stack.ss_flags = 0;
+ sigaltstack (&stack, NULL);
act.sa_flags = SA_NODEFER | SA_RESTART | SA_SIGINFO;
act.sa_sigaction = __gnat_error_handler;
@@ -2153,6 +2201,8 @@ __gnat_install_handler (void)
sigaction (SIGFPE, &act, NULL);
if (__gnat_get_interrupt_state (SIGILL) != 's')
sigaction (SIGILL, &act, NULL);
+
+ act.sa_flags |= SA_ONSTACK;
if (__gnat_get_interrupt_state (SIGSEGV) != 's')
sigaction (SIGSEGV, &act, NULL);
if (__gnat_get_interrupt_state (SIGBUS) != 's')
@@ -2194,7 +2244,7 @@ __gnat_install_handler (void)
void
__gnat_init_float (void)
{
-#if defined (__i386__) || defined (i386)
+#if defined (__i386__) || defined (i386) || defined (__x86_64)
/* This is used to properly initialize the FPU on an x86 for each
process thread. */
diff --git a/gcc/ada/initialize.c b/gcc/ada/initialize.c
index dbaf80f6ee6..f5acbe6593a 100644
--- a/gcc/ada/initialize.c
+++ b/gcc/ada/initialize.c
@@ -43,6 +43,9 @@
#ifdef IN_RTS
#include "tconfig.h"
#include "tsystem.h"
+/* We don't have libiberty, so use malloc. */
+#define xmalloc(S) malloc (S)
+#define xrealloc(V,S) realloc (V,S)
#else
#include "config.h"
#include "system.h"
@@ -55,17 +58,44 @@
/******************************************/
#if defined (__MINGW32__)
+#include "mingw32.h"
#include <windows.h>
extern void __gnat_init_float (void);
extern void __gnat_install_SEH_handler (void *);
+extern int gnat_argc;
+extern char **gnat_argv;
+
#ifndef RTX
/* Do not define for RTX since it is only used for creating child processes
which is not supported in RTX. */
extern void __gnat_plist_init (void);
#endif
+#ifdef GNAT_UNICODE_SUPPORT
+
+#define EXPAND_ARGV_RATE 128
+
+static void
+append_arg (int *index, LPWSTR value, char ***argv, int *last)
+{
+ int size;
+
+ if (*last <= *index)
+ {
+ *last += EXPAND_ARGV_RATE;
+ *argv = (char **) xrealloc (*argv, (*last) * sizeof (char *));
+ }
+
+ size = WS2SC (NULL, value, 0);
+ (*argv)[*index] = (char *) xmalloc (size + 1);
+ WS2SC ((*argv)[*index], value, size);
+
+ (*index)++;
+}
+#endif
+
void
__gnat_initialize (void *eh)
{
@@ -75,6 +105,85 @@ __gnat_initialize (void *eh)
given that we have set Max_Digits etc with this in mind */
__gnat_init_float ();
+#ifdef GNAT_UNICODE_SUPPORT
+ /* Set current code page for filenames handling. */
+ {
+ char *codepage = getenv ("GNAT_CODE_PAGE");
+
+ /* Default code page is UTF-8. */
+ CurrentCodePage = CP_UTF8;
+
+ if (codepage != NULL)
+ if (strcmp (codepage, "CP_ACP") == 0)
+ CurrentCodePage = CP_ACP;
+ else if (strcmp (codepage, "CP_UTF8") == 0)
+ CurrentCodePage = CP_UTF8;
+ }
+
+ /* Adjust gnat_argv to support Unicode characters. */
+ {
+ LPWSTR *wargv;
+ int wargc;
+ int k;
+ int last;
+ int argc_expanded = 0;
+ TCHAR result [MAX_PATH];
+
+ wargv = CommandLineToArgvW (GetCommandLineW(), &wargc);
+
+ if (wargv != NULL)
+ {
+ /* Set gnat_argv with arguments encoded in UTF-8. */
+ last = wargc + 1;
+ gnat_argv = (char **) xmalloc ((last) * sizeof (char *));
+
+ /* argv[0] is the executable full path-name. */
+
+ SearchPath (NULL, wargv[0], _T(".exe"), MAX_PATH, result, NULL);
+ append_arg (&argc_expanded, result, &gnat_argv, &last);
+
+ for (k=1; k<wargc; k++)
+ {
+ /* Check for wildcard expansion. */
+ if (_tcsstr (wargv[k], _T("?")) != 0 ||
+ _tcsstr (wargv[k], _T("*")) != 0)
+ {
+ /* Wilcards are present, append all corresponding matches. */
+ WIN32_FIND_DATA FileData;
+ HANDLE hDir = FindFirstFile (wargv[k], &FileData);
+
+ if (hDir == INVALID_HANDLE_VALUE)
+ {
+ /* No match, append arg as-is. */
+ append_arg (&argc_expanded, wargv[k], &gnat_argv, &last);
+ }
+ else
+ {
+ /* Append first match and all remaining ones. */
+
+ do {
+ append_arg (&argc_expanded,
+ FileData.cFileName, &gnat_argv, &last);
+ } while (FindNextFile (hDir, &FileData));
+
+ FindClose (hDir);
+ }
+ }
+ else
+ {
+ /* No wildcard. Store parameter as-is. */
+ append_arg (&argc_expanded, wargv[k], &gnat_argv, &last);
+ }
+ }
+
+ LocalFree (wargv);
+ gnat_argc = argc_expanded;
+ gnat_argv = (char **) xrealloc
+ (gnat_argv, argc_expanded * sizeof (char *));
+ }
+ }
+#endif
+
/* Note that we do not activate this for the compiler itself to avoid a
bootstrap path problem. Older version of gnatbind will generate a call
to __gnat_initialize() without argument. Therefore we cannot use eh in
diff --git a/gcc/ada/lib-load.adb b/gcc/ada/lib-load.adb
index 1ceb389d553..508b2e871ad 100644
--- a/gcc/ada/lib-load.adb
+++ b/gcc/ada/lib-load.adb
@@ -169,14 +169,14 @@ package body Lib.Load is
Chars => Chars (Selector_Name (Name (With_Node))));
Du_Name :=
Make_Defining_Program_Unit_Name (No_Location,
- Name => New_Copy_Tree (Prefix (Name (With_Node))),
+ Name => Copy_Separate_Tree (Prefix (Name (With_Node))),
Defining_Identifier => Cunit_Entity);
Set_Is_Child_Unit (Cunit_Entity);
End_Lab :=
Make_Designator (No_Location,
- Name => New_Copy_Tree (Prefix (Name (With_Node))),
+ Name => Copy_Separate_Tree (Prefix (Name (With_Node))),
Identifier => New_Occurrence_Of (Cunit_Entity, No_Location));
end if;
@@ -714,12 +714,12 @@ package body Lib.Load is
-- it may very likely be the case that there is also pragma
-- Restriction forbidding its usage. This is typically the
-- case when building a configurable run time, where the
- -- usage of certain run-time units is restricted by
- -- means of both the corresponding pragma Restriction (such
- -- as No_Calendar), and by not including the unit. Hence,
- -- we check whether this predefined unit is forbidden, so
- -- that the message about the restriction violation is
- -- generated, if needed.
+ -- usage of certain run-time units is restricted by means
+ -- of both the corresponding pragma Restriction (such as
+ -- No_Calendar), and by not including the unit. Hence, we
+ -- check whether this predefined unit is forbidden, so that
+ -- the message about the restriction violation is generated,
+ -- if needed.
Check_Restricted_Unit (Load_Name, Error_Node);
diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb
index 3e36d0c84ed..fac48642569 100644
--- a/gcc/ada/lib-xref.adb
+++ b/gcc/ada/lib-xref.adb
@@ -564,6 +564,15 @@ package body Lib.Xref is
Set_Referenced_As_LHS (E, False);
end if;
+ -- Don't count a recursive reference within a subprogram as a
+ -- reference (that allows detection of a recursive subprogram
+ -- whose only references are recursive calls as unreferenced).
+
+ elsif Is_Subprogram (E)
+ and then E = Nearest_Dynamic_Scope (Current_Scope)
+ then
+ null;
+
-- Any other occurrence counts as referencing the entity
elsif OK_To_Set_Referenced then
diff --git a/gcc/ada/link.c b/gcc/ada/link.c
index 5d8ab86996a..5dd2c80d901 100644
--- a/gcc/ada/link.c
+++ b/gcc/ada/link.c
@@ -152,6 +152,15 @@ unsigned char __gnat_objlist_file_supported = 1;
unsigned char __gnat_using_gnu_linker = 1;
const char *__gnat_object_library_extension = ".a";
+#elif defined (__APPLE__)
+const char *__gnat_object_file_option = "-Wl,-filelist,";
+const char *__gnat_run_path_option = "-Wl,-rpath,";
+char __gnat_shared_libgnat_default = STATIC;
+int __gnat_link_max = 262144;
+unsigned char __gnat_objlist_file_supported = 1;
+unsigned char __gnat_using_gnu_linker = 0;
+const char *__gnat_object_library_extension = ".a";
+
#elif defined (linux) || defined(__GLIBC__)
const char *__gnat_object_file_option = "";
const char *__gnat_run_path_option = "-Wl,-rpath,";
diff --git a/gcc/ada/mingw32.h b/gcc/ada/mingw32.h
index 46e271dcbca..2c52920da69 100644
--- a/gcc/ada/mingw32.h
+++ b/gcc/ada/mingw32.h
@@ -62,6 +62,7 @@
#endif
#include <tchar.h>
+#include <windows.h>
/* After including this file it is possible to use the character t as prefix
to routines. If GNAT_UNICODE_SUPPORT is defined then the unicode enabled
@@ -71,15 +72,29 @@
the proper translations using the UTF-8 encoding. */
#ifdef GNAT_UNICODE_SUPPORT
+
+extern UINT CurrentCodePage;
+
+/* Macros to convert to/from the code page speficied in CurrentCodePage. */
+#define S2WSC(wstr,str,len) \
+ MultiByteToWideChar (CurrentCodePage,0,str,-1,wstr,len)
+#define WS2SC(str,wstr,len) \
+ WideCharToMultiByte (CurrentCodePage,0,wstr,-1,str,len,NULL,NULL)
+
+/* Macros to convert to/from UTF-8 code page. */
#define S2WSU(wstr,str,len) \
MultiByteToWideChar (CP_UTF8,0,str,-1,wstr,len)
#define WS2SU(str,wstr,len) \
WideCharToMultiByte (CP_UTF8,0,wstr,-1,str,len,NULL,NULL)
+
+/* Macros to convert to/from Windows default code page. */
#define S2WS(wstr,str,len) \
MultiByteToWideChar (CP_ACP,0,str,-1,wstr,len)
#define WS2S(str,wstr,len) \
WideCharToMultiByte (CP_ACP,0,wstr,-1,str,len,NULL,NULL)
#else
+#define S2WSC(wstr,str,len) strncpy(wstr,str,len)
+#define WS2SC(str,wstr,len) strncpy(str,wstr,len)
#define S2WSU(wstr,str,len) strncpy(wstr,str,len)
#define WS2SU(str,wstr,len) strncpy(str,wstr,len)
#define S2WS(wstr,str,len) strncpy(wstr,str,len)
diff --git a/gcc/ada/mkdir.c b/gcc/ada/mkdir.c
index cd458c5266d..debd8067779 100644
--- a/gcc/ada/mkdir.c
+++ b/gcc/ada/mkdir.c
@@ -65,7 +65,7 @@ __gnat_mkdir (char *dir_name)
#elif defined (__MINGW32__)
TCHAR wname [GNAT_MAX_PATH_LEN + 2];
- S2WSU (wname, dir_name, GNAT_MAX_PATH_LEN + 2);
+ S2WSC (wname, dir_name, GNAT_MAX_PATH_LEN + 2);
return _tmkdir (wname);
#else
return mkdir (dir_name, S_IRWXU | S_IRWXG | S_IRWXO);
diff --git a/gcc/ada/namet-sp.adb b/gcc/ada/namet-sp.adb
index e2deda941fa..30f85f52c02 100755
--- a/gcc/ada/namet-sp.adb
+++ b/gcc/ada/namet-sp.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2009, 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- --
@@ -186,9 +186,18 @@ package body Namet.Sp is
begin
Get_Name_String_UTF_32 (Found, FB, FBL);
Get_Name_String_UTF_32 (Expect, EB, EBL);
- return
- GNAT.UTF_32_Spelling_Checker.Is_Bad_Spelling_Of
- (FB (1 .. FBL), EB (1 .. EBL));
+
+ -- For an exact match, return False, otherwise check bad spelling. We
+ -- need this special test because the library routine returns True for
+ -- an exact match.
+
+ if FB (1 .. FBL) = EB (1 .. EBL) then
+ return False;
+ else
+ return
+ GNAT.UTF_32_Spelling_Checker.Is_Bad_Spelling_Of
+ (FB (1 .. FBL), EB (1 .. EBL));
+ end if;
end Is_Bad_Spelling_Of;
end Namet.Sp;
diff --git a/gcc/ada/namet-sp.ads b/gcc/ada/namet-sp.ads
index d1de142eacd..15d41a07b05 100755
--- a/gcc/ada/namet-sp.ads
+++ b/gcc/ada/namet-sp.ads
@@ -40,6 +40,7 @@ package Namet.Sp is
function Is_Bad_Spelling_Of (Found, Expect : Name_Id) return Boolean;
-- Compares two identifier names from the names table, and returns True if
-- Found is a plausible misspelling of Expect. This function properly deals
- -- with wide and wide wide character encodings in the input names.
+ -- with wide and wide wide character encodings in the input names. Note
+ -- that an exact match in the names results in False being returned.
end Namet.Sp;
diff --git a/gcc/ada/nlists.adb b/gcc/ada/nlists.adb
index 7a2b4b4a103..09bd85a8439 100644
--- a/gcc/ada/nlists.adb
+++ b/gcc/ada/nlists.adb
@@ -745,31 +745,6 @@ package body Nlists is
end if;
end New_Copy_List_Original;
- ------------------------
- -- New_Copy_List_Tree --
- ------------------------
-
- function New_Copy_List_Tree (List : List_Id) return List_Id is
- NL : List_Id;
- E : Node_Id;
-
- begin
- if List = No_List then
- return No_List;
-
- else
- NL := New_List;
- E := First (List);
-
- while Present (E) loop
- Append (New_Copy_Tree (E), NL);
- E := Next (E);
- end loop;
-
- return NL;
- end if;
- end New_Copy_List_Tree;
-
--------------
-- New_List --
--------------
diff --git a/gcc/ada/nlists.ads b/gcc/ada/nlists.ads
index 5a6b94f9d06..3753936df10 100644
--- a/gcc/ada/nlists.ads
+++ b/gcc/ada/nlists.ads
@@ -108,13 +108,6 @@ package Nlists is
function New_Copy_List_Original (List : List_Id) return List_Id;
-- Same as New_Copy_List but copies only nodes coming from source
- function New_Copy_List_Tree (List : List_Id) return List_Id;
- -- Similar to New_Copy_List, except that the copies are done using the
- -- Atree.New_Copy_Tree function, which means that a full recursive copy
- -- of the subtrees in the list is performed, setting proper parents. As
- -- for New_Copy_Tree, it is illegal to attempt to copy extended nodes
- -- (entities) either directly or indirectly using this function.
-
function First (List : List_Id) return Node_Id;
pragma Inline (First);
-- Obtains the first element of the given node list or, if the node list
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index 71bcb19871b..57ddd06ce28 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -415,6 +415,12 @@ package Opt is
-- to make a single long message, and then this message is split up into
-- multiple lines not exceeding the specified length. Set by -gnatj=nn.
+ Exception_Handler_Encountered : Boolean := False;
+ -- GNAT
+ -- This flag is set true if the parser encounters an exception handler.
+ -- It is used to set Warn_On_Exception_Propagation True if the restriction
+ -- No_Exception_Propagation is set.
+
Exception_Locations_Suppressed : Boolean := False;
-- GNAT
-- This flag is set True if a Suppress_Exception_Locations configuration
@@ -902,13 +908,20 @@ package Opt is
Optimization_Level : Int;
pragma Import (C, Optimization_Level, "optimize");
-- Constant reflecting the optimization level (0,1,2,3 for -O0,-O1,-O2,-O3)
+ -- See jmissing.c and aamissing.c for definitions for dotnet/jgnat and
+ -- GNAAMP back ends.
+
+ Optimize_Size : Int;
+ pragma Import (C, Optimize_Size, "optimize_size");
+ -- Constant reflecting setting of -Os (optimize for size). Set to nonzero
+ -- in -Os mode and set to zero otherwise. See jmissing.c and aamissing.c
+ -- for definitions of "optimize_size" for dotnet/jgnat and GNAAMP backends
Output_File_Name_Present : Boolean := False;
-- GNATBIND, GNAT, GNATMAKE, GPRMAKE
- -- Set to True when the output C file name is given with option -o
- -- for GNATBIND, when the object file name is given with option
- -- -gnatO for GNAT or when the executable is given with option -o
- -- for GNATMAKE or GPRMAKE.
+ -- Set to True when the output C file name is given with option -o for
+ -- GNATBIND, when the object file name is given with option -gnatO for GNAT
+ -- or when the executable is given with option -o for GNATMAKE or GPRMAKE.
Output_Linker_Option_List : Boolean := False;
-- GNATBIND
@@ -1309,7 +1322,15 @@ package Opt is
-- Set to True to generate warnings for non-local exception raises and also
-- handlers that can never handle a local raise. This warning is only ever
-- generated if pragma Restrictions (No_Exception_Propagation) is set. The
- -- default is not to generate the warnings even if the restriction is set.
+ -- default is not to generate the warnings except that if the source has
+ -- at least one exception handler, and this restriction is set, and the
+ -- warning was not explicitly turned off, then it is turned on by default.
+
+ No_Warn_On_Non_Local_Exception : Boolean := False;
+ -- GNAT
+ -- This is set to True if the above warning is explicitly suppressed. We
+ -- use this to avoid turning it on by default when No_Exception_Propagation
+ -- restriction is set and an exception handler is present.
Warn_On_Obsolescent_Feature : Boolean := False;
-- GNAT
diff --git a/gcc/ada/osint.adb b/gcc/ada/osint.adb
index 0363f5e27eb..c847f5e5724 100644
--- a/gcc/ada/osint.adb
+++ b/gcc/ada/osint.adb
@@ -300,7 +300,7 @@ package body Osint is
Status : Boolean;
pragma Warnings (Off, Status);
- -- For the call to Close
+ -- For the call to Close where status is ignored
begin
File_FD := Open_Read (Buffer'Address, Binary);
diff --git a/gcc/ada/output.adb b/gcc/ada/output.adb
index b33a74db091..5208daf22e4 100644
--- a/gcc/ada/output.adb
+++ b/gcc/ada/output.adb
@@ -40,6 +40,17 @@ package body Output is
-- Record argument to last call to Set_Special_Output. If this is
-- non-null, then we are in special output mode.
+ Indentation_Amount : constant Positive := 3;
+ -- Number of spaces to output for each indentation level
+
+ Indentation_Limit : constant Positive := 40;
+ -- Indentation beyond this number of spaces wraps around
+ pragma Assert (Indentation_Limit < Buffer_Max / 2);
+ -- Make sure this is substantially shorter than the line length
+
+ Cur_Indentation : Natural := 0;
+ -- Number of spaces to indent each line
+
-----------------------
-- Local_Subprograms --
-----------------------
@@ -70,36 +81,73 @@ package body Output is
------------------
procedure Flush_Buffer is
- Len : constant Natural := Next_Col - 1;
+ Write_Error : exception;
+ -- Raised if Write fails
- begin
- if Len /= 0 then
+ ------------------
+ -- Write_Buffer --
+ ------------------
+ procedure Write_Buffer (Buf : String);
+ -- Write out Buf, either using Special_Output_Proc, or the normal way
+ -- using Write. Raise Write_Error if Write fails (presumably due to disk
+ -- full). Write_Error is not used in the case of Special_Output_Proc.
+
+ procedure Write_Buffer (Buf : String) is
+ begin
-- If Special_Output_Proc has been set, then use it
if Special_Output_Proc /= null then
- Special_Output_Proc.all (Buffer (1 .. Len));
+ Special_Output_Proc.all (Buf);
-- If output is not set, then output to either standard output
-- or standard error.
- elsif Len /= Write (Current_FD, Buffer'Address, Len) then
+ elsif Write (Current_FD, Buf'Address, Buf'Length) /= Buf'Length then
+ raise Write_Error;
- -- If there are errors with standard error, just quit
+ end if;
+ end Write_Buffer;
- if Current_FD = Standerr then
- OS_Exit (2);
+ Len : constant Natural := Next_Col - 1;
- -- Otherwise, set the output to standard error before
- -- reporting a failure and quitting.
+ begin
+ if Len /= 0 then
+ begin
+ -- If there's no indentation, or if the line is too long with
+ -- indentation, just write the buffer.
+
+ if Cur_Indentation = 0
+ or else Cur_Indentation + Len > Buffer_Max
+ then
+ Write_Buffer (Buffer (1 .. Len));
+
+ -- Otherwise, construct a new buffer with preceding spaces, and
+ -- write that.
else
- Current_FD := Standerr;
- Next_Col := 1;
- Write_Line ("fatal error: disk full");
- OS_Exit (2);
+ declare
+ Indented_Buffer : constant String
+ := (1 .. Cur_Indentation => ' ') & Buffer (1 .. Len);
+ begin
+ Write_Buffer (Indented_Buffer);
+ end;
end if;
- end if;
+
+ exception
+ when Write_Error =>
+ -- If there are errors with standard error, just quit.
+ -- Otherwise, set the output to standard error before reporting
+ -- a failure and quitting.
+
+ if Current_FD /= Standerr then
+ Current_FD := Standerr;
+ Next_Col := 1;
+ Write_Line ("fatal error: disk full");
+ end if;
+
+ OS_Exit (2);
+ end;
-- Buffer is now empty
@@ -107,6 +155,27 @@ package body Output is
end if;
end Flush_Buffer;
+ ------------
+ -- Indent --
+ ------------
+
+ procedure Indent is
+ begin
+ Cur_Indentation :=
+ (Cur_Indentation + Indentation_Amount) mod Indentation_Limit;
+ -- The "mod" is to wrap around in case there's too much indentation.
+ end Indent;
+
+ -------------
+ -- Outdent --
+ -------------
+
+ procedure Outdent is
+ begin
+ Cur_Indentation :=
+ (Cur_Indentation - Indentation_Amount) mod Indentation_Limit;
+ end Outdent;
+
---------------------------
-- Restore_Output_Buffer --
---------------------------
@@ -114,6 +183,7 @@ package body Output is
procedure Restore_Output_Buffer (S : Saved_Output_Buffer) is
begin
Next_Col := S.Next_Col;
+ Cur_Indentation := S.Cur_Indentation;
Buffer (1 .. Next_Col - 1) := S.Buffer (1 .. Next_Col - 1);
end Restore_Output_Buffer;
@@ -126,7 +196,9 @@ package body Output is
begin
S.Buffer (1 .. Next_Col - 1) := Buffer (1 .. Next_Col - 1);
S.Next_Col := Next_Col;
+ S.Cur_Indentation := Cur_Indentation;
Next_Col := 1;
+ Cur_Indentation := 0;
return S;
end Save_Output_Buffer;
@@ -147,7 +219,6 @@ package body Output is
begin
if Special_Output_Proc = null then
Flush_Buffer;
- Next_Col := 1;
end if;
Current_FD := Standerr;
@@ -161,7 +232,6 @@ package body Output is
begin
if Special_Output_Proc = null then
Flush_Buffer;
- Next_Col := 1;
end if;
Current_FD := Standout;
diff --git a/gcc/ada/output.ads b/gcc/ada/output.ads
index 559112cc94f..2bb38fc8fa4 100644
--- a/gcc/ada/output.ads
+++ b/gcc/ada/output.ads
@@ -81,9 +81,17 @@ package Output is
-- has been cancelled. Output to standard output is the default mode
-- before any call to either of the Set procedures.
+ procedure Indent;
+ -- Increases the current indentation level. Whenever a line is written
+ -- (triggered by Eol), an appropriate amount of whitespace is added to the
+ -- beginning of the line, wrapping around if it gets to long.
+
+ procedure Outdent;
+ -- Decreases the current indentation level.
+
procedure Write_Char (C : Character);
- -- Write one character to the standard output file. Note that the
- -- character should not be LF or CR (use Write_Eol for end of line)
+ -- Write one character to the standard output file. If the character is LF,
+ -- this is equivalent to Write_Eol.
procedure Write_Erase_Char (C : Character);
-- If last character in buffer matches C, erase it, otherwise no effect
@@ -177,7 +185,7 @@ private
-- subprograms defined in this package, and cannot be directly modified or
-- accessed by a client.
- Buffer : String (1 .. Buffer_Max + 1);
+ Buffer : String (1 .. Buffer_Max + 1) := (others => '*');
for Buffer'Alignment use 4;
-- Buffer used to build output line. We do line buffering because it
-- is needed for the support of the debug-generated-code option (-gnatD).
@@ -194,6 +202,7 @@ private
type Saved_Output_Buffer is record
Buffer : String (1 .. Buffer_Max + 1);
Next_Col : Positive;
+ Cur_Indentation : Natural;
end record;
end Output;
diff --git a/gcc/ada/par-ch11.adb b/gcc/ada/par-ch11.adb
index 412456e1a7e..14129bc6230 100644
--- a/gcc/ada/par-ch11.adb
+++ b/gcc/ada/par-ch11.adb
@@ -92,6 +92,7 @@ package body Ch11 is
Choice_Param_Node : Node_Id;
begin
+ Exception_Handler_Encountered := True;
Handler_Node := New_Node (N_Exception_Handler, Token_Ptr);
Set_Local_Raise_Statements (Handler_Node, No_Elist);
diff --git a/gcc/ada/par-ch3.adb b/gcc/ada/par-ch3.adb
index a7e6fb65c28..b90e0840652 100644
--- a/gcc/ada/par-ch3.adb
+++ b/gcc/ada/par-ch3.adb
@@ -763,7 +763,16 @@ package body Ch3 is
Typedef_Node := P_Derived_Type_Def_Or_Private_Ext_Decl;
if Saved_Token = Tok_Synchronized then
- Set_Synchronized_Present (Typedef_Node);
+ if Nkind (Typedef_Node) =
+ N_Derived_Type_Definition
+ then
+ Error_Msg_N
+ ("SYNCHRONIZED not allowed for record extension",
+ Typedef_Node);
+ else
+ Set_Synchronized_Present (Typedef_Node);
+ end if;
+
else
Error_Msg_SC ("invalid kind of private extension");
end if;
diff --git a/gcc/ada/par-ch6.adb b/gcc/ada/par-ch6.adb
index 188893a4b28..d91b2d9f15d 100644
--- a/gcc/ada/par-ch6.adb
+++ b/gcc/ada/par-ch6.adb
@@ -215,14 +215,18 @@ package body Ch6 is
-- already been given, so no need to give another message here.
-- An overriding indicator is allowed for subprogram declarations,
- -- bodies, renamings, stubs, and instantiations.
+ -- bodies, renamings, stubs, and instantiations. The test against
+ -- Pf_Decl_Pbod is added to account for the case of subprograms
+ -- declared in a protected type, where only subprogram declarations
+ -- and bodies can occur.
- if Pf_Flags /= Pf_Decl_Gins_Pbod_Rnam_Stub then
+ if Pf_Flags /= Pf_Decl_Gins_Pbod_Rnam_Stub
+ and then
+ Pf_Flags /= Pf_Decl_Pbod
+ then
Error_Msg_SC ("overriding indicator not allowed here!");
- elsif Token /= Tok_Function
- and then Token /= Tok_Procedure
- then
+ elsif Token /= Tok_Function and then Token /= Tok_Procedure then
Error_Msg_SC ("FUNCTION or PROCEDURE expected!");
end if;
end if;
diff --git a/gcc/ada/par-ch9.adb b/gcc/ada/par-ch9.adb
index fcf2d3c69b4..d5c3549f23d 100644
--- a/gcc/ada/par-ch9.adb
+++ b/gcc/ada/par-ch9.adb
@@ -736,9 +736,16 @@ package body Ch9 is
if Token = Tok_Entry or else Bad_Spelling_Of (Tok_Entry) then
Append (P_Entry_Body, Item_List);
+ -- If the operation starts with procedure, function, or an overriding
+ -- indicator ("overriding" or "not overriding"), parse a subprogram.
+
elsif Token = Tok_Function or else Bad_Spelling_Of (Tok_Function)
or else
Token = Tok_Procedure or else Bad_Spelling_Of (Tok_Procedure)
+ or else
+ Token = Tok_Overriding or else Bad_Spelling_Of (Tok_Overriding)
+ or else
+ Token = Tok_Not or else Bad_Spelling_Of (Tok_Not)
then
Append (P_Subprogram (Pf_Decl_Pbod), Item_List);
diff --git a/gcc/ada/prep.adb b/gcc/ada/prep.adb
index 810669917f3..52328b236bb 100644
--- a/gcc/ada/prep.adb
+++ b/gcc/ada/prep.adb
@@ -119,9 +119,6 @@ package body Prep is
String_False : String_Id;
-- "false", as a string_id
- Name_Defined : Name_Id;
- -- defined, as a name_id
-
---------------
-- Behaviour --
---------------
@@ -691,13 +688,7 @@ package body Prep is
-- Initialize --
----------------
- procedure Initialize
- (Error_Msg : Error_Msg_Proc;
- Scan : Scan_Proc;
- Set_Ignore_Errors : Set_Ignore_Errors_Proc;
- Put_Char : Put_Char_Proc;
- New_EOL : New_EOL_Proc)
- is
+ procedure Initialize is
begin
if not Already_Initialized then
Start_String;
@@ -707,22 +698,12 @@ package body Prep is
Start_String;
Empty_String := End_String;
- Name_Len := 7;
- Name_Buffer (1 .. Name_Len) := "defined";
- Name_Defined := Name_Find;
-
Start_String;
Store_String_Chars ("False");
String_False := End_String;
Already_Initialized := True;
end if;
-
- Prep.Error_Msg := Error_Msg;
- Prep.Scan := Scan;
- Prep.Set_Ignore_Errors := Set_Ignore_Errors;
- Prep.Put_Char := Put_Char;
- Prep.New_EOL := New_EOL;
end Initialize;
------------------
@@ -1470,4 +1451,25 @@ package body Prep is
Source_Modified := No_Error_Found and Modified;
end Preprocess;
+ -----------------
+ -- Setup_Hooks --
+ -----------------
+
+ procedure Setup_Hooks
+ (Error_Msg : Error_Msg_Proc;
+ Scan : Scan_Proc;
+ Set_Ignore_Errors : Set_Ignore_Errors_Proc;
+ Put_Char : Put_Char_Proc;
+ New_EOL : New_EOL_Proc)
+ is
+ begin
+ pragma Assert (Already_Initialized);
+
+ Prep.Error_Msg := Error_Msg;
+ Prep.Scan := Scan;
+ Prep.Set_Ignore_Errors := Set_Ignore_Errors;
+ Prep.Put_Char := Put_Char;
+ Prep.New_EOL := New_EOL;
+ end Setup_Hooks;
+
end Prep;
diff --git a/gcc/ada/prep.ads b/gcc/ada/prep.ads
index 0f595e64dfb..801167ee5fb 100644
--- a/gcc/ada/prep.ads
+++ b/gcc/ada/prep.ads
@@ -95,12 +95,16 @@ package Prep is
type New_EOL_Proc is access procedure;
- procedure Initialize
+ procedure Initialize;
+ -- Initialize the preprocessor's global structures
+
+ procedure Setup_Hooks
(Error_Msg : Error_Msg_Proc;
Scan : Scan_Proc;
Set_Ignore_Errors : Set_Ignore_Errors_Proc;
Put_Char : Put_Char_Proc;
New_EOL : New_EOL_Proc);
+ -- Set the i/o hooks used by the preprocessor
procedure Parse_Def_File;
-- Parse the definition file. The definition file must have already been
diff --git a/gcc/ada/prepcomp.adb b/gcc/ada/prepcomp.adb
index 981da86eac2..18c2686e491 100644
--- a/gcc/ada/prepcomp.adb
+++ b/gcc/ada/prepcomp.adb
@@ -45,8 +45,11 @@ package body Prepcomp is
Source_Index_Of_Preproc_Data_File : Source_File_Index := No_Source_File;
- -- The following variable should be a constant, but this is not
- -- possible. Warnings are Off because it is never assigned a value.
+ -- The following variable should be a constant, but this is not possible
+ -- because its type GNAT.Dynamic_Tables.Instance has a component P of
+ -- unitialized private type GNAT.Dynamic_Tables.Table_Private and there
+ -- are no exported values for this private type. Warnings are Off because
+ -- it is never assigned a value.
pragma Warnings (Off);
No_Mapping : Prep.Symbol_Table.Instance;
@@ -122,8 +125,7 @@ package body Prepcomp is
-- Table to store the dependencies on preprocessing files
procedure Add_Command_Line_Symbols;
- -- Add the command line symbol definitions, if any, to the
- -- Prep.Mapping table.
+ -- Add the command line symbol definitions, if any, to Prep.Mapping table
procedure Skip_To_End_Of_Line;
-- Ignore errors and scan up to the next end of line or the end of file
@@ -663,7 +665,7 @@ package body Prepcomp is
-- Initialize the preprocessor and set the characteristics of the
-- scanner for a definition file.
- Prep.Initialize
+ Prep.Setup_Hooks
(Error_Msg => Errout.Error_Msg'Access,
Scan => Scn.Scanner.Scan'Access,
Set_Ignore_Errors => Errout.Set_Ignore_Errors'Access,
@@ -742,7 +744,7 @@ package body Prepcomp is
Check_Command_Line_Symbol_Definition
(Definition => Symbol_Definitions (Index).all,
- Data => Symbol_Data);
+ Data => Symbol_Data);
Found := False;
-- If there is already a definition for this symbol, replace the old
diff --git a/gcc/ada/prj-attr.adb b/gcc/ada/prj-attr.adb
index 7e30de68762..81a611f7800 100644
--- a/gcc/ada/prj-attr.adb
+++ b/gcc/ada/prj-attr.adb
@@ -116,6 +116,7 @@ package body Prj.Attr is
"Satoolchain_description#" &
"Saobject_generated#" &
"Saobjects_linked#" &
+ "SVtarget#" &
-- Configuration - Libraries
@@ -140,6 +141,7 @@ package body Prj.Attr is
"LVshared_library_minimum_switches#" &
"LVlibrary_version_switches#" &
"Saruntime_library_dir#" &
+ "Saruntime_source_dir#" &
-- package Naming
@@ -172,6 +174,7 @@ package body Prj.Attr is
"Larequired_switches#" &
"Lapic_option#" &
"Sapath_syntax#" &
+ "Saobject_file_suffix#" &
-- Configuration - Mapping files
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb
index 8a9a09b8e30..e9bc518de69 100644
--- a/gcc/ada/prj-nmsc.adb
+++ b/gcc/ada/prj-nmsc.adb
@@ -646,7 +646,8 @@ package body Prj.Nmsc is
Src_Data.Naming_Exception := Naming_Exception;
if Src_Data.Compiled and then Src_Data.Object_Exists then
- Src_Data.Object := Object_Name (File_Name);
+ Src_Data.Object :=
+ Object_Name (File_Name, Config.Object_File_Suffix);
Src_Data.Dep_Name :=
Dependency_Name (File_Name, Src_Data.Dependency);
Src_Data.Switches := Switches_Name (File_Name);
@@ -746,8 +747,8 @@ package body Prj.Nmsc is
if Data.Qualifier = Dry and then Data.Source_Dirs /= Nil_String then
Error_Msg
(Project, In_Tree,
- "an abstract project need to have no language, no sources or no " &
- "source directories",
+ "an abstract project needs to have no language, no sources " &
+ "or no source directories",
Data.Location);
end if;
@@ -1541,6 +1542,19 @@ package body Prj.Nmsc is
Element.Value.Location);
end;
+ when Name_Object_File_Suffix =>
+ if Get_Name_String (Element.Value.Value) = "" then
+ Error_Msg
+ (Project, In_Tree,
+ "object file suffix cannot be empty",
+ Element.Value.Location);
+
+ else
+ In_Tree.Languages_Data.Table
+ (Lang_Index).Config.Object_File_Suffix :=
+ Element.Value.Value;
+ end if;
+
when Name_Pic_Option =>
-- Attribute Compiler_Pic_Option (<language>)
@@ -1963,7 +1977,13 @@ package body Prj.Nmsc is
In_Tree.Variable_Elements.Table (Attribute_Id);
if not Attribute.Value.Default then
- if Attribute.Name = Name_Library_Builder then
+ if Attribute.Name = Name_Target then
+
+ -- Attribute Target: the target specified
+
+ Data.Config.Target := Attribute.Value.Value;
+
+ elsif Attribute.Name = Name_Library_Builder then
-- Attribute Library_Builder: the application to invoke
-- to build libraries.
@@ -2290,6 +2310,14 @@ package body Prj.Nmsc is
(Lang_Index).Config.Runtime_Library_Dir :=
Element.Value.Value;
+ when Name_Runtime_Source_Dir =>
+
+ -- Attribute Runtime_Library_Dir (<language>)
+
+ In_Tree.Languages_Data.Table
+ (Lang_Index).Config.Runtime_Source_Dir :=
+ Element.Value.Value;
+
when Name_Object_Generated =>
declare
pragma Unsuppress (All_Checks);
@@ -2615,7 +2643,7 @@ package body Prj.Nmsc is
(Src_Data.Other_Part).In_Interfaces := True;
In_Tree.Sources.Table
(Src_Data.Other_Part).Declared_In_Interfaces :=
- True;
+ True;
end if;
if Current_Verbosity = High then
@@ -2646,8 +2674,8 @@ package body Prj.Nmsc is
Error_Msg
(Project,
In_Tree,
- "{ cannot be an interface of project %% " &
- "as it is not one of its sources",
+ "{ cannot be an interface of project %% "
+ & "as it is not one of its sources",
Element.Location);
end if;
@@ -5347,7 +5375,7 @@ package body Prj.Nmsc is
then
Error_Msg
(Project, In_Tree,
- "a reference symbol file need to be defined",
+ "a reference symbol file needs to be defined",
Lib_Symbol_Policy.Location);
end if;
@@ -5790,6 +5818,10 @@ package body Prj.Nmsc is
Last_Source_Dir : String_List_Id := Nil_String;
+ Languages : constant Variable_Value :=
+ Prj.Util.Value_Of
+ (Name_Languages, Data.Decl.Attributes, In_Tree);
+
procedure Find_Source_Dirs
(From : File_Name_Type;
Location : Source_Ptr;
@@ -6209,154 +6241,25 @@ package body Prj.Nmsc is
Write_Line ("Starting to look for directories");
end if;
- -- We set the object directory to its default. It may be set to nil, if
- -- there is no sources in the project.
-
- Data.Object_Directory := Data.Directory;
+ -- Set the object directory to its default which may be nil, if there
+ -- is no sources in the project.
- -- Look for the source directories
-
- if Current_Verbosity = High then
- Write_Line ("Starting to look for source directories");
- end if;
-
- pragma Assert (Source_Dirs.Kind = List, "Source_Dirs is not a list");
-
- if (not Source_Files.Default) and then
- Source_Files.Values = Nil_String
+ if (((not Source_Files.Default)
+ and then Source_Files.Values = Nil_String)
+ or else
+ ((not Source_Dirs.Default) and then Source_Dirs.Values = Nil_String)
+ or else
+ ((not Languages.Default) and then Languages.Values = Nil_String))
+ and then Data.Extends = No_Project
then
- Data.Source_Dirs := Nil_String;
-
- if Data.Qualifier = Standard then
- Error_Msg
- (Project,
- In_Tree,
- "a standard project cannot have no sources",
- Source_Files.Location);
- end if;
-
- if Data.Extends = No_Project
- and then Data.Object_Directory = Data.Directory
- then
- Data.Object_Directory := No_Path_Information;
- end if;
-
- elsif Source_Dirs.Default then
-
- -- No Source_Dirs specified: the single source directory is the one
- -- containing the project file
-
- String_Element_Table.Increment_Last
- (In_Tree.String_Elements);
- Data.Source_Dirs := String_Element_Table.Last
- (In_Tree.String_Elements);
- In_Tree.String_Elements.Table (Data.Source_Dirs) :=
- (Value => Name_Id (Data.Directory.Name),
- Display_Value => Name_Id (Data.Directory.Display_Name),
- Location => No_Location,
- Flag => False,
- Next => Nil_String,
- Index => 0);
-
- if Current_Verbosity = High then
- Write_Line ("Single source directory:");
- Write_Str (" """);
- Write_Str (Get_Name_String (Data.Directory.Display_Name));
- Write_Line ("""");
- end if;
-
- elsif Source_Dirs.Values = Nil_String then
- if Data.Qualifier = Standard then
- Error_Msg
- (Project,
- In_Tree,
- "a standard project cannot have no source directories",
- Source_Dirs.Location);
- end if;
-
- -- If Source_Dirs is an empty string list, this means that this
- -- project contains no source. For projects that don't extend other
- -- projects, this also means that there is no need for an object
- -- directory, if not specified.
-
- if Data.Extends = No_Project
- and then Data.Object_Directory = Data.Directory
- then
- Data.Object_Directory := No_Path_Information;
- end if;
-
- Data.Source_Dirs := Nil_String;
+ Data.Object_Directory := No_Path_Information;
else
- declare
- Source_Dir : String_List_Id;
- Element : String_Element;
-
- begin
- -- Process the source directories for each element of the list
-
- Source_Dir := Source_Dirs.Values;
- while Source_Dir /= Nil_String loop
- Element := In_Tree.String_Elements.Table (Source_Dir);
- Find_Source_Dirs
- (File_Name_Type (Element.Value), Element.Location);
- Source_Dir := Element.Next;
- end loop;
- end;
+ Data.Object_Directory := Data.Directory;
end if;
- if not Excluded_Source_Dirs.Default
- and then Excluded_Source_Dirs.Values /= Nil_String
- then
- declare
- Source_Dir : String_List_Id;
- Element : String_Element;
-
- begin
- -- Process the source directories for each element of the list
-
- Source_Dir := Excluded_Source_Dirs.Values;
- while Source_Dir /= Nil_String loop
- Element := In_Tree.String_Elements.Table (Source_Dir);
- Find_Source_Dirs
- (File_Name_Type (Element.Value),
- Element.Location,
- Removed => True);
- Source_Dir := Element.Next;
- end loop;
- end;
- end if;
-
- if Current_Verbosity = High then
- Write_Line ("Putting source directories in canonical cases");
- end if;
-
- declare
- Current : String_List_Id := Data.Source_Dirs;
- Element : String_Element;
-
- begin
- while Current /= Nil_String loop
- Element := In_Tree.String_Elements.Table (Current);
- if Element.Value /= No_Name then
- if not Osint.File_Names_Case_Sensitive then
- Get_Name_String (Element.Value);
- Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len));
- Element.Value := Name_Find;
- end if;
-
- In_Tree.String_Elements.Table (Current) := Element;
- end if;
-
- Current := Element.Next;
- end loop;
- end;
-
-- Check the object directory
- pragma Assert (Object_Dir.Kind = Single,
- "Object_Dir is not a single string");
-
if Object_Dir.Value /= Empty_String then
Get_Name_String (Object_Dir.Value);
@@ -6444,9 +6347,6 @@ package body Prj.Nmsc is
-- Check the exec directory
- pragma Assert (Exec_Dir.Kind = Single,
- "Exec_Dir is not a single string");
-
-- We set the object directory to its default
Data.Exec_Directory := Data.Object_Directory;
@@ -6494,6 +6394,127 @@ package body Prj.Nmsc is
Write_Line ("""");
end if;
end if;
+
+ -- Look for the source directories
+
+ if Current_Verbosity = High then
+ Write_Line ("Starting to look for source directories");
+ end if;
+
+ pragma Assert (Source_Dirs.Kind = List, "Source_Dirs is not a list");
+
+ if (not Source_Files.Default) and then
+ Source_Files.Values = Nil_String
+ then
+ Data.Source_Dirs := Nil_String;
+
+ if Data.Qualifier = Standard then
+ Error_Msg
+ (Project,
+ In_Tree,
+ "a standard project cannot have no sources",
+ Source_Files.Location);
+ end if;
+
+ elsif Source_Dirs.Default then
+
+ -- No Source_Dirs specified: the single source directory is the one
+ -- containing the project file
+
+ String_Element_Table.Increment_Last
+ (In_Tree.String_Elements);
+ Data.Source_Dirs := String_Element_Table.Last
+ (In_Tree.String_Elements);
+ In_Tree.String_Elements.Table (Data.Source_Dirs) :=
+ (Value => Name_Id (Data.Directory.Name),
+ Display_Value => Name_Id (Data.Directory.Display_Name),
+ Location => No_Location,
+ Flag => False,
+ Next => Nil_String,
+ Index => 0);
+
+ if Current_Verbosity = High then
+ Write_Line ("Single source directory:");
+ Write_Str (" """);
+ Write_Str (Get_Name_String (Data.Directory.Display_Name));
+ Write_Line ("""");
+ end if;
+
+ elsif Source_Dirs.Values = Nil_String then
+ if Data.Qualifier = Standard then
+ Error_Msg
+ (Project,
+ In_Tree,
+ "a standard project cannot have no source directories",
+ Source_Dirs.Location);
+ end if;
+
+ Data.Source_Dirs := Nil_String;
+
+ else
+ declare
+ Source_Dir : String_List_Id;
+ Element : String_Element;
+
+ begin
+ -- Process the source directories for each element of the list
+
+ Source_Dir := Source_Dirs.Values;
+ while Source_Dir /= Nil_String loop
+ Element := In_Tree.String_Elements.Table (Source_Dir);
+ Find_Source_Dirs
+ (File_Name_Type (Element.Value), Element.Location);
+ Source_Dir := Element.Next;
+ end loop;
+ end;
+ end if;
+
+ if not Excluded_Source_Dirs.Default
+ and then Excluded_Source_Dirs.Values /= Nil_String
+ then
+ declare
+ Source_Dir : String_List_Id;
+ Element : String_Element;
+
+ begin
+ -- Process the source directories for each element of the list
+
+ Source_Dir := Excluded_Source_Dirs.Values;
+ while Source_Dir /= Nil_String loop
+ Element := In_Tree.String_Elements.Table (Source_Dir);
+ Find_Source_Dirs
+ (File_Name_Type (Element.Value),
+ Element.Location,
+ Removed => True);
+ Source_Dir := Element.Next;
+ end loop;
+ end;
+ end if;
+
+ if Current_Verbosity = High then
+ Write_Line ("Putting source directories in canonical cases");
+ end if;
+
+ declare
+ Current : String_List_Id := Data.Source_Dirs;
+ Element : String_Element;
+
+ begin
+ while Current /= Nil_String loop
+ Element := In_Tree.String_Elements.Table (Current);
+ if Element.Value /= No_Name then
+ if not Osint.File_Names_Case_Sensitive then
+ Get_Name_String (Element.Value);
+ Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len));
+ Element.Value := Name_Find;
+ end if;
+
+ In_Tree.String_Elements.Table (Current) := Element;
+ end if;
+
+ Current := Element.Next;
+ end loop;
+ end;
end Get_Directories;
---------------
@@ -7724,7 +7745,7 @@ package body Prj.Nmsc is
Config : Language_Config;
Lang : Name_List_Index := Data.Languages;
Header_File : Boolean := False;
- First_Language : Language_Index;
+ First_Language : Language_Index := No_Language_Index;
OK : Boolean;
Last_Spec : Natural;
@@ -7732,8 +7753,15 @@ package body Prj.Nmsc is
Last_Sep : Natural;
begin
- Unit := No_Name;
- Alternate_Languages := No_Alternate_Language;
+ -- Default values
+
+ Alternate_Languages := No_Alternate_Language;
+ Language := No_Language_Index;
+ Language_Name := No_Name;
+ Display_Language_Name := No_Name;
+ Unit := No_Name;
+ Lang_Kind := File_Based;
+ Kind := Spec;
while Lang /= No_Name_List loop
Language_Name := In_Tree.Name_Lists.Table (Lang).Name;
@@ -8827,8 +8855,13 @@ package body Prj.Nmsc is
if Result = null then
return "";
else
- Canonical_Case_File_Name (Result.all);
- return Result.all;
+ declare
+ R : String := Result.all;
+ begin
+ Free (Result);
+ Canonical_Case_File_Name (R);
+ return R;
+ end;
end if;
end Path_Name_Of;
diff --git a/gcc/ada/prj-part.adb b/gcc/ada/prj-part.adb
index ad4c7ea7f3d..77a98bc1f34 100644
--- a/gcc/ada/prj-part.adb
+++ b/gcc/ada/prj-part.adb
@@ -1738,7 +1738,7 @@ package body Prj.Part is
-- And restore the comment state that was saved
- Tree.Restore (Project_Comment_State);
+ Tree.Restore_And_Free (Project_Comment_State);
end Parse_Single_Project;
-----------------------
diff --git a/gcc/ada/prj-tree.adb b/gcc/ada/prj-tree.adb
index 0f9f5de986f..e9bc4a38853 100644
--- a/gcc/ada/prj-tree.adb
+++ b/gcc/ada/prj-tree.adb
@@ -23,6 +23,7 @@
-- --
------------------------------------------------------------------------------
+with Ada.Unchecked_Deallocation;
with Prj.Err;
package body Prj.Tree is
@@ -984,6 +985,21 @@ package body Prj.Tree is
Projects_Htable.Reset (Tree.Projects_HT);
end Initialize;
+ ----------
+ -- Free --
+ ----------
+
+ procedure Free (Prj : in out Project_Node_Tree_Ref) is
+ procedure Unchecked_Free is new Ada.Unchecked_Deallocation
+ (Project_Node_Tree_Data, Project_Node_Tree_Ref);
+ begin
+ if Prj /= null then
+ Project_Node_Table.Free (Prj.Project_Nodes);
+ Projects_Htable.Reset (Prj.Projects_HT);
+ Unchecked_Free (Prj);
+ end if;
+ end Free;
+
-------------------------------
-- Is_Followed_By_Empty_Line --
-------------------------------
@@ -1486,11 +1502,14 @@ package body Prj.Tree is
Comments.Set_Last (0);
end Reset_State;
- -------------
- -- Restore --
- -------------
+ ----------------------
+ -- Restore_And_Free --
+ ----------------------
+
+ procedure Restore_And_Free (S : in out Comment_State) is
+ procedure Unchecked_Free is new
+ Ada.Unchecked_Deallocation (Comment_Array, Comments_Ptr);
- procedure Restore (S : Comment_State) is
begin
End_Of_Line_Node := S.End_Of_Line_Node;
Previous_Line_Node := S.Previous_Line_Node;
@@ -1504,7 +1523,9 @@ package body Prj.Tree is
Comments.Increment_Last;
Comments.Table (Comments.Last) := S.Comments (J);
end loop;
- end Restore;
+
+ Unchecked_Free (S.Comments);
+ end Restore_And_Free;
----------
-- Save --
diff --git a/gcc/ada/prj-tree.ads b/gcc/ada/prj-tree.ads
index 94526660e20..57fe531dc3d 100644
--- a/gcc/ada/prj-tree.ads
+++ b/gcc/ada/prj-tree.ads
@@ -131,9 +131,9 @@ package Prj.Tree is
-- Save in variable S the comment state. Called before scanning a new
-- project file.
- procedure Restore (S : Comment_State);
+ procedure Restore_And_Free (S : in out Comment_State);
-- Restore the comment state to a previously saved value. Called after
- -- scanning a project file.
+ -- scanning a project file. Frees the memory occupied by S
procedure Reset_State;
-- Set the comment state to its initial value. Called before scanning a
@@ -1300,6 +1300,9 @@ package Prj.Tree is
end record;
-- The data for a project node tree
+ procedure Free (Prj : in out Project_Node_Tree_Ref);
+ -- Free memory used by Prj
+
private
type Comment_Array is array (Positive range <>) of Comment_Data;
type Comments_Ptr is access Comment_Array;
diff --git a/gcc/ada/prj.adb b/gcc/ada/prj.adb
index ca804d9b0a8..d8f368d3996 100644
--- a/gcc/ada/prj.adb
+++ b/gcc/ada/prj.adb
@@ -24,6 +24,7 @@
------------------------------------------------------------------------------
with Ada.Characters.Handling; use Ada.Characters.Handling;
+with Ada.Unchecked_Deallocation;
with Debug;
with Output; use Output;
@@ -160,6 +161,9 @@ package body Prj is
-- Table to store the path name of all the created temporary files, so that
-- they can be deleted at the end, or when the program is interrupted.
+ procedure Free (Project : in out Project_Data);
+ -- Free memory allocated for Project
+
-------------------
-- Add_To_Buffer --
-------------------
@@ -705,11 +709,18 @@ package body Prj is
-----------------
function Object_Name
- (Source_File_Name : File_Name_Type)
+ (Source_File_Name : File_Name_Type;
+ Object_File_Suffix : Name_Id := No_Name)
return File_Name_Type
is
begin
- return Extend_Name (Source_File_Name, Object_Suffix);
+ if Object_File_Suffix = No_Name then
+ return Extend_Name
+ (Source_File_Name, Object_Suffix);
+ else
+ return Extend_Name
+ (Source_File_Name, Get_Name_String (Object_File_Suffix));
+ end if;
end Object_Name;
----------------------
@@ -826,17 +837,71 @@ package body Prj is
end if;
end Register_Default_Naming_Scheme;
+ ----------
+ -- Free --
+ ----------
+
+ procedure Free (Project : in out Project_Data) is
+ begin
+ Free (Project.Dir_Path);
+ Free (Project.Include_Path);
+ Free (Project.Ada_Include_Path);
+ Free (Project.Objects_Path);
+ Free (Project.Ada_Objects_Path);
+ end Free;
+
+ ----------
+ -- Free --
+ ----------
+
+ procedure Free (Tree : in out Project_Tree_Ref) is
+ procedure Unchecked_Free is new Ada.Unchecked_Deallocation
+ (Project_Tree_Data, Project_Tree_Ref);
+ begin
+ if Tree /= null then
+ Language_Data_Table.Free (Tree.Languages_Data);
+ Name_List_Table.Free (Tree.Name_Lists);
+ String_Element_Table.Free (Tree.String_Elements);
+ Variable_Element_Table.Free (Tree.Variable_Elements);
+ Array_Element_Table.Free (Tree.Array_Elements);
+ Array_Table.Free (Tree.Arrays);
+ Package_Table.Free (Tree.Packages);
+ Project_List_Table.Free (Tree.Project_Lists);
+ Source_Data_Table.Free (Tree.Sources);
+ Alternate_Language_Table.Free (Tree.Alt_Langs);
+ Unit_Table.Free (Tree.Units);
+ Units_Htable.Reset (Tree.Units_HT);
+ Files_Htable.Reset (Tree.Files_HT);
+ Source_Paths_Htable.Reset (Tree.Source_Paths_HT);
+ Unit_Sources_Htable.Reset (Tree.Unit_Sources_HT);
+
+ for P in Project_Table.First ..
+ Project_Table.Last (Tree.Projects)
+ loop
+ Free (Tree.Projects.Table (P));
+ end loop;
+
+ Project_Table.Free (Tree.Projects);
+
+ -- Private part
+
+ Naming_Table.Free (Tree.Private_Part.Namings);
+ Path_File_Table.Free (Tree.Private_Part.Path_Files);
+ Source_Path_Table.Free (Tree.Private_Part.Source_Paths);
+ Object_Path_Table.Free (Tree.Private_Part.Object_Paths);
+
+ -- Naming data (nothing to free ?)
+ null;
+
+ Unchecked_Free (Tree);
+ end if;
+ end Free;
+
-----------
-- Reset --
-----------
procedure Reset (Tree : Project_Tree_Ref) is
-
- -- Def_Lang : constant Name_Node :=
- -- (Name => Name_Ada,
- -- Next => No_Name_List);
- -- Why is the above commented out ???
-
begin
Prj.Env.Initialize;
@@ -850,7 +915,6 @@ package body Prj is
Array_Table.Init (Tree.Arrays);
Package_Table.Init (Tree.Packages);
Project_List_Table.Init (Tree.Project_Lists);
- Project_Table.Init (Tree.Projects);
Source_Data_Table.Init (Tree.Sources);
Alternate_Language_Table.Init (Tree.Alt_Langs);
Unit_Table.Init (Tree.Units);
@@ -859,6 +923,16 @@ package body Prj is
Source_Paths_Htable.Reset (Tree.Source_Paths_HT);
Unit_Sources_Htable.Reset (Tree.Unit_Sources_HT);
+ if not Project_Table."=" (Tree.Projects.Table, null) then
+ for P in Project_Table.First ..
+ Project_Table.Last (Tree.Projects)
+ loop
+ Free (Tree.Projects.Table (P));
+ end loop;
+ end if;
+
+ Project_Table.Init (Tree.Projects);
+
-- Private part table
Naming_Table.Init (Tree.Private_Part.Namings);
diff --git a/gcc/ada/prj.ads b/gcc/ada/prj.ads
index adc57472329..aa8d88f7571 100644
--- a/gcc/ada/prj.ads
+++ b/gcc/ada/prj.ads
@@ -116,6 +116,9 @@ package Prj is
No_Project_Tree : constant Project_Tree_Ref;
+ procedure Free (Tree : in out Project_Tree_Ref);
+ -- Free memory associated with the tree
+
function Default_Ada_Spec_Suffix return File_Name_Type;
pragma Inline (Default_Ada_Spec_Suffix);
-- The name for the standard GNAT suffix for Ada spec source file name
@@ -438,6 +441,8 @@ package Prj is
-- Value may be Canonical (Unix style) or Host (host syntax, for example
-- on VMS for DEC C).
+ Object_File_Suffix : Name_Id := No_Name;
+
Compilation_PIC_Option : Name_List_Index := No_Name_List;
-- The option(s) to compile a source in Position Independent Code for
-- shared libraries. Specified in the configuration. When not specified,
@@ -453,6 +458,9 @@ package Prj is
Runtime_Library_Dir : Name_Id := No_Name;
-- Path name of the runtime library directory, if any
+ Runtime_Source_Dir : Name_Id := No_Name;
+ -- Path name of the runtime source directory, if any
+
Mapping_File_Switches : Name_List_Index := No_Name_List;
-- The option(s) to provide a mapping file to the compiler. Specified in
-- the configuration. When value is No_Name_List, there is no mapping
@@ -551,10 +559,12 @@ package Prj is
Compiler_Driver_Path => null,
Compiler_Required_Switches => No_Name_List,
Path_Syntax => Canonical,
+ Object_File_Suffix => No_Name,
Compilation_PIC_Option => No_Name_List,
Object_Generated => True,
Objects_Linked => True,
Runtime_Library_Dir => No_Name,
+ Runtime_Source_Dir => No_Name,
Mapping_File_Switches => No_Name_List,
Mapping_Spec_Suffix => No_File,
Mapping_Body_Suffix => No_File,
@@ -987,6 +997,9 @@ package Prj is
-- The format of the different response files
type Project_Configuration is record
+ Target : Name_Id := No_Name;
+ -- The target of the configuration, when specified
+
Run_Path_Option : Name_List_Index := No_Name_List;
-- The option to use when linking to specify the path where to look for
-- libraries.
@@ -1096,7 +1109,8 @@ package Prj is
end record;
Default_Project_Config : constant Project_Configuration :=
- (Run_Path_Option => No_Name_List,
+ (Target => No_Name,
+ Run_Path_Option => No_Name_List,
Executable_Suffix => No_Name,
Linker => No_Path,
Map_File_Option => No_Name,
@@ -1557,7 +1571,8 @@ package Prj is
-- Replace the extension of File with With_Suffix
function Object_Name
- (Source_File_Name : File_Name_Type) return File_Name_Type;
+ (Source_File_Name : File_Name_Type;
+ Object_File_Suffix : Name_Id := No_Name) return File_Name_Type;
-- Returns the object file name corresponding to a source file name
function Dependency_Name
diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb
index 99a20afcad9..a57ac4c66ee 100644
--- a/gcc/ada/restrict.adb
+++ b/gcc/ada/restrict.adb
@@ -154,10 +154,7 @@ package body Restrict is
-- Strip extension and pad to eight characters
Name_Len := Name_Len - 4;
- while Name_Len < 8 loop
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := ' ';
- end loop;
+ Add_Str_To_Name_Buffer ((Name_Len + 1 .. 8 => ' '));
-- If predefined unit, check the list of restricted units
@@ -319,6 +316,15 @@ package body Restrict is
DU : Node_Id;
begin
+ -- Ignore call if node U is not in the main source unit. This avoids
+ -- cascaded errors, e.g. when Ada.Containers units with other units.
+
+ if not In_Extended_Main_Source_Unit (U) then
+ return;
+ end if;
+
+ -- Loop through entries in No_Dependence table to check each one in turn
+
for J in No_Dependence.First .. No_Dependence.Last loop
DU := No_Dependence.Table (J).Unit;
diff --git a/gcc/ada/rtsfind.adb b/gcc/ada/rtsfind.adb
index ebd850191f6..9944bbf713b 100644
--- a/gcc/ada/rtsfind.adb
+++ b/gcc/ada/rtsfind.adb
@@ -79,11 +79,16 @@ package body Rtsfind is
-- the latter case it is critical to make a call to Set_RTU_Loaded to
-- ensure that the entry in this table reflects the load.
+ -- Withed is True if an implicit with_clause has been added from some unit
+ -- other than the main unit to this unit. Withed_By_Main is the same,
+ -- except from the main unit.
+
type RT_Unit_Table_Record is record
- Entity : Entity_Id;
- Uname : Unit_Name_Type;
- Unum : Unit_Number_Type;
- Withed : Boolean;
+ Entity : Entity_Id;
+ Uname : Unit_Name_Type;
+ Unum : Unit_Number_Type;
+ Withed : Boolean;
+ Withed_By_Main : Boolean;
end record;
RT_Unit_Table : array (RTU_Id) of RT_Unit_Table_Record;
@@ -106,22 +111,19 @@ package body Rtsfind is
RE_Table : array (RE_Id) of Entity_Id;
- --------------------------
- -- Generation of WITH's --
- --------------------------
+ --------------------------------
+ -- Generation of with_clauses --
+ --------------------------------
-- When a unit is implicitly loaded as a result of a call to RTE, it is
- -- necessary to create an implicit WITH to ensure that the object is
- -- correctly loaded by the binder. We originally added such WITH clauses
- -- only if the extended main unit required them, and added them only to the
- -- extended main unit. They are currently added to whatever unit first
- -- needs them, which is not necessarily the main unit. This works because
- -- if the main unit requires some runtime unit also required by some other
- -- unit, the other unit's implicit WITH will force a correct elaboration
- -- order. This method is necessary for SofCheck Inspector.
-
- -- The flag Withed in the unit table record is initially set to False. It
- -- is set True if a WITH has been generated for the corresponding unit.
+ -- necessary to create one or two implicit with_clauses. We add such
+ -- with_clauses to the extended main unit if needed, and also to whatever
+ -- unit first needs them, which is not necessarily the main unit. The
+ -- former ensures that the object is correctly loaded by the binder. The
+ -- latter is necessary for SofCheck Inspector.
+
+ -- The flags Withed and Withed_By_Main in the unit table record are used to
+ -- avoid duplicates.
-----------------------
-- Local Subprograms --
@@ -178,6 +180,10 @@ package body Rtsfind is
-- If the unit is a child unit, build fully qualified name for use in
-- With_Clause.
+ procedure Maybe_Add_With (E : RE_Id; U : in out RT_Unit_Table_Record);
+ -- If necessary, add an implicit with_clause from the current unit to the
+ -- one represented by E and U.
+
procedure Output_Entity_Name (Id : RE_Id; Msg : String);
-- Output continuation error message giving qualified name of entity
-- corresponding to Id, appending the string given by Msg. This call
@@ -661,8 +667,9 @@ package body Rtsfind is
-- Otherwise we need to load the unit, First build unit name
-- from the enumeration literal name in type RTU_Id.
- U.Uname := Get_Unit_Name (U_Id);
- U.Withed := False;
+ U.Uname := Get_Unit_Name (U_Id);
+ U.Withed := False;
+ U.Withed_By_Main := False;
-- Now do the load call, note that setting Error_Node to Empty is
-- a signal to Load_Unit that we will regard a failure to find the
@@ -721,7 +728,7 @@ package body Rtsfind is
if not Analyzed (Cunit (U.Unum)) then
- -- If the unit is already loaded through a limited_with clause,
+ -- If the unit is already loaded through a limited_with_clause,
-- the relevant entities must already be available. We do not
-- want to load and analyze the unit because this would create
-- a real semantic dependence when the purpose of the limited_with
@@ -784,7 +791,66 @@ package body Rtsfind is
return Nam;
end Make_Unit_Name;
- -----------------------
+ --------------------
+ -- Maybe_Add_With --
+ --------------------
+
+ procedure Maybe_Add_With (E : RE_Id; U : in out RT_Unit_Table_Record) is
+ Is_Main : constant Boolean :=
+ In_Extended_Main_Code_Unit (Cunit_Entity (Current_Sem_Unit));
+
+ begin
+ -- We do not need to generate a with_clause for a call issued from
+ -- RTE_Component_Available.
+
+ if RTE_Available_Call then
+ return;
+ end if;
+
+ -- If the current unit is the main one, add the with_clause unless it's
+ -- already been done.
+
+ if Is_Main then
+ if U.Withed_By_Main then
+ return;
+ else
+ U.Withed_By_Main := True;
+ end if;
+
+ -- If the current unit is not the main one, add the with_clause unless
+ -- it's already been done for some non-main unit.
+
+ else
+ if U.Withed then
+ return;
+ else
+ U.Withed := True;
+ end if;
+ end if;
+
+ -- Here if we've decided to add the with_clause
+
+ declare
+ LibUnit : constant Node_Id := Unit (Cunit (U.Unum));
+ Withn : constant Node_Id :=
+ Make_With_Clause (Standard_Location,
+ Name =>
+ Make_Unit_Name
+ (E, Defining_Unit_Name (Specification (LibUnit))));
+
+ begin
+ Set_Library_Unit (Withn, Cunit (U.Unum));
+ Set_Corresponding_Spec (Withn, U.Entity);
+ Set_First_Name (Withn, True);
+ Set_Implicit_With (Withn, True);
+
+ Mark_Rewrite_Insertion (Withn);
+ Append (Withn, Context_Items (Cunit (Current_Sem_Unit)));
+ Check_Restriction_No_Dependence (Name (Withn), Current_Error_Node);
+ end;
+ end Maybe_Add_With;
+
+ ------------------------
-- Output_Entity_Name --
------------------------
@@ -1063,36 +1129,8 @@ package body Rtsfind is
end if;
end if;
- -- See if we have to generate a WITH for this entity. We generate a WITH
- -- if we have not already added the with. The WITH is added to the
- -- appropriate unit (the current one). We do not need to generate a WITH
- -- for a call issued from RTE_Available.
-
<<Found>>
- if not U.Withed and then not RTE_Available_Call then
- U.Withed := True;
-
- declare
- Withn : Node_Id;
- Lib_Unit : Node_Id;
-
- begin
- Lib_Unit := Unit (Cunit (U.Unum));
- Withn :=
- Make_With_Clause (Standard_Location,
- Name =>
- Make_Unit_Name
- (E, Defining_Unit_Name (Specification (Lib_Unit))));
- Set_Library_Unit (Withn, Cunit (U.Unum));
- Set_Corresponding_Spec (Withn, U.Entity);
- Set_First_Name (Withn, True);
- Set_Implicit_With (Withn, True);
-
- Mark_Rewrite_Insertion (Withn);
- Append (Withn, Context_Items (Cunit (Current_Sem_Unit)));
- Check_Restriction_No_Dependence (Name (Withn), Current_Error_Node);
- end;
- end if;
+ Maybe_Add_With (E, U);
Front_End_Inlining := Save_Front_End_Inlining;
return Check_CRT (E, RE_Table (E));
@@ -1197,39 +1235,7 @@ package body Rtsfind is
-- If we didn't find the entity we want, something is wrong. The
-- appropriate action will be taken by Check_CRT when we exit.
- -- Generate a with-clause if the current unit is part of the extended
- -- main code unit, and if we have not already added the with. The clause
- -- is added to the appropriate unit (the current one). We do not need to
- -- generate it for a call issued from RTE_Component_Available.
-
- if (not U.Withed)
- and then
- In_Extended_Main_Code_Unit (Cunit_Entity (Current_Sem_Unit))
- and then not RTE_Available_Call
- then
- U.Withed := True;
-
- declare
- Withn : Node_Id;
- Lib_Unit : Node_Id;
-
- begin
- Lib_Unit := Unit (Cunit (U.Unum));
- Withn :=
- Make_With_Clause (Standard_Location,
- Name =>
- Make_Unit_Name
- (E, Defining_Unit_Name (Specification (Lib_Unit))));
- Set_Library_Unit (Withn, Cunit (U.Unum));
- Set_Corresponding_Spec (Withn, U.Entity);
- Set_First_Name (Withn, True);
- Set_Implicit_With (Withn, True);
-
- Mark_Rewrite_Insertion (Withn);
- Append (Withn, Context_Items (Cunit (Current_Sem_Unit)));
- Check_Restriction_No_Dependence (Name (Withn), Current_Error_Node);
- end;
- end if;
+ Maybe_Add_With (E, U);
Front_End_Inlining := Save_Front_End_Inlining;
return Check_CRT (E, Found_E);
@@ -1334,10 +1340,11 @@ package body Rtsfind is
-- If entry is not set, set it now
if No (U.Entity) then
- U.Entity := E;
- U.Uname := Get_Unit_Name (U_Id);
- U.Unum := Unum;
- U.Withed := False;
+ U := (Entity => E,
+ Uname => Get_Unit_Name (U_Id),
+ Unum => Unum,
+ Withed => False,
+ Withed_By_Main => False);
end if;
return;
diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads
index 7b8422e77da..f3dd1765634 100644
--- a/gcc/ada/rtsfind.ads
+++ b/gcc/ada/rtsfind.ads
@@ -36,37 +36,36 @@ package Rtsfind is
-- Runtime Unit Table --
------------------------
- -- The following type includes an enumeration entry for each runtime
- -- unit. The enumeration literal represents the fully qualified
- -- name of the unit, as follows:
+ -- The following type includes an enumeration entry for each runtime unit.
+ -- The enumeration literal represents the fully qualified name of the unit,
+ -- as follows:
- -- Names of the form Ada_xxx are first level children of Ada, whose
- -- name is Ada.xxx. For example, the name Ada_Tags refers to package
- -- Ada.Tags.
+ -- Names of the form Ada_xxx are first level children of Ada, whose name
+ -- is Ada.xxx. For example, the name Ada_Tags refers to package Ada.Tags.
- -- Names of the form Ada_Calendar_xxx are second level children
- -- of Ada.Calendar. This is part of a temporary implementation of
- -- delays; eventually, packages implementing delays will be found
- -- relative to the package that declares the time type.
+ -- Names of the form Ada_Calendar_xxx are second level children of
+ -- Ada.Calendar. This is part of a temporary implementation of delays;
+ -- eventually, packages implementing delays will be found relative to
+ -- the package that declares the time type.
- -- Names of the form Ada_Finalization_xxx are second level children
- -- of Ada.Finalization.
+ -- Names of the form Ada_Finalization_xxx are second level children of
+ -- Ada.Finalization.
- -- Names of the form Ada_Interrupts_xxx are second level children
- -- of Ada.Interrupts. This is needed for Ada.Interrupts.Names which
- -- is used by pragma Interrupt_State.
+ -- Names of the form Ada_Interrupts_xxx are second level children of
+ -- Ada.Interrupts. This is needed for Ada.Interrupts.Names which is used
+ -- by pragma Interrupt_State.
- -- Names of the form Ada_Real_Time_xxx are second level children
- -- of Ada.Real_Time.
+ -- Names of the form Ada_Real_Time_xxx are second level children of
+ -- Ada.Real_Time.
-- Names of the form Ada_Streams_xxx are second level children
-- of Ada.Streams.
- -- Names of the form Ada_Text_IO_xxx are second level children
- -- of Ada.Text_IO.
+ -- Names of the form Ada_Text_IO_xxx are second level children of
+ -- Ada.Text_IO.
- -- Names of the form Ada_Wide_Text_IO_xxx are second level children
- -- of Ada.Wide_Text_IO.
+ -- Names of the form Ada_Wide_Text_IO_xxx are second level children of
+ -- Ada.Wide_Text_IO.
-- Names of the form Ada_Wide_Wide_Text_IO_xxx are second level children
-- of Ada.Wide_Wide_Text_IO.
@@ -88,22 +87,22 @@ package Rtsfind is
-- Other names stand for themselves (e.g. System for package System)
-- This list can contain both subprogram and package unit names. For
- -- packages, the accessible entities in the package are separately
- -- listed in the package entity table. The units must be either library
- -- level package declarations, or library level subprogram declarations.
- -- Generic units, library level instantiations and subprogram bodies
- -- acting as specs may not be referenced (all these cases could be added
- -- at the expense of additional complexity in the body of Rtsfind, but
- -- it doesn't seem worthwhile, since the implementation controls the
- -- set of units that are referenced, and this restriction is easily met.
-
- -- IMPORTANT NOTE: the specs of packages and procedures with'ed using
- -- this mechanism may not contain use clauses. This is because these
- -- subprograms are compiled in the current visibility environment, and
- -- it would be too much trouble to establish a clean environment for the
- -- compilation. The presence of extraneous visible stuff has no effect
- -- on the compilation except in the presence of use clauses (which might
- -- result in unexpected ambiguities).
+ -- packages, the accessible entities in the package are separately listed
+ -- in the package entity table. The units must be either library level
+ -- package declarations, or library level subprogram declarations. Generic
+ -- units, library level instantiations and subprogram bodies acting as
+ -- specs may not be referenced (all these cases could be added at the
+ -- expense of additional complexity in the body of Rtsfind, but it doesn't
+ -- seem worthwhile, since the implementation controls the set of units that
+ -- are referenced, and this restriction is easily met.
+
+ -- IMPORTANT NOTE: the specs of packages and procedures with'ed using this
+ -- mechanism may not contain use clauses. This is because these subprograms
+ -- are compiled in the current visibility environment, and it would be too
+ -- much trouble to establish a clean environment for the compilation. The
+ -- presence of extraneous visible stuff has no effect on the compilation
+ -- except in the presence of use clauses (which might result in unexpected
+ -- ambiguities).
type RTU_Id is (
-- Runtime packages, for list of accessible entities in each
@@ -208,6 +207,14 @@ package Rtsfind is
System_Compare_Array_Unsigned_32,
System_Compare_Array_Unsigned_64,
System_Compare_Array_Unsigned_8,
+ System_Concat_2,
+ System_Concat_3,
+ System_Concat_4,
+ System_Concat_5,
+ System_Concat_6,
+ System_Concat_7,
+ System_Concat_8,
+ System_Concat_9,
System_DSA_Services,
System_DSA_Types,
System_Exception_Table,
@@ -689,6 +696,15 @@ package Rtsfind is
RE_Compare_Array_U64, -- System.Compare_Array_Unsigned_16
+ RE_Str_Concat_2, -- System.Concat_2
+ RE_Str_Concat_3, -- System.Concat_3
+ RE_Str_Concat_4, -- System.Concat_4
+ RE_Str_Concat_5, -- System.Concat_5
+ RE_Str_Concat_6, -- System.Concat_6
+ RE_Str_Concat_7, -- System.Concat_7
+ RE_Str_Concat_8, -- System.Concat_8
+ RE_Str_Concat_9, -- System.Concat_9
+
RE_Get_Active_Partition_Id, -- System.DSA_Services
RE_Get_Local_Partition_Id, -- System.DSA_Services
RE_Get_Passive_Partition_Id, -- System.DSA_Services
@@ -1135,6 +1151,7 @@ package Rtsfind is
RE_Request_Arguments, -- System.Partition_Interface
RE_Request_Set_Out, -- System.Partition_Interface
RE_Request_Raise_Occurrence, -- System.Partition_Interface
+ RE_Request_Destroy, -- System.Partition_Interface
RE_Nil_Exc_List, -- System.Partition_Interface
RE_Servant, -- System.Partition_Interface
RE_Move_Any_Value, -- System.Partition_Interface
@@ -1832,6 +1849,15 @@ package Rtsfind is
RE_Compare_Array_U64 => System_Compare_Array_Unsigned_64,
+ RE_Str_Concat_2 => System_Concat_2,
+ RE_Str_Concat_3 => System_Concat_3,
+ RE_Str_Concat_4 => System_Concat_4,
+ RE_Str_Concat_5 => System_Concat_5,
+ RE_Str_Concat_6 => System_Concat_6,
+ RE_Str_Concat_7 => System_Concat_7,
+ RE_Str_Concat_8 => System_Concat_8,
+ RE_Str_Concat_9 => System_Concat_9,
+
RE_Get_Active_Partition_Id => System_DSA_Services,
RE_Get_Local_Partition_Id => System_DSA_Services,
RE_Get_Passive_Partition_Id => System_DSA_Services,
@@ -2269,6 +2295,7 @@ package Rtsfind is
RE_Request_Arguments => System_Partition_Interface,
RE_Request_Set_Out => System_Partition_Interface,
RE_Request_Raise_Occurrence => System_Partition_Interface,
+ RE_Request_Destroy => System_Partition_Interface,
RE_Nil_Exc_List => System_Partition_Interface,
RE_Servant => System_Partition_Interface,
RE_Move_Any_Value => System_Partition_Interface,
diff --git a/gcc/ada/s-addope.adb b/gcc/ada/s-addope.adb
index 715e2b2e1db..2c957584da4 100644
--- a/gcc/ada/s-addope.adb
+++ b/gcc/ada/s-addope.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Unchecked_Conversion;
diff --git a/gcc/ada/s-addope.ads b/gcc/ada/s-addope.ads
index 1b53feae08e..2d3f5894681 100644
--- a/gcc/ada/s-addope.ads
+++ b/gcc/ada/s-addope.ads
@@ -40,9 +40,7 @@
-- inappropriate use by applications programs). In addition, the logical
-- operations may not be available if type Address is a signed integer.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Address_Operations is
pragma Pure;
diff --git a/gcc/ada/s-assert.adb b/gcc/ada/s-assert.adb
index 178166cdf1f..030ec17192e 100644
--- a/gcc/ada/s-assert.adb
+++ b/gcc/ada/s-assert.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Exceptions;
with System.Exceptions;
diff --git a/gcc/ada/s-assert.ads b/gcc/ada/s-assert.ads
index 525fdad49e1..433e276c600 100644
--- a/gcc/ada/s-assert.ads
+++ b/gcc/ada/s-assert.ads
@@ -34,9 +34,7 @@
-- This unit may be used directly from an application program by providing
-- an appropriate WITH, and the interface can be expected to remain stable.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Assertions is
diff --git a/gcc/ada/s-asthan-vms-alpha.adb b/gcc/ada/s-asthan-vms-alpha.adb
index 70f3cd8c979..2e04081f410 100644
--- a/gcc/ada/s-asthan-vms-alpha.adb
+++ b/gcc/ada/s-asthan-vms-alpha.adb
@@ -133,9 +133,6 @@ package body System.AST_Handling is
type Descriptor_Type is new SSE.Storage_Array (1 .. 48);
for Descriptor_Type'Alignment use Standard'Maximum_Alignment;
- pragma Warnings (Off, Descriptor_Type);
- -- Suppress harmless warnings about alignment.
- -- Should explain why this warning is harmless ???
type Descriptor_Ref is access all Descriptor_Type;
@@ -459,12 +456,18 @@ package body System.AST_Handling is
Process_AST_Ptr : constant AST_Handler := Process_AST'Access;
-- Reference to standard procedure descriptor for Process_AST
+ pragma Warnings (Off, "*alignment*");
+ -- Suppress harmless warnings about alignment.
+ -- Should explain why this warning is harmless ???
+
function To_Descriptor_Ref is new Ada.Unchecked_Conversion
(AST_Handler, Descriptor_Ref);
Original_Descriptor_Ref : constant Descriptor_Ref :=
To_Descriptor_Ref (Process_AST_Ptr);
+ pragma Warnings (On, "*alignment*");
+
begin
if ATID.Is_Terminated (Taskid) then
raise Program_Error;
diff --git a/gcc/ada/s-auxdec-vms_64.ads b/gcc/ada/s-auxdec-vms_64.ads
index 6015a9fd421..e9d87627f5f 100644
--- a/gcc/ada/s-auxdec-vms_64.ads
+++ b/gcc/ada/s-auxdec-vms_64.ads
@@ -115,6 +115,7 @@ package System.Aux_DEC is
-- Floating point type declarations for VAX floating point data types
pragma Warnings (Off);
+ -- ??? needs comment
type F_Float is digits 6;
pragma Float_Representation (VAX_Float, F_Float);
diff --git a/gcc/ada/s-auxdec.ads b/gcc/ada/s-auxdec.ads
index 6104be8c110..a709956b60b 100644
--- a/gcc/ada/s-auxdec.ads
+++ b/gcc/ada/s-auxdec.ads
@@ -105,6 +105,7 @@ package System.Aux_DEC is
-- Floating point type declarations for VAX floating point data types
pragma Warnings (Off);
+ -- ??? needs comment
type F_Float is digits 6;
pragma Float_Representation (VAX_Float, F_Float);
diff --git a/gcc/ada/s-carun8.adb b/gcc/ada/s-carun8.adb
index b4733c2aa09..450e0476504 100644
--- a/gcc/ada/s-carun8.adb
+++ b/gcc/ada/s-carun8.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.Address_Operations; use System.Address_Operations;
diff --git a/gcc/ada/s-carun8.ads b/gcc/ada/s-carun8.ads
index 7866126db84..aa0d4e0f740 100644
--- a/gcc/ada/s-carun8.ads
+++ b/gcc/ada/s-carun8.ads
@@ -32,9 +32,7 @@
-- This package contains functions for runtime comparisons on arrays whose
-- elements are 8-bit discrete type values to be treated as unsigned.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Compare_Array_Unsigned_8 is
diff --git a/gcc/ada/s-casuti.adb b/gcc/ada/s-casuti.adb
index 807024e7631..8517db7c092 100644
--- a/gcc/ada/s-casuti.adb
+++ b/gcc/ada/s-casuti.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2007, AdaCore --
+-- Copyright (C) 1995-2008, 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- --
@@ -31,9 +31,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.Case_Util is
diff --git a/gcc/ada/s-casuti.ads b/gcc/ada/s-casuti.ads
index 1a091628c2e..84b92f6e6bc 100644
--- a/gcc/ada/s-casuti.ads
+++ b/gcc/ada/s-casuti.ads
@@ -37,9 +37,7 @@
-- Note that all the routines in this package are available to the user
-- via GNAT.Case_Util, which imports all the entities from this package.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Case_Util is
pragma Pure;
diff --git a/gcc/ada/s-conca2.adb b/gcc/ada/s-conca2.adb
new file mode 100644
index 00000000000..1764575737c
--- /dev/null
+++ b/gcc/ada/s-conca2.adb
@@ -0,0 +1,55 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 2 --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+pragma Compiler_Unit;
+
+package body System.Concat_2 is
+
+ pragma Suppress (All_Checks);
+
+ ------------------
+ -- Str_Concat_2 --
+ ------------------
+
+ procedure Str_Concat_2 (R : out String; S1, S2 : String) is
+ F, L : Natural;
+
+ begin
+ F := R'First;
+ L := F + S1'Length - 1;
+ R (F .. L) := S1;
+
+ F := L + 1;
+ L := R'Last;
+ R (F .. L) := S2;
+ end Str_Concat_2;
+
+end System.Concat_2;
diff --git a/gcc/ada/s-conca2.ads b/gcc/ada/s-conca2.ads
new file mode 100644
index 00000000000..b0fa85956af
--- /dev/null
+++ b/gcc/ada/s-conca2.ads
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 2 --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains a procedure for runtime concatenation of two string
+-- operands. It is used when we want to save space in the generated code.
+
+pragma Compiler_Unit;
+
+package System.Concat_2 is
+
+ procedure Str_Concat_2 (R : out String; S1, S2 : String);
+ -- Performs the operation R := S1 & S2. The bounds of R are known to be
+ -- correct, so no bounds checks are required, and it is known that none
+ -- of the input operands overlaps R. No assumptions can be made about
+ -- the lower bounds of any of the operands.
+
+end System.Concat_2;
diff --git a/gcc/ada/s-conca3.adb b/gcc/ada/s-conca3.adb
new file mode 100644
index 00000000000..daa4ec7c9f8
--- /dev/null
+++ b/gcc/ada/s-conca3.adb
@@ -0,0 +1,59 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 3 --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+pragma Compiler_Unit;
+
+package body System.Concat_3 is
+
+ pragma Suppress (All_Checks);
+
+ ------------------
+ -- Str_Concat_3 --
+ ------------------
+
+ procedure Str_Concat_3 (R : out String; S1, S2, S3 : String) is
+ F, L : Natural;
+
+ begin
+ F := R'First;
+ L := F + S1'Length - 1;
+ R (F .. L) := S1;
+
+ F := L + 1;
+ L := F + S2'Length - 1;
+ R (F .. L) := S2;
+
+ F := L + 1;
+ L := R'Last;
+ R (F .. L) := S3;
+ end Str_Concat_3;
+
+end System.Concat_3;
diff --git a/gcc/ada/s-conca3.ads b/gcc/ada/s-conca3.ads
new file mode 100644
index 00000000000..41c7d978ecb
--- /dev/null
+++ b/gcc/ada/s-conca3.ads
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 3 --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains a procedure for runtime concatenation of three string
+-- operands. It is used when we want to save space in the generated code.
+
+pragma Compiler_Unit;
+
+package System.Concat_3 is
+
+ procedure Str_Concat_3 (R : out String; S1, S2, S3 : String);
+ -- Performs the operation R := S1 & S2 & S3. The bounds of R are known to
+ -- be correct, so no bounds checks are required, and it is known that none
+ -- of the input operands overlaps R. No assumptions can be made about
+ -- the lower bounds of any of the operands.
+
+end System.Concat_3;
diff --git a/gcc/ada/s-conca4.adb b/gcc/ada/s-conca4.adb
new file mode 100644
index 00000000000..455c5be3e76
--- /dev/null
+++ b/gcc/ada/s-conca4.adb
@@ -0,0 +1,63 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 4 --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+pragma Compiler_Unit;
+
+package body System.Concat_4 is
+
+ pragma Suppress (All_Checks);
+
+ ------------------
+ -- Str_Concat_4 --
+ ------------------
+
+ procedure Str_Concat_4 (R : out String; S1, S2, S3, S4 : String) is
+ F, L : Natural;
+
+ begin
+ F := R'First;
+ L := F + S1'Length - 1;
+ R (F .. L) := S1;
+
+ F := L + 1;
+ L := F + S2'Length - 1;
+ R (F .. L) := S2;
+
+ F := L + 1;
+ L := F + S3'Length - 1;
+ R (F .. L) := S3;
+
+ F := L + 1;
+ L := R'Last;
+ R (F .. L) := S4;
+ end Str_Concat_4;
+
+end System.Concat_4;
diff --git a/gcc/ada/s-conca4.ads b/gcc/ada/s-conca4.ads
new file mode 100644
index 00000000000..a6d530c81e6
--- /dev/null
+++ b/gcc/ada/s-conca4.ads
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 4 --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains a procedure for runtime concatenation of four string
+-- operands. It is used when we want to save space in the generated code.
+
+pragma Compiler_Unit;
+
+package System.Concat_4 is
+
+ procedure Str_Concat_4 (R : out String; S1, S2, S3, S4 : String);
+ -- Performs the operation R := S1 & S2 & S3 & S4. The bounds of R are known
+ -- to be correct, so no bounds checks are required, and it is known that
+ -- none of the input operands overlaps R. No assumptions can be made about
+ -- the lower bounds of any of the operands.
+
+end System.Concat_4;
diff --git a/gcc/ada/s-conca5.adb b/gcc/ada/s-conca5.adb
new file mode 100644
index 00000000000..e463255a5bb
--- /dev/null
+++ b/gcc/ada/s-conca5.adb
@@ -0,0 +1,67 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 5 --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+pragma Compiler_Unit;
+
+package body System.Concat_5 is
+
+ pragma Suppress (All_Checks);
+
+ ------------------
+ -- Str_Concat_5 --
+ ------------------
+
+ procedure Str_Concat_5 (R : out String; S1, S2, S3, S4, S5 : String) is
+ F, L : Natural;
+
+ begin
+ F := R'First;
+ L := F + S1'Length - 1;
+ R (F .. L) := S1;
+
+ F := L + 1;
+ L := F + S2'Length - 1;
+ R (F .. L) := S2;
+
+ F := L + 1;
+ L := F + S3'Length - 1;
+ R (F .. L) := S3;
+
+ F := L + 1;
+ L := F + S4'Length - 1;
+ R (F .. L) := S4;
+
+ F := L + 1;
+ L := R'Last;
+ R (F .. L) := S5;
+ end Str_Concat_5;
+
+end System.Concat_5;
diff --git a/gcc/ada/s-conca5.ads b/gcc/ada/s-conca5.ads
new file mode 100644
index 00000000000..445b2137866
--- /dev/null
+++ b/gcc/ada/s-conca5.ads
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 5 --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains a procedure for runtime concatenation of five string
+-- operands. It is used when we want to save space in the generated code.
+
+pragma Compiler_Unit;
+
+package System.Concat_5 is
+
+ procedure Str_Concat_5 (R : out String; S1, S2, S3, S4, S5 : String);
+ -- Performs the operation R := S1 & S2 & S3 & S4 & S5. The bounds of R are
+ -- known to be correct, so no bounds checks are required, and it is known
+ -- that none of the input operands overlaps R. No assumptions can be made
+ -- about the lower bounds of any of the operands.
+
+end System.Concat_5;
diff --git a/gcc/ada/s-conca6.adb b/gcc/ada/s-conca6.adb
new file mode 100644
index 00000000000..a0bd3838fe1
--- /dev/null
+++ b/gcc/ada/s-conca6.adb
@@ -0,0 +1,71 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 6 --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+pragma Compiler_Unit;
+
+package body System.Concat_6 is
+
+ pragma Suppress (All_Checks);
+
+ ------------------
+ -- Str_Concat_6 --
+ ------------------
+
+ procedure Str_Concat_6 (R : out String; S1, S2, S3, S4, S5, S6 : String) is
+ F, L : Natural;
+
+ begin
+ F := R'First;
+ L := F + S1'Length - 1;
+ R (F .. L) := S1;
+
+ F := L + 1;
+ L := F + S2'Length - 1;
+ R (F .. L) := S2;
+
+ F := L + 1;
+ L := F + S3'Length - 1;
+ R (F .. L) := S3;
+
+ F := L + 1;
+ L := F + S4'Length - 1;
+ R (F .. L) := S4;
+
+ F := L + 1;
+ L := F + S5'Length - 1;
+ R (F .. L) := S5;
+
+ F := L + 1;
+ L := R'Last;
+ R (F .. L) := S6;
+ end Str_Concat_6;
+
+end System.Concat_6;
diff --git a/gcc/ada/s-conca6.ads b/gcc/ada/s-conca6.ads
new file mode 100644
index 00000000000..f78f932f1f0
--- /dev/null
+++ b/gcc/ada/s-conca6.ads
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 6 --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains a procedure for runtime concatenation of six string
+-- operands. It is used when we want to save space in the generated code.
+
+pragma Compiler_Unit;
+
+package System.Concat_6 is
+
+ procedure Str_Concat_6 (R : out String; S1, S2, S3, S4, S5, S6 : String);
+ -- Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6. The bounds of
+ -- R are known to be correct, so no bounds checks are required, and it is
+ -- known that none of the input operands overlaps R. No assumptions can be
+ -- made about the lower bounds of any of the operands.
+
+end System.Concat_6;
diff --git a/gcc/ada/s-conca7.adb b/gcc/ada/s-conca7.adb
new file mode 100644
index 00000000000..c014a47a9eb
--- /dev/null
+++ b/gcc/ada/s-conca7.adb
@@ -0,0 +1,78 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 7 --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+pragma Compiler_Unit;
+
+package body System.Concat_7 is
+
+ pragma Suppress (All_Checks);
+
+ ------------------
+ -- Str_Concat_7 --
+ ------------------
+
+ procedure Str_Concat_7
+ (R : out String;
+ S1, S2, S3, S4, S5, S6, S7 : String)
+ is
+ F, L : Natural;
+
+ begin
+ F := R'First;
+ L := F + S1'Length - 1;
+ R (F .. L) := S1;
+
+ F := L + 1;
+ L := F + S2'Length - 1;
+ R (F .. L) := S2;
+
+ F := L + 1;
+ L := F + S3'Length - 1;
+ R (F .. L) := S3;
+
+ F := L + 1;
+ L := F + S4'Length - 1;
+ R (F .. L) := S4;
+
+ F := L + 1;
+ L := F + S5'Length - 1;
+ R (F .. L) := S5;
+
+ F := L + 1;
+ L := F + S6'Length - 1;
+ R (F .. L) := S6;
+
+ F := L + 1;
+ L := R'Last;
+ R (F .. L) := S7;
+ end Str_Concat_7;
+
+end System.Concat_7;
diff --git a/gcc/ada/s-conca7.ads b/gcc/ada/s-conca7.ads
new file mode 100644
index 00000000000..31d5da1888b
--- /dev/null
+++ b/gcc/ada/s-conca7.ads
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 7 --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains a procedure for runtime concatenation of seven string
+-- operands. It is used when we want to save space in the generated code.
+
+pragma Compiler_Unit;
+
+package System.Concat_7 is
+
+ procedure Str_Concat_7
+ (R : out String;
+ S1, S2, S3, S4, S5, S6, S7 : String);
+ -- Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6 & S7. The bounds
+ -- of R are known to be correct, so no bounds checks are required, and it
+ -- is known that none of the input operands overlaps R. No assumptions can
+ -- be made about the lower bounds of any of the operands.
+
+end System.Concat_7;
diff --git a/gcc/ada/s-conca8.adb b/gcc/ada/s-conca8.adb
new file mode 100644
index 00000000000..3814f5721ab
--- /dev/null
+++ b/gcc/ada/s-conca8.adb
@@ -0,0 +1,82 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 8 --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+pragma Compiler_Unit;
+
+package body System.Concat_8 is
+
+ pragma Suppress (All_Checks);
+
+ ------------------
+ -- Str_Concat_8 --
+ ------------------
+
+ procedure Str_Concat_8
+ (R : out String;
+ S1, S2, S3, S4, S5, S6, S7, S8 : String)
+ is
+ F, L : Natural;
+
+ begin
+ F := R'First;
+ L := F + S1'Length - 1;
+ R (F .. L) := S1;
+
+ F := L + 1;
+ L := F + S2'Length - 1;
+ R (F .. L) := S2;
+
+ F := L + 1;
+ L := F + S3'Length - 1;
+ R (F .. L) := S3;
+
+ F := L + 1;
+ L := F + S4'Length - 1;
+ R (F .. L) := S4;
+
+ F := L + 1;
+ L := F + S5'Length - 1;
+ R (F .. L) := S5;
+
+ F := L + 1;
+ L := F + S6'Length - 1;
+ R (F .. L) := S6;
+
+ F := L + 1;
+ L := F + S7'Length - 1;
+ R (F .. L) := S7;
+
+ F := L + 1;
+ L := R'Last;
+ R (F .. L) := S8;
+ end Str_Concat_8;
+
+end System.Concat_8;
diff --git a/gcc/ada/s-conca8.ads b/gcc/ada/s-conca8.ads
new file mode 100644
index 00000000000..0d93b243010
--- /dev/null
+++ b/gcc/ada/s-conca8.ads
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 8 --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains a procedure for runtime concatenation of eight string
+-- operands. It is used when we want to save space in the generated code.
+
+pragma Compiler_Unit;
+
+package System.Concat_8 is
+
+ procedure Str_Concat_8
+ (R : out String;
+ S1, S2, S3, S4, S5, S6, S7, S8 : String);
+ -- Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8. The
+ -- bounds of R are known to be correct, so no bounds checks are required,
+ -- and it is known that none of the input operands overlaps R. No
+ -- assumptions can be made about the lower bounds of any of the operands.
+
+end System.Concat_8;
diff --git a/gcc/ada/s-conca9.adb b/gcc/ada/s-conca9.adb
new file mode 100644
index 00000000000..a575801271c
--- /dev/null
+++ b/gcc/ada/s-conca9.adb
@@ -0,0 +1,86 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 9 --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+pragma Compiler_Unit;
+
+package body System.Concat_9 is
+
+ pragma Suppress (All_Checks);
+
+ ------------------
+ -- Str_Concat_9 --
+ ------------------
+
+ procedure Str_Concat_9
+ (R : out String;
+ S1, S2, S3, S4, S5, S6, S7, S8, S9 : String)
+ is
+ F, L : Natural;
+
+ begin
+ F := R'First;
+ L := F + S1'Length - 1;
+ R (F .. L) := S1;
+
+ F := L + 1;
+ L := F + S2'Length - 1;
+ R (F .. L) := S2;
+
+ F := L + 1;
+ L := F + S3'Length - 1;
+ R (F .. L) := S3;
+
+ F := L + 1;
+ L := F + S4'Length - 1;
+ R (F .. L) := S4;
+
+ F := L + 1;
+ L := F + S5'Length - 1;
+ R (F .. L) := S5;
+
+ F := L + 1;
+ L := F + S6'Length - 1;
+ R (F .. L) := S6;
+
+ F := L + 1;
+ L := F + S7'Length - 1;
+ R (F .. L) := S7;
+
+ F := L + 1;
+ L := F + S8'Length - 1;
+ R (F .. L) := S8;
+
+ F := L + 1;
+ L := R'Last;
+ R (F .. L) := S9;
+ end Str_Concat_9;
+
+end System.Concat_9;
diff --git a/gcc/ada/s-conca9.ads b/gcc/ada/s-conca9.ads
new file mode 100644
index 00000000000..31b1263df81
--- /dev/null
+++ b/gcc/ada/s-conca9.ads
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . C O N C A T _ 9 --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains a procedure for runtime concatenation of eight string
+-- operands. It is used when we want to save space in the generated code.
+
+pragma Compiler_Unit;
+
+package System.Concat_9 is
+
+ procedure Str_Concat_9
+ (R : out String;
+ S1, S2, S3, S4, S5, S6, S7, S8, S9 : String);
+ -- Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9.
+ -- The bounds of R are known to be correct, so no bounds checks are
+ -- required, and it is known that none of the input operands overlaps R. No
+ -- assumptions can be made about the lower bounds of any of the operands.
+
+end System.Concat_9;
diff --git a/gcc/ada/s-crc32.adb b/gcc/ada/s-crc32.adb
index 4061268cf67..1687adc50c1 100644
--- a/gcc/ada/s-crc32.adb
+++ b/gcc/ada/s-crc32.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.CRC32 is
diff --git a/gcc/ada/s-crc32.ads b/gcc/ada/s-crc32.ads
index ec410c35f5a..b450c8cd387 100644
--- a/gcc/ada/s-crc32.ads
+++ b/gcc/ada/s-crc32.ads
@@ -54,9 +54,7 @@
-- "Computation of Cyclic Redundancy Checks via Table Look-Up", Communications
-- of the ACM, Vol. 31 No. 8, pp.1008-1013 Aug. 1988. Sarwate, D.V.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Interfaces;
diff --git a/gcc/ada/s-crtl.ads b/gcc/ada/s-crtl.ads
index e7d6055d890..5a9902dd657 100644
--- a/gcc/ada/s-crtl.ads
+++ b/gcc/ada/s-crtl.ads
@@ -55,8 +55,8 @@ package System.CRTL is
type size_t is mod 2 ** Standard'Address_Size;
- type Filename_Encoding is (UTF8, ASCII_8bits);
- for Filename_Encoding use (UTF8 => 0, ASCII_8bits => 1);
+ type Filename_Encoding is (UTF8, ASCII_8bits, Unspecified);
+ for Filename_Encoding use (UTF8 => 0, ASCII_8bits => 1, Unspecified => 2);
pragma Convention (C, Filename_Encoding);
-- Describes the filename's encoding
@@ -90,7 +90,7 @@ package System.CRTL is
function fopen
(filename : chars;
mode : chars;
- encoding : Filename_Encoding := UTF8) return FILEs;
+ encoding : Filename_Encoding := Unspecified) return FILEs;
pragma Import (C, fopen, "__gnat_fopen");
function fputc (C : int; stream : FILEs) return int;
@@ -106,7 +106,7 @@ package System.CRTL is
(filename : chars;
mode : chars;
stream : FILEs;
- encoding : Filename_Encoding := UTF8) return FILEs;
+ encoding : Filename_Encoding := Unspecified) return FILEs;
pragma Import (C, freopen, "__gnat_freopen");
function fseek
@@ -164,8 +164,11 @@ package System.CRTL is
procedure rewind (stream : FILEs);
pragma Import (C, rewind, "rewind");
- procedure rmdir (dir_name : String);
- pragma Import (C, rmdir, "rmdir");
+ function rmdir (dir_name : String) return int;
+ pragma Import (C, rmdir, "__gnat_rmdir");
+
+ function chdir (dir_name : String) return int;
+ pragma Import (C, chdir, "__gnat_chdir");
function setvbuf
(stream : FILEs;
@@ -185,7 +188,7 @@ package System.CRTL is
pragma Import (C, ungetc, "ungetc");
function unlink (filename : chars) return int;
- pragma Import (C, unlink, "unlink");
+ pragma Import (C, unlink, "__gnat_unlink");
function open (filename : chars; oflag : int) return int;
pragma Import (C, open, "open");
diff --git a/gcc/ada/s-except.adb b/gcc/ada/s-except.adb
index 67cf1426ea0..3d04b4b1494 100755
--- a/gcc/ada/s-except.adb
+++ b/gcc/ada/s-except.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.Exceptions is
diff --git a/gcc/ada/s-except.ads b/gcc/ada/s-except.ads
index 2bec61a6910..10232978260 100644
--- a/gcc/ada/s-except.ads
+++ b/gcc/ada/s-except.ads
@@ -33,17 +33,13 @@
-- It should be compiled without optimization to let debuggers inspect
-- parameter values reliably from breakpoints on the routines.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.Standard_Library;
package System.Exceptions is
- pragma Warnings (Off);
pragma Preelaborate_05;
- pragma Warnings (On);
-- To let Ada.Exceptions "with" us and let us "with" Standard_Library
package SSL renames System.Standard_Library;
diff --git a/gcc/ada/s-exctab.adb b/gcc/ada/s-exctab.adb
index ddf1dfa65d1..5f2228ceb1a 100644
--- a/gcc/ada/s-exctab.adb
+++ b/gcc/ada/s-exctab.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.HTable;
with System.Soft_Links; use System.Soft_Links;
diff --git a/gcc/ada/s-exctab.ads b/gcc/ada/s-exctab.ads
index ab530f9c2a0..c9fe6980b10 100644
--- a/gcc/ada/s-exctab.ads
+++ b/gcc/ada/s-exctab.ads
@@ -33,9 +33,7 @@
-- registered exception names, for the implementation of the mapping
-- of names to exceptions (used for exception streams and attributes)
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.Standard_Library;
diff --git a/gcc/ada/s-fileio.adb b/gcc/ada/s-fileio.adb
index 15c70f97d80..b3084775ff1 100644
--- a/gcc/ada/s-fileio.adb
+++ b/gcc/ada/s-fileio.adb
@@ -809,7 +809,7 @@ package body System.File_IO is
Form_Parameter (Formstr, "encoding", V1, V2);
if V1 = 0 then
- Encoding := System.CRTL.UTF8;
+ Encoding := System.CRTL.Unspecified;
elsif Formstr (V1 .. V2) = "utf8" then
Encoding := System.CRTL.UTF8;
diff --git a/gcc/ada/s-htable.adb b/gcc/ada/s-htable.adb
index 9dbb7f98420..7eea674617a 100644
--- a/gcc/ada/s-htable.adb
+++ b/gcc/ada/s-htable.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2007, AdaCore --
+-- Copyright (C) 1995-2008, 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- --
@@ -31,9 +31,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Unchecked_Deallocation;
diff --git a/gcc/ada/s-htable.ads b/gcc/ada/s-htable.ads
index e036288bc4b..bc416abd730 100644
--- a/gcc/ada/s-htable.ads
+++ b/gcc/ada/s-htable.ads
@@ -39,9 +39,7 @@
-- The Static_HTable package provides a more complex interface that allows
-- complete control over allocation.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.HTable is
pragma Preelaborate;
diff --git a/gcc/ada/s-imenne.adb b/gcc/ada/s-imenne.adb
index c5ee51946c5..37ef4a7e65d 100644
--- a/gcc/ada/s-imenne.adb
+++ b/gcc/ada/s-imenne.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Unchecked_Conversion;
diff --git a/gcc/ada/s-imenne.ads b/gcc/ada/s-imenne.ads
index 7cc432b2328..a76883d6f4d 100644
--- a/gcc/ada/s-imenne.ads
+++ b/gcc/ada/s-imenne.ads
@@ -40,9 +40,7 @@
-- for bootstrapping with older versions of the compiler which expect to find
-- functions in this package.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Img_Enum_New is
pragma Pure;
diff --git a/gcc/ada/s-imgenu.adb b/gcc/ada/s-imgenu.adb
index 6019a0d0692..99c6acfa97e 100644
--- a/gcc/ada/s-imgenu.adb
+++ b/gcc/ada/s-imgenu.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Unchecked_Conversion;
diff --git a/gcc/ada/s-imgenu.ads b/gcc/ada/s-imgenu.ads
index 7d9261c926e..24afb3a3ad2 100644
--- a/gcc/ada/s-imgenu.ads
+++ b/gcc/ada/s-imgenu.ads
@@ -41,9 +41,7 @@
-- these functions. The new compiler will search for procedures in the new
-- version of the unit.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Img_Enum is
pragma Pure;
diff --git a/gcc/ada/s-intman-susv3.adb b/gcc/ada/s-intman-susv3.adb
new file mode 100644
index 00000000000..864d7e1d2dd
--- /dev/null
+++ b/gcc/ada/s-intman-susv3.adb
@@ -0,0 +1,170 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . I N T E R R U P T _ M A N A G E M E N T --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 1992-2009, 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- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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/>. --
+-- --
+-- GNARL was developed by the GNARL team at Florida State University. --
+-- Extensive contributions were provided by Ada Core Technologies, Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This is the SuSV3 threads version of this package
+
+-- Make a careful study of all signals available under the OS, to see which
+-- need to be reserved, kept always unmasked, or kept always unmasked. Be on
+-- the lookout for special signals that may be used by the thread library.
+
+-- Since this is a multi target file, the signal <-> exception mapping
+-- is simple minded. If you need a more precise and target specific
+-- signal handling, create a new s-intman.adb that will fit your needs.
+
+-- This file assumes that:
+
+-- SIGINT exists and will be kept unmasked unless the pragma
+-- Unreserve_All_Interrupts is specified anywhere in the application.
+
+-- System.OS_Interface contains the following:
+-- SIGADAABORT: the signal that will be used to abort tasks.
+-- Unmasked: the OS specific set of signals that should be unmasked in
+-- all the threads. SIGADAABORT is unmasked by
+-- default
+-- Reserved: the OS specific set of signals that are reserved.
+
+package body System.Interrupt_Management is
+
+ use Interfaces.C;
+ use System.OS_Interface;
+
+ Unreserve_All_Interrupts : Interfaces.C.int;
+ pragma Import
+ (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
+
+ -----------------------
+ -- Local Subprograms --
+ -----------------------
+
+ function State (Int : Interrupt_ID) return Character;
+ pragma Import (C, State, "__gnat_get_interrupt_state");
+ -- Get interrupt state. Defined in init.c The input argument is the
+ -- interrupt number, and the result is one of the following:
+
+ User : constant Character := 'u';
+ Runtime : constant Character := 'r';
+ Default : constant Character := 's';
+ -- 'n' this interrupt not set by any Interrupt_State pragma
+ -- 'u' Interrupt_State pragma set state to User
+ -- 'r' Interrupt_State pragma set state to Runtime
+ -- 's' Interrupt_State pragma set state to System (use "default"
+ -- system handler)
+
+ ----------------
+ -- Initialize --
+ ----------------
+
+ Initialized : Boolean := False;
+
+ procedure Initialize is
+ begin
+ if Initialized then
+ return;
+ end if;
+
+ Initialized := True;
+
+ -- Need to call pthread_init very early because it is doing signal
+ -- initializations.
+
+ pthread_init;
+
+ Abort_Task_Interrupt := SIGADAABORT;
+
+ pragma Assert (Keep_Unmasked = (Interrupt_ID'Range => False));
+ pragma Assert (Reserve = (Interrupt_ID'Range => False));
+
+ -- Process state of exception signals
+
+ for J in Exception_Signals'Range loop
+ declare
+ Sig : constant Signal := Exception_Signals (J);
+ Id : constant Interrupt_ID := Interrupt_ID (Sig);
+ begin
+ if State (Id) /= User then
+ Keep_Unmasked (Id) := True;
+ Reserve (Id) := True;
+ end if;
+ end;
+ end loop;
+
+ if State (Abort_Task_Interrupt) /= User then
+ Keep_Unmasked (Abort_Task_Interrupt) := True;
+ Reserve (Abort_Task_Interrupt) := True;
+ end if;
+
+ -- Set SIGINT to unmasked state as long as it is not in "User" state.
+ -- Check for Unreserve_All_Interrupts last.
+
+ if State (SIGINT) /= User then
+ Keep_Unmasked (SIGINT) := True;
+ Reserve (SIGINT) := True;
+ end if;
+
+ -- Check all signals for state that requires keeping them unmasked and
+ -- reserved.
+
+ for J in Interrupt_ID'Range loop
+ if State (J) = Default or else State (J) = Runtime then
+ Keep_Unmasked (J) := True;
+ Reserve (J) := True;
+ end if;
+ end loop;
+
+ -- Add the set of signals that must always be unmasked for this target
+
+ for J in Unmasked'Range loop
+ Keep_Unmasked (Interrupt_ID (Unmasked (J))) := True;
+ Reserve (Interrupt_ID (Unmasked (J))) := True;
+ end loop;
+
+ -- Add target-specific reserved signals
+
+ for J in Reserved'Range loop
+ Reserve (Interrupt_ID (Reserved (J))) := True;
+ end loop;
+
+ -- Process pragma Unreserve_All_Interrupts. This overrides any settings
+ -- due to pragma Interrupt_State:
+
+ if Unreserve_All_Interrupts /= 0 then
+ Keep_Unmasked (SIGINT) := False;
+ Reserve (SIGINT) := False;
+ end if;
+
+ -- We do not really have Signal 0. We just use this value to identify
+ -- non-existent signals (see s-intnam.ads). Therefore, Signal should not
+ -- be used in all signal related operations hence mark it as reserved.
+
+ Reserve (0) := True;
+ end Initialize;
+
+end System.Interrupt_Management;
diff --git a/gcc/ada/s-mastop.adb b/gcc/ada/s-mastop.adb
index 8347ca432e5..fba5bb133cf 100644
--- a/gcc/ada/s-mastop.adb
+++ b/gcc/ada/s-mastop.adb
@@ -33,9 +33,7 @@
-- This dummy version of System.Machine_State_Operations is used
-- on targets for which zero cost exception handling is not implemented.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.Machine_State_Operations is
diff --git a/gcc/ada/s-mastop.ads b/gcc/ada/s-mastop.ads
index 4ba5fd1581c..74ff217c693 100644
--- a/gcc/ada/s-mastop.ads
+++ b/gcc/ada/s-mastop.ads
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
pragma Polling (Off);
-- We must turn polling off for this unit, because otherwise we get
diff --git a/gcc/ada/s-memory.adb b/gcc/ada/s-memory.adb
index 3c199a3f893..3fb1cda9bcb 100644
--- a/gcc/ada/s-memory.adb
+++ b/gcc/ada/s-memory.adb
@@ -41,9 +41,7 @@
-- you can remove the calls to Abort_Defer.all and Abort_Undefer.all from
-- this unit.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Exceptions;
with System.Soft_Links;
diff --git a/gcc/ada/s-memory.ads b/gcc/ada/s-memory.ads
index aa510093100..4af600205ad 100644
--- a/gcc/ada/s-memory.ads
+++ b/gcc/ada/s-memory.ads
@@ -40,9 +40,7 @@
-- This unit may be used directly from an application program by providing
-- an appropriate WITH, and the interface can be expected to remain stable.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Memory is
pragma Elaborate_Body;
diff --git a/gcc/ada/s-os_lib.adb b/gcc/ada/s-os_lib.adb
index 0e1c6c756b8..163cfbf9230 100755
--- a/gcc/ada/s-os_lib.adb
+++ b/gcc/ada/s-os_lib.adb
@@ -31,9 +31,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.Case_Util;
with System.CRTL;
@@ -846,12 +844,8 @@ package body System.OS_Lib is
procedure Delete_File (Name : Address; Success : out Boolean) is
R : Integer;
-
- function unlink (A : Address) return Integer;
- pragma Import (C, unlink, "unlink");
-
begin
- R := unlink (Name);
+ R := System.CRTL.unlink (Name);
Success := (R = 0);
end Delete_File;
@@ -2246,7 +2240,7 @@ package body System.OS_Lib is
Success : out Boolean)
is
function rename (From, To : Address) return Integer;
- pragma Import (C, rename, "rename");
+ pragma Import (C, rename, "__gnat_rename");
R : Integer;
begin
R := rename (Old_Name, New_Name);
diff --git a/gcc/ada/s-os_lib.ads b/gcc/ada/s-os_lib.ads
index 5430ff00c7e..2abce23732e 100755
--- a/gcc/ada/s-os_lib.ads
+++ b/gcc/ada/s-os_lib.ads
@@ -48,9 +48,7 @@
-- be used by other predefined packages. User access to this package is via
-- a renaming of this package in GNAT.OS_Lib (file g-os_lib.ads).
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System;
with System.Strings;
diff --git a/gcc/ada/s-oscons-tmplt.c b/gcc/ada/s-oscons-tmplt.c
index 958b11e938b..e6e18491542 100644
--- a/gcc/ada/s-oscons-tmplt.c
+++ b/gcc/ada/s-oscons-tmplt.c
@@ -451,6 +451,11 @@ CND(ENOTSOCK, "Operation on non socket")
#endif
CND(EOPNOTSUPP, "Operation not supported")
+#ifndef EPIPE
+# define EPIPE -1
+#endif
+CND(EPIPE, "Broken pipe")
+
#ifndef EPFNOSUPPORT
# define EPFNOSUPPORT -1
#endif
diff --git a/gcc/ada/s-osinte-darwin.ads b/gcc/ada/s-osinte-darwin.ads
index f8c67117c79..27a7860522f 100644
--- a/gcc/ada/s-osinte-darwin.ads
+++ b/gcc/ada/s-osinte-darwin.ads
@@ -117,10 +117,15 @@ package System.OS_Interface is
type Signal_Set is array (Natural range <>) of Signal;
Unmasked : constant Signal_Set :=
- (SIGTTIN, SIGTTOU, SIGSTOP, SIGTSTP);
+ (SIGTTIN, SIGTTOU, SIGSTOP, SIGTSTP);
Reserved : constant Signal_Set :=
- (SIGKILL, SIGSTOP);
+ (SIGKILL, SIGSTOP);
+
+ Exception_Signals : constant Signal_Set :=
+ (SIGFPE, SIGILL, SIGSEGV, SIGBUS);
+ -- These signals (when runtime or system) will be caught and converted
+ -- into an Ada exception.
type sigset_t is private;
@@ -279,10 +284,11 @@ package System.OS_Interface is
pragma Import (C, sigaltstack, "sigaltstack");
Alternate_Stack : aliased System.Address;
- -- This is a dummy definition, never used (Alternate_Stack_Size is null)
+ pragma Import (C, Alternate_Stack, "__gnat_alternate_stack");
+ -- The alternate signal stack for stack overflows
- Alternate_Stack_Size : constant := 0;
- -- No alternate signal stack is used on this platform
+ Alternate_Stack_Size : constant := 64 * 1024;
+ -- This must be in keeping with init.c:__gnat_alternate_stack
Stack_Base_Available : constant Boolean := False;
-- Indicates whether the stack base is available on this target. This
diff --git a/gcc/ada/s-osinte-linux.ads b/gcc/ada/s-osinte-linux.ads
index bbaa0b4282e..a663aa8de9b 100644
--- a/gcc/ada/s-osinte-linux.ads
+++ b/gcc/ada/s-osinte-linux.ads
@@ -464,6 +464,9 @@ package System.OS_Interface is
function pthread_self return pthread_t;
pragma Import (C, pthread_self, "pthread_self");
+ function lwp_self return System.Address;
+ pragma Import (C, lwp_self, "__gnat_lwp_self");
+
--------------------------
-- POSIX.1c Section 17 --
--------------------------
diff --git a/gcc/ada/s-osinte-vxworks-kernel.adb b/gcc/ada/s-osinte-vxworks-kernel.adb
deleted file mode 100644
index 6512396aff7..00000000000
--- a/gcc/ada/s-osinte-vxworks-kernel.adb
+++ /dev/null
@@ -1,249 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
--- --
--- S Y S T E M . O S _ I N T E R F A C E --
--- --
--- B o d y --
--- --
--- Copyright (C) 1997-2009, 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- --
--- ware Foundation; either version 3, or (at your option) any later ver- --
--- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE. --
--- --
--- As a special exception 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/>. --
--- --
--- GNARL was developed by the GNARL team at Florida State University. --
--- Extensive contributions were provided by Ada Core Technologies, Inc. --
--- --
-------------------------------------------------------------------------------
-
--- This is the VxWorks version
-
--- This package encapsulates all direct interfaces to OS services that are
--- needed by children of System.
-
-pragma Polling (Off);
--- Turn off polling, we do not want ATC polling to take place during tasking
--- operations. It causes infinite loops and other problems.
-
-package body System.OS_Interface is
-
- use type Interfaces.C.int;
-
- Low_Priority : constant := 255;
- -- VxWorks native (default) lowest scheduling priority
-
- ----------
- -- kill --
- ----------
-
- function kill (pid : t_id; sig : Signal) return int is
- begin
- return System.VxWorks.Ext.kill (pid, int (sig));
- end kill;
-
- -------------
- -- sigwait --
- -------------
-
- function sigwait
- (set : access sigset_t;
- sig : access Signal) return int
- is
- Result : int;
-
- function sigwaitinfo
- (set : access sigset_t; sigvalue : System.Address) return int;
- pragma Import (C, sigwaitinfo, "sigwaitinfo");
-
- begin
- Result := sigwaitinfo (set, System.Null_Address);
-
- if Result /= -1 then
- sig.all := Signal (Result);
- return 0;
- else
- sig.all := 0;
- return errno;
- end if;
- end sigwait;
-
- -----------------
- -- To_Duration --
- -----------------
-
- function To_Duration (TS : timespec) return Duration is
- begin
- return Duration (TS.ts_sec) + Duration (TS.ts_nsec) / 10#1#E9;
- end To_Duration;
-
- -----------------
- -- To_Timespec --
- -----------------
-
- function To_Timespec (D : Duration) return timespec is
- S : time_t;
- F : Duration;
-
- begin
- S := time_t (Long_Long_Integer (D));
- F := D - Duration (S);
-
- -- If F is negative due to a round-up, adjust for positive F value
-
- if F < 0.0 then
- S := S - 1;
- F := F + 1.0;
- end if;
-
- return timespec'(ts_sec => S,
- ts_nsec => long (Long_Long_Integer (F * 10#1#E9)));
- end To_Timespec;
-
- -------------------------
- -- To_VxWorks_Priority --
- -------------------------
-
- function To_VxWorks_Priority (Priority : int) return int is
- begin
- return Low_Priority - Priority;
- end To_VxWorks_Priority;
-
- --------------------
- -- To_Clock_Ticks --
- --------------------
-
- -- ??? - For now, we'll always get the system clock rate since it is
- -- allowed to be changed during run-time in VxWorks. A better method would
- -- be to provide an operation to set it that so we can always know its
- -- value.
-
- -- Another thing we should probably allow for is a resultant tick count
- -- greater than int'Last. This should probably be a procedure with two
- -- output parameters, one in the range 0 .. int'Last, and another
- -- representing the overflow count.
-
- function To_Clock_Ticks (D : Duration) return int is
- Ticks : Long_Long_Integer;
- Rate_Duration : Duration;
- Ticks_Duration : Duration;
-
- begin
- if D < 0.0 then
- return -1;
- end if;
-
- -- Ensure that the duration can be converted to ticks
- -- at the current clock tick rate without overflowing.
-
- Rate_Duration := Duration (sysClkRateGet);
-
- if D > (Duration'Last / Rate_Duration) then
- Ticks := Long_Long_Integer (int'Last);
- else
- Ticks_Duration := D * Rate_Duration;
- Ticks := Long_Long_Integer (Ticks_Duration);
-
- if Ticks_Duration > Duration (Ticks) then
- Ticks := Ticks + 1;
- end if;
-
- if Ticks > Long_Long_Integer (int'Last) then
- Ticks := Long_Long_Integer (int'Last);
- end if;
- end if;
-
- return int (Ticks);
- end To_Clock_Ticks;
-
- -----------------------------
- -- Binary_Semaphore_Create --
- -----------------------------
-
- function Binary_Semaphore_Create return Binary_Semaphore_Id is
- begin
- return Binary_Semaphore_Id (semBCreate (SEM_Q_FIFO, SEM_EMPTY));
- end Binary_Semaphore_Create;
-
- -----------------------------
- -- Binary_Semaphore_Delete --
- -----------------------------
-
- function Binary_Semaphore_Delete (ID : Binary_Semaphore_Id) return int is
- begin
- return semDelete (SEM_ID (ID));
- end Binary_Semaphore_Delete;
-
- -----------------------------
- -- Binary_Semaphore_Obtain --
- -----------------------------
-
- function Binary_Semaphore_Obtain (ID : Binary_Semaphore_Id) return int is
- begin
- return semTake (SEM_ID (ID), WAIT_FOREVER);
- end Binary_Semaphore_Obtain;
-
- ------------------------------
- -- Binary_Semaphore_Release --
- ------------------------------
-
- function Binary_Semaphore_Release (ID : Binary_Semaphore_Id) return int is
- begin
- return semGive (SEM_ID (ID));
- end Binary_Semaphore_Release;
-
- ----------------------------
- -- Binary_Semaphore_Flush --
- ----------------------------
-
- function Binary_Semaphore_Flush (ID : Binary_Semaphore_Id) return int is
- begin
- return semFlush (SEM_ID (ID));
- end Binary_Semaphore_Flush;
-
- -----------------------
- -- Interrupt_Connect --
- -----------------------
-
- function Interrupt_Connect
- (Vector : Interrupt_Vector;
- Handler : Interrupt_Handler;
- Parameter : System.Address := System.Null_Address) return int
- is
- function intConnect
- (vector : Interrupt_Vector;
- handler : Interrupt_Handler;
- parameter : System.Address) return int;
- pragma Import (C, intConnect, "intConnect");
-
- begin
- return intConnect (Vector, Handler, Parameter);
- end Interrupt_Connect;
-
- --------------------------------
- -- Interrupt_Number_To_Vector --
- --------------------------------
-
- function Interrupt_Number_To_Vector
- (intNum : int) return Interrupt_Vector
- is
- function INUM_TO_IVEC (intNum : int) return Interrupt_Vector;
- pragma Import (C, INUM_TO_IVEC, "__gnat_inum_to_ivec");
-
- begin
- return INUM_TO_IVEC (intNum);
- end Interrupt_Number_To_Vector;
-
-end System.OS_Interface;
diff --git a/gcc/ada/s-osinte-vxworks.adb b/gcc/ada/s-osinte-vxworks.adb
index bc58dca76a5..c53cce259f7 100644
--- a/gcc/ada/s-osinte-vxworks.adb
+++ b/gcc/ada/s-osinte-vxworks.adb
@@ -45,15 +45,6 @@ package body System.OS_Interface is
Low_Priority : constant := 255;
-- VxWorks native (default) lowest scheduling priority
- ----------
- -- kill --
- ----------
-
- function kill (pid : t_id; sig : Signal) return int is
- begin
- return System.VxWorks.Ext.kill (pid, int (sig));
- end kill;
-
-------------
-- sigwait --
-------------
@@ -73,7 +64,7 @@ package body System.OS_Interface is
if Result /= -1 then
sig.all := Signal (Result);
- return 0;
+ return OK;
else
sig.all := 0;
return errno;
@@ -142,7 +133,7 @@ package body System.OS_Interface is
begin
if D < 0.0 then
- return -1;
+ return ERROR;
end if;
-- Ensure that the duration can be converted to ticks
@@ -213,6 +204,15 @@ package body System.OS_Interface is
return semFlush (SEM_ID (ID));
end Binary_Semaphore_Flush;
+ ----------
+ -- kill --
+ ----------
+
+ function kill (pid : t_id; sig : Signal) return int is
+ begin
+ return System.VxWorks.Ext.kill (pid, int (sig));
+ end kill;
+
-----------------------
-- Interrupt_Connect --
-----------------------
@@ -220,11 +220,13 @@ package body System.OS_Interface is
function Interrupt_Connect
(Vector : Interrupt_Vector;
Handler : Interrupt_Handler;
- Parameter : System.Address := System.Null_Address) return int
- is
- pragma Unreferenced (Vector, Handler, Parameter);
+ Parameter : System.Address := System.Null_Address) return int is
begin
- return 0;
+ return
+ System.VxWorks.Ext.Interrupt_Connect
+ (System.VxWorks.Ext.Interrupt_Vector (Vector),
+ System.VxWorks.Ext.Interrupt_Handler (Handler),
+ Parameter);
end Interrupt_Connect;
--------------------------------
@@ -234,7 +236,8 @@ package body System.OS_Interface is
function Interrupt_Number_To_Vector
(intNum : int) return Interrupt_Vector is
begin
- return Interrupt_Vector (intNum);
+ return Interrupt_Vector
+ (System.VxWorks.Ext.Interrupt_Number_To_Vector (intNum));
end Interrupt_Number_To_Vector;
end System.OS_Interface;
diff --git a/gcc/ada/s-osinte-vxworks.ads b/gcc/ada/s-osinte-vxworks.ads
index 532bded849d..c295b19b0b4 100644
--- a/gcc/ada/s-osinte-vxworks.ads
+++ b/gcc/ada/s-osinte-vxworks.ads
@@ -32,7 +32,7 @@
-- --
------------------------------------------------------------------------------
--- This is the VxWorks 5.x and 6.x version of this package
+-- This is the VxWorks version of this package
-- This package encapsulates all direct interfaces to OS services
-- that are needed by the tasking run-time (libgnarl).
@@ -72,7 +72,7 @@ package System.OS_Interface is
FUNC_ERR : constant := -1;
----------------------------
- -- Signals and Interrupts --
+ -- Signals and interrupts --
----------------------------
NSIG : constant := 64;
@@ -304,6 +304,8 @@ package System.OS_Interface is
pragma Import (C, sysClkRateGet, "sysClkRateGet");
-- VxWorks 5.x specific functions
+ -- Must not be called from run-time for versions that do not support
+ -- taskVarLib: eg VxWorks 6 RTPs
function taskVarAdd
(tid : t_id; pVar : access System.Address) return int;
@@ -325,6 +327,8 @@ package System.OS_Interface is
pragma Import (C, taskVarGet, "taskVarGet");
-- VxWorks 6.x specific functions
+ -- Can only be called from the VxWorks 6 run-time libary that supports
+ -- tlsLib, and not by the VxWorks 6.6 SMP library
function tlsKeyCreate return int;
pragma Import (C, tlsKeyCreate, "tlsKeyCreate");
@@ -364,8 +368,8 @@ package System.OS_Interface is
function Set_Time_Slice (ticks : int) return int
renames System.VxWorks.Ext.Set_Time_Slice;
- -- Calls kernelTimeSlice under VxWorks 5.x
- -- Do nothing under VxWorks 6.x
+ -- Calls kernelTimeSlice under VxWorks 5.x, VxWorks 653, or in VxWorks 6
+ -- kernel apps. Returns ERROR for RTPs, VxWorks 5 /CERT
function taskPriorityGet (tid : t_id; pPriority : access int) return int;
pragma Import (C, taskPriorityGet, "taskPriorityGet");
@@ -433,7 +437,7 @@ package System.OS_Interface is
-- Release all threads blocked on the semaphore
------------------------------------------------------------
- -- Binary Semaphore Wrapper to Support Interrupt Tasks --
+ -- Binary Semaphore Wrapper to Support interrupt Tasks --
------------------------------------------------------------
type Binary_Semaphore_Id is new Long_Integer;
@@ -468,7 +472,7 @@ package System.OS_Interface is
Parameter : System.Address := System.Null_Address) return int;
pragma Inline (Interrupt_Connect);
-- Use this to set up an user handler. The routine installs a
- -- a user handler which is invoked after RTEMS has saved enough
+ -- a user handler which is invoked after the OS has saved enough
-- context for a high-level language routine to be safely invoked.
function Interrupt_Number_To_Vector (intNum : int) return Interrupt_Vector;
diff --git a/gcc/ada/s-osprim-darwin.adb b/gcc/ada/s-osprim-darwin.adb
index 2425cf6e6d0..d47c608a74e 100644
--- a/gcc/ada/s-osprim-darwin.adb
+++ b/gcc/ada/s-osprim-darwin.adb
@@ -78,6 +78,14 @@ package body System.OS_Primitives is
pragma Unreferenced (Result);
begin
+ -- The return codes for gettimeofday are as follows (from man pages):
+ -- EPERM settimeofday is called by someone other than the superuser
+ -- EINVAL Timezone (or something else) is invalid
+ -- EFAULT One of tv or tz pointed outside accessible address space
+
+ -- None of these codes signal a potential clock skew, hence the return
+ -- value is never checked.
+
Result := gettimeofday (TV'Access, null);
return Duration (TV.tv_sec) + Duration (TV.tv_usec) / 10#1#E6;
end Clock;
diff --git a/gcc/ada/s-osprim-posix.adb b/gcc/ada/s-osprim-posix.adb
index 7042830d36e..c02ad98380c 100644
--- a/gcc/ada/s-osprim-posix.adb
+++ b/gcc/ada/s-osprim-posix.adb
@@ -78,6 +78,14 @@ package body System.OS_Primitives is
pragma Unreferenced (Result);
begin
+ -- The return codes for gettimeofday are as follows (from man pages):
+ -- EPERM settimeofday is called by someone other than the superuser
+ -- EINVAL Timezone (or something else) is invalid
+ -- EFAULT One of tv or tz pointed outside accessible address space
+
+ -- None of these codes signal a potential clock skew, hence the return
+ -- value is never checked.
+
Result := gettimeofday (TV'Access, null);
return Duration (TV.tv_sec) + Duration (TV.tv_usec) / 10#1#E6;
end Clock;
diff --git a/gcc/ada/s-purexc.ads b/gcc/ada/s-purexc.ads
index 400c730f952..a327f48bf0a 100644
--- a/gcc/ada/s-purexc.ads
+++ b/gcc/ada/s-purexc.ads
@@ -33,9 +33,7 @@
-- an exception message. It can be used from Pure units. This unit is for
-- internal use only, it is not generally available to applications.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Pure_Exceptions is
pragma Pure;
diff --git a/gcc/ada/s-scaval.adb b/gcc/ada/s-scaval.adb
index e222cc52f60..415763c3e6b 100644
--- a/gcc/ada/s-scaval.adb
+++ b/gcc/ada/s-scaval.adb
@@ -71,7 +71,7 @@ package body System.Scalar_Values is
-- On other targets the type is 8 bytes, and type Byte8 is used for
-- values that are then converted to ByteLF.
- pragma Warnings (Off);
+ pragma Warnings (Off); -- why ???
function To_ByteLF is new Ada.Unchecked_Conversion (Byte8, ByteLF);
pragma Warnings (On);
diff --git a/gcc/ada/s-secsta.adb b/gcc/ada/s-secsta.adb
index 9f265fddb55..16e9fa0c9fb 100644
--- a/gcc/ada/s-secsta.adb
+++ b/gcc/ada/s-secsta.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.Soft_Links;
with System.Parameters;
diff --git a/gcc/ada/s-secsta.ads b/gcc/ada/s-secsta.ads
index 3143dbd0857..bfbab33e37f 100644
--- a/gcc/ada/s-secsta.ads
+++ b/gcc/ada/s-secsta.ads
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.Storage_Elements;
diff --git a/gcc/ada/s-soflin.adb b/gcc/ada/s-soflin.adb
index 5d144411bd8..4ae51f39f7f 100644
--- a/gcc/ada/s-soflin.adb
+++ b/gcc/ada/s-soflin.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
pragma Polling (Off);
-- We must turn polling off for this unit, because otherwise we get an
@@ -309,7 +307,7 @@ package body System.Soft_Links is
-------------------------
procedure Task_Termination_NT (Excep : EO) is
- pragma Warnings (Off, Excep);
+ pragma Unreferenced (Excep);
begin
null;
end Task_Termination_NT;
diff --git a/gcc/ada/s-soflin.ads b/gcc/ada/s-soflin.ads
index 2c947c9af70..6c868cd6ced 100644
--- a/gcc/ada/s-soflin.ads
+++ b/gcc/ada/s-soflin.ads
@@ -37,11 +37,6 @@
-- initialized to non-tasking versions, and then if the tasking support is
-- initialized, they are set to the real tasking versions.
-pragma Warnings (Off);
--- When compiling this package with older compilers, there are many warnings,
--- so we suppress them throughout most of this file. Pragmas Compiler_Unit,
--- Preelaborate_05, and Favor_Top_Level are not supported by older compilers.
-
pragma Compiler_Unit;
with Ada.Exceptions;
@@ -130,7 +125,6 @@ package System.Soft_Links is
Len : Natural)
return String;
pragma Favor_Top_Level (Traceback_Decorator_Wrapper_Call);
- pragma Warnings (On);
-- Declarations for the no tasking versions of the required routines
@@ -312,35 +306,35 @@ package System.Soft_Links is
------------------------
-- Here we define a single type that encapsulates the various task
- -- specific data. This type is used to store the necessary data into
- -- the Task_Control_Block or into a global variable in the non tasking
- -- case.
+ -- specific data. This type is used to store the necessary data into the
+ -- Task_Control_Block or into a global variable in the non tasking case.
type TSD is record
Pri_Stack_Info : aliased Stack_Checking.Stack_Info;
- -- Information on stack (Base/Limit/Size) that is used
- -- by System.Stack_Checking. If this TSD does not belong to
- -- the environment task, the Size field must be initialized
- -- to the tasks requested stack size before the task can do
- -- its first stack check.
+ -- Information on stack (Base/Limit/Size) used by System.Stack_Checking.
+ -- If this TSD does not belong to the environment task, the Size field
+ -- must be initialized to the tasks requested stack size before the task
+ -- can do its first stack check.
pragma Warnings (Off);
+ -- Needed because we are giving a non-static default to an object in
+ -- a preelaborated unit, which is formally not permitted, but OK here.
+
Jmpbuf_Address : System.Address := System.Null_Address;
- -- Address of jump buffer used to store the address of the
- -- current longjmp/setjmp buffer for exception management.
- -- These buffers are threaded into a stack, and the address
- -- here is the top of the stack. A null address means that
- -- no exception handler is currently active.
+ -- Address of jump buffer used to store the address of the current
+ -- longjmp/setjmp buffer for exception management. These buffers are
+ -- threaded into a stack, and the address here is the top of the stack.
+ -- A null address means that no exception handler is currently active.
Sec_Stack_Addr : System.Address := System.Null_Address;
pragma Warnings (On);
-- Address of currently allocated secondary stack
Current_Excep : aliased EO;
- -- Exception occurrence that contains the information for the
- -- current exception. Note that any exception in the same task
- -- destroys this information, so the data in this variable must
- -- be copied out before another exception can occur.
+ -- Exception occurrence that contains the information for the current
+ -- exception. Note that any exception in the same task destroys this
+ -- information, so the data in this variable must be copied out before
+ -- another exception can occur.
--
-- Also act as a list of the active exceptions in the case of the GCC
-- exception mechanism, organized as a stack with the most recent first.
diff --git a/gcc/ada/s-sopco3.adb b/gcc/ada/s-sopco3.adb
index 7fef7e25e84..5e7b6bbcc91 100644
--- a/gcc/ada/s-sopco3.adb
+++ b/gcc/ada/s-sopco3.adb
@@ -33,9 +33,7 @@
-- which now generates concatenation inline. It is retained only because
-- it may be used during bootstrapping using old versions of the compiler.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.String_Ops_Concat_3 is
diff --git a/gcc/ada/s-sopco3.ads b/gcc/ada/s-sopco3.ads
index d00942ea4d0..68b1066c60a 100644
--- a/gcc/ada/s-sopco3.ads
+++ b/gcc/ada/s-sopco3.ads
@@ -35,9 +35,7 @@
-- which now generates concatenation inline. It is retained only because
-- it may be used during bootstrapping using old versions of the compiler.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.String_Ops_Concat_3 is
pragma Pure;
diff --git a/gcc/ada/s-sopco4.adb b/gcc/ada/s-sopco4.adb
index a31d29f4a28..4bfbcc31ccd 100644
--- a/gcc/ada/s-sopco4.adb
+++ b/gcc/ada/s-sopco4.adb
@@ -33,9 +33,7 @@
-- which now generates concatenation inline. It is retained only because
-- it may be used during bootstrapping using old versions of the compiler.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.String_Ops_Concat_4 is
diff --git a/gcc/ada/s-sopco4.ads b/gcc/ada/s-sopco4.ads
index eca94b43276..e198bbae81c 100644
--- a/gcc/ada/s-sopco4.ads
+++ b/gcc/ada/s-sopco4.ads
@@ -35,9 +35,7 @@
-- which now generates concatenation inline. It is retained only because
-- it may be used during bootstrapping using old versions of the compiler.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.String_Ops_Concat_4 is
pragma Pure;
diff --git a/gcc/ada/s-sopco5.adb b/gcc/ada/s-sopco5.adb
index c31dc135ad7..8467028c6ba 100644
--- a/gcc/ada/s-sopco5.adb
+++ b/gcc/ada/s-sopco5.adb
@@ -33,9 +33,7 @@
-- which now generates concatenation inline. It is retained only because
-- it may be used during bootstrapping using old versions of the compiler.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.String_Ops_Concat_5 is
diff --git a/gcc/ada/s-sopco5.ads b/gcc/ada/s-sopco5.ads
index 7d66a60c93c..3491bb9ad96 100644
--- a/gcc/ada/s-sopco5.ads
+++ b/gcc/ada/s-sopco5.ads
@@ -35,9 +35,7 @@
-- which now generates concatenation inline. It is retained only because
-- it may be used during bootstrapping using old versions of the compiler.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.String_Ops_Concat_5 is
pragma Pure;
diff --git a/gcc/ada/s-stache.adb b/gcc/ada/s-stache.adb
index a3d6598d895..ffad2054481 100644
--- a/gcc/ada/s-stache.adb
+++ b/gcc/ada/s-stache.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
-- As noted in the spec, this dummy body is present because otherwise we
-- have bootstrapping path problems (there used to be a real body).
diff --git a/gcc/ada/s-stache.ads b/gcc/ada/s-stache.ads
index d2270e034cf..878b8a5270c 100644
--- a/gcc/ada/s-stache.ads
+++ b/gcc/ada/s-stache.ads
@@ -35,9 +35,7 @@
-- This package defines basic types and objects. Operations related to
-- stack checking can be found in package System.Stack_Checking.Operations.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.Storage_Elements;
diff --git a/gcc/ada/s-stalib.adb b/gcc/ada/s-stalib.adb
index 8730b46aac2..ffea8d008cd 100644
--- a/gcc/ada/s-stalib.adb
+++ b/gcc/ada/s-stalib.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
-- The purpose of this body is simply to ensure that the two with'ed units
-- are properly included in the link. They are not with'ed from the spec
@@ -43,7 +41,8 @@ pragma Polling (Off);
-- elaboration circularities with Ada.Exceptions if polling is on.
pragma Warnings (Off);
--- Kill warnings from unused withs
+-- Kill warnings from unused withs. These unused with's are here to make
+-- sure the relevant units are loaded and properly elaborated.
with System.Soft_Links;
-- Referenced directly from generated code using external symbols so it
diff --git a/gcc/ada/s-stalib.ads b/gcc/ada/s-stalib.ads
index be0f0ad69f4..fb58642d01e 100644
--- a/gcc/ada/s-stalib.ads
+++ b/gcc/ada/s-stalib.ads
@@ -44,9 +44,7 @@
-- package and the packages it references are included in all Ada programs,
-- together with the included data.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
pragma Polling (Off);
-- We must turn polling off for this unit, because otherwise we get
diff --git a/gcc/ada/s-stoele.adb b/gcc/ada/s-stoele.adb
index 4f9a05f7b41..0bab843c138 100644
--- a/gcc/ada/s-stoele.adb
+++ b/gcc/ada/s-stoele.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Unchecked_Conversion;
diff --git a/gcc/ada/s-stoele.ads b/gcc/ada/s-stoele.ads
index 275728b78a7..af60beb5518 100644
--- a/gcc/ada/s-stoele.ads
+++ b/gcc/ada/s-stoele.ads
@@ -37,9 +37,7 @@
-- extra declarations that can be introduced into System using Extend_System.
-- It is a good idea to avoid use clauses for this package!
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Storage_Elements is
pragma Pure;
@@ -66,12 +64,8 @@ package System.Storage_Elements is
type Storage_Element is mod 2 ** Storage_Unit;
for Storage_Element'Size use Storage_Unit;
- pragma Warnings (Off);
pragma Universal_Aliasing (Storage_Element);
- pragma Warnings (On);
- -- This type is used by the expansion to implement aggregate copy.
- -- We turn off warnings for this pragma to deal with being compiled
- -- with an earlier GNAT version that does not recognize this pragma.
+ -- This type is used by the expander to implement aggregate copy
type Storage_Array is
array (Storage_Offset range <>) of aliased Storage_Element;
diff --git a/gcc/ada/s-strcom.adb b/gcc/ada/s-strcom.adb
index acd1ac4e0ea..37ccc61380a 100644
--- a/gcc/ada/s-strcom.adb
+++ b/gcc/ada/s-strcom.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Unchecked_Conversion;
diff --git a/gcc/ada/s-strcom.ads b/gcc/ada/s-strcom.ads
index 644667e9991..6d1a303c560 100644
--- a/gcc/ada/s-strcom.ads
+++ b/gcc/ada/s-strcom.ads
@@ -31,9 +31,7 @@
-- This package contains functions for runtime comparisons on strings
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.String_Compare is
diff --git a/gcc/ada/s-string.adb b/gcc/ada/s-string.adb
index 24c4e31c42e..e1799eb4545 100755
--- a/gcc/ada/s-string.adb
+++ b/gcc/ada/s-string.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.Strings is
diff --git a/gcc/ada/s-string.ads b/gcc/ada/s-string.ads
index 5273eb4e4bf..79ec1127298 100755
--- a/gcc/ada/s-string.ads
+++ b/gcc/ada/s-string.ads
@@ -35,9 +35,7 @@
-- be used by other predefined packages. User access to this package is via
-- a renaming of this package in GNAT.String (file g-string.ads).
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Unchecked_Deallocation;
diff --git a/gcc/ada/s-strops.adb b/gcc/ada/s-strops.adb
index 4e1a999b46a..44a6a76bf15 100644
--- a/gcc/ada/s-strops.adb
+++ b/gcc/ada/s-strops.adb
@@ -33,9 +33,7 @@
-- which now generates concatenation inline. It is retained only because
-- it may be used during bootstrapping using old versions of the compiler.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.String_Ops is
diff --git a/gcc/ada/s-strops.ads b/gcc/ada/s-strops.ads
index 5f59fde37c5..54ac74578a6 100644
--- a/gcc/ada/s-strops.ads
+++ b/gcc/ada/s-strops.ads
@@ -36,9 +36,7 @@
-- which now generates concatenation inline. It is retained only because
-- it may be used during bootstrapping using old versions of the compiler.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.String_Ops is
pragma Pure;
diff --git a/gcc/ada/s-ststop.adb b/gcc/ada/s-ststop.adb
index cff6179a7f3..25f3bcd23c7 100644
--- a/gcc/ada/s-ststop.adb
+++ b/gcc/ada/s-ststop.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Streams; use Ada.Streams;
with Ada.Streams.Stream_IO; use Ada.Streams.Stream_IO;
diff --git a/gcc/ada/s-ststop.ads b/gcc/ada/s-ststop.ads
index 0b932f94087..db7059069b7 100644
--- a/gcc/ada/s-ststop.ads
+++ b/gcc/ada/s-ststop.ads
@@ -46,9 +46,7 @@
-- or
-- String_Output_Blk_IO (Some_Stream, Some_String);
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Ada.Streams;
diff --git a/gcc/ada/s-taprop-hpux-dce.adb b/gcc/ada/s-taprop-hpux-dce.adb
index 21b393c6769..07fcc9cb20d 100644
--- a/gcc/ada/s-taprop-hpux-dce.adb
+++ b/gcc/ada/s-taprop-hpux-dce.adb
@@ -714,18 +714,6 @@ package body System.Task_Primitives.Operations is
begin
Self_ID.Common.LL.Thread := pthread_self;
Specific.Set (Self_ID);
-
- Lock_RTS;
-
- for J in Known_Tasks'Range loop
- if Known_Tasks (J) = null then
- Known_Tasks (J) := Self_ID;
- Self_ID.Known_Tasks_Index := J;
- exit;
- end if;
- end loop;
-
- Unlock_RTS;
end Enter_Task;
--------------
@@ -1080,7 +1068,16 @@ package body System.Task_Primitives.Operations is
S.State := False;
else
S.Waiting := True;
- Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+
+ loop
+ -- loop in case pthread_cond_wait returns earlier than
+ -- expected (e.g. in case of EINTR caused by a signal).
+
+ Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+ pragma Assert (Result = 0 or else Result = EINTR);
+
+ exit when not S.Waiting;
+ end loop;
end if;
Result := pthread_mutex_unlock (S.L'Access);
@@ -1230,6 +1227,12 @@ package body System.Task_Primitives.Operations is
Specific.Initialize (Environment_Task);
+ -- Make environment task known here because it doesn't go through
+ -- Activate_Tasks, which does it for all other tasks.
+
+ Known_Tasks (Known_Tasks'First) := Environment_Task;
+ Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+
Enter_Task (Environment_Task);
-- Install the abort-signal handler
diff --git a/gcc/ada/s-taprop-irix.adb b/gcc/ada/s-taprop-irix.adb
index e86badb118b..59297e941ff 100644
--- a/gcc/ada/s-taprop-irix.adb
+++ b/gcc/ada/s-taprop-irix.adb
@@ -709,18 +709,6 @@ package body System.Task_Primitives.Operations is
(To_Int (Self_ID.Common.Task_Info.Runon_CPU));
pragma Assert (Result = 0);
end if;
-
- Lock_RTS;
-
- for J in Known_Tasks'Range loop
- if Known_Tasks (J) = null then
- Known_Tasks (J) := Self_ID;
- Self_ID.Known_Tasks_Index := J;
- exit;
- end if;
- end loop;
-
- Unlock_RTS;
end Enter_Task;
--------------
@@ -1165,7 +1153,16 @@ package body System.Task_Primitives.Operations is
S.State := False;
else
S.Waiting := True;
- Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+
+ loop
+ -- loop in case pthread_cond_wait returns earlier than
+ -- expected (e.g. in case of EINTR caused by a signal).
+
+ Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+ pragma Assert (Result = 0 or else Result = EINTR);
+
+ exit when not S.Waiting;
+ end loop;
end if;
Result := pthread_mutex_unlock (S.L'Access);
@@ -1315,6 +1312,12 @@ package body System.Task_Primitives.Operations is
Specific.Initialize (Environment_Task);
+ -- Make environment task known here because it doesn't go through
+ -- Activate_Tasks, which does it for all other tasks.
+
+ Known_Tasks (Known_Tasks'First) := Environment_Task;
+ Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+
Enter_Task (Environment_Task);
-- Prepare the set of signals that should unblocked in all tasks
diff --git a/gcc/ada/s-taprop-linux.adb b/gcc/ada/s-taprop-linux.adb
index 08bbac10f40..b9c3c5e6ae9 100644
--- a/gcc/ada/s-taprop-linux.adb
+++ b/gcc/ada/s-taprop-linux.adb
@@ -701,21 +701,10 @@ package body System.Task_Primitives.Operations is
end if;
Self_ID.Common.LL.Thread := pthread_self;
+ Self_ID.Common.LL.LWP := lwp_self;
Specific.Set (Self_ID);
- Lock_RTS;
-
- for J in Known_Tasks'Range loop
- if Known_Tasks (J) = null then
- Known_Tasks (J) := Self_ID;
- Self_ID.Known_Tasks_Index := J;
- exit;
- end if;
- end loop;
-
- Unlock_RTS;
-
if Use_Alternate_Stack then
declare
Stack : aliased stack_t;
@@ -1094,7 +1083,19 @@ package body System.Task_Primitives.Operations is
S.State := False;
else
S.Waiting := True;
- Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+
+ loop
+ -- loop in case pthread_cond_wait returns earlier than
+ -- expected (e.g. in case of EINTR caused by a signal).
+ -- This should not happen on current implementation of pthread
+ -- under Linux, but POSIX does not guarantee it, so this may
+ -- change in the future.
+
+ Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+ pragma Assert (Result = 0 or else Result = EINTR);
+
+ exit when not S.Waiting;
+ end loop;
end if;
Result := pthread_mutex_unlock (S.L'Access);
@@ -1255,6 +1256,12 @@ package body System.Task_Primitives.Operations is
Alternate_Stack'Address;
end if;
+ -- Make environment task known here because it doesn't go through
+ -- Activate_Tasks, which does it for all other tasks.
+
+ Known_Tasks (Known_Tasks'First) := Environment_Task;
+ Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+
Enter_Task (Environment_Task);
-- Install the abort-signal handler
diff --git a/gcc/ada/s-taprop-mingw.adb b/gcc/ada/s-taprop-mingw.adb
index 89e7dc13811..cb51841a54d 100644
--- a/gcc/ada/s-taprop-mingw.adb
+++ b/gcc/ada/s-taprop-mingw.adb
@@ -807,18 +807,6 @@ package body System.Task_Primitives.Operations is
end if;
Self_ID.Common.LL.Thread_Id := GetCurrentThreadId;
-
- Lock_RTS;
-
- for J in Known_Tasks'Range loop
- if Known_Tasks (J) = null then
- Known_Tasks (J) := Self_ID;
- Self_ID.Known_Tasks_Index := J;
- exit;
- end if;
- end loop;
-
- Unlock_RTS;
end Enter_Task;
--------------
@@ -1081,6 +1069,13 @@ package body System.Task_Primitives.Operations is
Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
Environment_Task.Common.LL.Thread := GetCurrentThread;
+
+ -- Make environment task known here because it doesn't go through
+ -- Activate_Tasks, which does it for all other tasks.
+
+ Known_Tasks (Known_Tasks'First) := Environment_Task;
+ Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+
Enter_Task (Environment_Task);
end Initialize;
diff --git a/gcc/ada/s-taprop-posix.adb b/gcc/ada/s-taprop-posix.adb
index 64bf28f2670..c8894d64929 100644
--- a/gcc/ada/s-taprop-posix.adb
+++ b/gcc/ada/s-taprop-posix.adb
@@ -788,18 +788,6 @@ package body System.Task_Primitives.Operations is
Specific.Set (Self_ID);
- Lock_RTS;
-
- for J in Known_Tasks'Range loop
- if Known_Tasks (J) = null then
- Known_Tasks (J) := Self_ID;
- Self_ID.Known_Tasks_Index := J;
- exit;
- end if;
- end loop;
-
- Unlock_RTS;
-
if Use_Alternate_Stack then
declare
Stack : aliased stack_t;
@@ -1269,7 +1257,16 @@ package body System.Task_Primitives.Operations is
S.State := False;
else
S.Waiting := True;
- Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+
+ loop
+ -- loop in case pthread_cond_wait returns earlier than
+ -- expected (e.g. in case of EINTR caused by a signal).
+
+ Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+ pragma Assert (Result = 0 or else Result = EINTR);
+
+ exit when not S.Waiting;
+ end loop;
end if;
Result := pthread_mutex_unlock (S.L'Access);
@@ -1435,6 +1432,12 @@ package body System.Task_Primitives.Operations is
Alternate_Stack'Address;
end if;
+ -- Make environment task known here because it doesn't go through
+ -- Activate_Tasks, which does it for all other tasks.
+
+ Known_Tasks (Known_Tasks'First) := Environment_Task;
+ Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+
Enter_Task (Environment_Task);
-- Install the abort-signal handler
diff --git a/gcc/ada/s-taprop-solaris.adb b/gcc/ada/s-taprop-solaris.adb
index 16da81c446a..bd2470057e3 100644
--- a/gcc/ada/s-taprop-solaris.adb
+++ b/gcc/ada/s-taprop-solaris.adb
@@ -479,6 +479,12 @@ package body System.Task_Primitives.Operations is
Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
+ -- Make environment task known here because it doesn't go through
+ -- Activate_Tasks, which does it for all other tasks.
+
+ Known_Tasks (Known_Tasks'First) := Environment_Task;
+ Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+
Enter_Task (Environment_Task);
-- Install the abort-signal handler
@@ -900,18 +906,6 @@ package body System.Task_Primitives.Operations is
-- We need the above code even if we do direct fetch of Task_Id in Self
-- for the main task on Sun, x86 Solaris and for gcc 2.7.2.
-
- Lock_RTS;
-
- for J in Known_Tasks'Range loop
- if Known_Tasks (J) = null then
- Known_Tasks (J) := Self_ID;
- Self_ID.Known_Tasks_Index := J;
- exit;
- end if;
- end loop;
-
- Unlock_RTS;
end Enter_Task;
--------------
@@ -1824,7 +1818,16 @@ package body System.Task_Primitives.Operations is
S.State := False;
else
S.Waiting := True;
- Result := cond_wait (S.CV'Access, S.L'Access);
+
+ loop
+ -- loop in case pthread_cond_wait returns earlier than
+ -- expected (e.g. in case of EINTR caused by a signal).
+
+ Result := cond_wait (S.CV'Access, S.L'Access);
+ pragma Assert (Result = 0 or else Result = EINTR);
+
+ exit when not S.Waiting;
+ end loop;
end if;
Result := mutex_unlock (S.L'Access);
diff --git a/gcc/ada/s-taprop-tru64.adb b/gcc/ada/s-taprop-tru64.adb
index ce4195b8029..20b0bbc04ad 100644
--- a/gcc/ada/s-taprop-tru64.adb
+++ b/gcc/ada/s-taprop-tru64.adb
@@ -707,19 +707,8 @@ package body System.Task_Primitives.Operations is
begin
Hide_Unhide_Yellow_Zone (Hide => True);
Self_ID.Common.LL.Thread := pthread_self;
- Specific.Set (Self_ID);
-
- Lock_RTS;
-
- for J in Known_Tasks'Range loop
- if Known_Tasks (J) = null then
- Known_Tasks (J) := Self_ID;
- Self_ID.Known_Tasks_Index := J;
- exit;
- end if;
- end loop;
- Unlock_RTS;
+ Specific.Set (Self_ID);
end Enter_Task;
--------------
@@ -1181,7 +1170,16 @@ package body System.Task_Primitives.Operations is
S.State := False;
else
S.Waiting := True;
- Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+
+ loop
+ -- loop in case pthread_cond_wait returns earlier than
+ -- expected (e.g. in case of EINTR caused by a signal).
+
+ Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+ pragma Assert (Result = 0 or else Result = EINTR);
+
+ exit when not S.Waiting;
+ end loop;
end if;
Result := pthread_mutex_unlock (S.L'Access);
@@ -1343,6 +1341,12 @@ package body System.Task_Primitives.Operations is
Specific.Initialize (Environment_Task);
+ -- Make environment task known here because it doesn't go through
+ -- Activate_Tasks, which does it for all other tasks.
+
+ Known_Tasks (Known_Tasks'First) := Environment_Task;
+ Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+
Enter_Task (Environment_Task);
-- Install the abort-signal handler
diff --git a/gcc/ada/s-taprop-vms.adb b/gcc/ada/s-taprop-vms.adb
index 4a36f8b1254..0d0dd08699e 100644
--- a/gcc/ada/s-taprop-vms.adb
+++ b/gcc/ada/s-taprop-vms.adb
@@ -689,20 +689,7 @@ package body System.Task_Primitives.Operations is
procedure Enter_Task (Self_ID : Task_Id) is
begin
Self_ID.Common.LL.Thread := pthread_self;
-
Specific.Set (Self_ID);
-
- Lock_RTS;
-
- for J in Known_Tasks'Range loop
- if Known_Tasks (J) = null then
- Known_Tasks (J) := Self_ID;
- Self_ID.Known_Tasks_Index := J;
- exit;
- end if;
- end loop;
-
- Unlock_RTS;
end Enter_Task;
--------------
@@ -1117,7 +1104,16 @@ package body System.Task_Primitives.Operations is
S.State := False;
else
S.Waiting := True;
- Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+
+ loop
+ -- loop in case pthread_cond_wait returns earlier than
+ -- expected (e.g. in case of EINTR caused by a signal).
+
+ Result := pthread_cond_wait (S.CV'Access, S.L'Access);
+ pragma Assert (Result = 0 or else Result = EINTR);
+
+ exit when not S.Waiting;
+ end loop;
end if;
Result := pthread_mutex_unlock (S.L'Access);
@@ -1238,6 +1234,25 @@ package body System.Task_Primitives.Operations is
----------------
procedure Initialize (Environment_Task : Task_Id) is
+
+ -- The DEC Ada facility code defined in Starlet
+ Ada_Facility : constant := 49;
+
+ function DBGEXT (Control_Block : System.Address)
+ return System.Aux_DEC.Unsigned_Word;
+ -- DBGEXT is imported from s-tasdeb.adb and its parameter re-typed
+ -- as Address to avoid having a VMS specific s-tasdeb.ads.
+ pragma Interface (C, DBGEXT);
+ pragma Import_Function (DBGEXT, "GNAT$DBGEXT");
+
+ type Facility_Type is range 0 .. 65535;
+
+ procedure Debug_Register
+ (ADBGEXT : System.Address;
+ ATCB_Key : pthread_key_t;
+ Facility : Facility_Type;
+ Std_Prolog : Integer);
+ pragma Import (C, Debug_Register, "CMA$DEBUG_REGISTER");
begin
Environment_Task_Id := Environment_Task;
@@ -1249,6 +1264,21 @@ package body System.Task_Primitives.Operations is
Specific.Initialize (Environment_Task);
+ -- Pass the context key on to CMA along with the other parameters
+ Debug_Register
+ (
+ DBGEXT'Address, -- Our DEBUG handling entry point
+ ATCB_Key, -- CMA context key for our Ada TCB's
+ Ada_Facility, -- Out facility code
+ 0 -- False, we don't have the std TCB prolog
+ );
+
+ -- Make environment task known here because it doesn't go through
+ -- Activate_Tasks, which does it for all other tasks.
+
+ Known_Tasks (Known_Tasks'First) := Environment_Task;
+ Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+
Enter_Task (Environment_Task);
end Initialize;
diff --git a/gcc/ada/s-taprop-vxworks.adb b/gcc/ada/s-taprop-vxworks.adb
index 40ded21b2ac..7f823ac0c45 100644
--- a/gcc/ada/s-taprop-vxworks.adb
+++ b/gcc/ada/s-taprop-vxworks.adb
@@ -833,18 +833,6 @@ package body System.Task_Primitives.Operations is
Install_Signal_Handlers;
- Lock_RTS;
-
- for J in Known_Tasks'Range loop
- if Known_Tasks (J) = null then
- Known_Tasks (J) := Self_ID;
- Self_ID.Known_Tasks_Index := J;
- exit;
- end if;
- end loop;
-
- Unlock_RTS;
-
-- If stack checking is enabled, set the stack limit for this task
if Set_Stack_Limit_Hook /= null then
@@ -1395,6 +1383,12 @@ package body System.Task_Primitives.Operations is
Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
+ -- Make environment task known here because it doesn't go through
+ -- Activate_Tasks, which does it for all other tasks.
+
+ Known_Tasks (Known_Tasks'First) := Environment_Task;
+ Environment_Task.Known_Tasks_Index := Known_Tasks'First;
+
Enter_Task (Environment_Task);
end Initialize;
diff --git a/gcc/ada/s-tasdeb.adb b/gcc/ada/s-tasdeb.adb
index 77d5478c528..9fb0cd6e798 100644
--- a/gcc/ada/s-tasdeb.adb
+++ b/gcc/ada/s-tasdeb.adb
@@ -246,6 +246,18 @@ package body System.Tasking.Debug is
STPO.Self.User_State := Value;
end Set_User_State;
+ ------------------------
+ -- Signal_Debug_Event --
+ ------------------------
+
+ procedure Signal_Debug_Event
+ (Event_Kind : Event_Kind_Type;
+ Task_Value : Task_Id)
+ is
+ begin
+ null;
+ end Signal_Debug_Event;
+
--------------------
-- Stop_All_Tasks --
--------------------
diff --git a/gcc/ada/s-tasdeb.ads b/gcc/ada/s-tasdeb.ads
index 1314e64753c..806fe0ee7b6 100644
--- a/gcc/ada/s-tasdeb.ads
+++ b/gcc/ada/s-tasdeb.ads
@@ -69,6 +69,26 @@ package System.Tasking.Debug is
-- Global array of tasks read by gdb, and updated by Create_Task and
-- Finalize_TCB
+ Debug_Event_Activating : constant := 1;
+ Debug_Event_Run : constant := 2;
+ Debug_Event_Suspended : constant := 3;
+ Debug_Event_Preempted : constant := 4;
+ Debug_Event_Terminated : constant := 5;
+ Debug_Event_Abort_Terminated : constant := 6;
+ Debug_Event_Exception_Terminated : constant := 7;
+ Debug_Event_Rendezvous_Exception : constant := 8;
+ Debug_Event_Handled : constant := 9;
+ Debug_Event_Dependents_Exception : constant := 10;
+ Debug_Event_Handled_Others : constant := 11;
+
+ subtype Event_Kind_Type is Positive range 1 .. 11;
+ -- Event kinds currently defined for debugging, used globally
+ -- below and on a per taak basis.
+
+ procedure Signal_Debug_Event
+ (Event_Kind : Event_Kind_Type;
+ Task_Value : Task_Id);
+
----------------------------------
-- VxWorks specific GDB support --
----------------------------------
diff --git a/gcc/ada/s-tasini.adb b/gcc/ada/s-tasini.adb
index 57d7dc60b63..0a97fb09a25 100644
--- a/gcc/ada/s-tasini.adb
+++ b/gcc/ada/s-tasini.adb
@@ -57,9 +57,9 @@ package body System.Tasking.Initialization is
use Task_Primitives.Operations;
Global_Task_Lock : aliased System.Task_Primitives.RTS_Lock;
- -- This is a global lock; it is used to execute in mutual exclusion
- -- from all other tasks. It is only used by Task_Lock,
- -- Task_Unlock, and Final_Task_Unlock.
+ -- This is a global lock; it is used to execute in mutual exclusion from
+ -- all other tasks. It is only used by Task_Lock, Task_Unlock, and
+ -- Final_Task_Unlock.
----------------------------------------------------------------------
-- Tasking versions of some services needed by non-tasking programs --
@@ -103,11 +103,10 @@ package body System.Tasking.Initialization is
----------------------------
procedure Init_RTS;
- -- This procedure completes the initialization of the GNARL. The first
- -- part of the initialization is done in the body of System.Tasking.
- -- It consists of initializing global locks, and installing tasking
- -- versions of certain operations used by the compiler. Init_RTS is called
- -- during elaboration.
+ -- This procedure completes the initialization of the GNARL. The first part
+ -- of the initialization is done in the body of System.Tasking. It consists
+ -- of initializing global locks, and installing tasking versions of certain
+ -- operations used by the compiler. Init_RTS is called during elaboration.
--------------------------
-- Change_Base_Priority --
@@ -130,7 +129,8 @@ package body System.Tasking.Initialization is
function Check_Abort_Status return Integer is
Self_ID : constant Task_Id := Self;
begin
- if Self_ID /= null and then Self_ID.Deferral_Level = 0
+ if Self_ID /= null
+ and then Self_ID.Deferral_Level = 0
and then Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
then
return 1;
@@ -271,6 +271,7 @@ package body System.Tasking.Initialization is
pragma Assert (not Self_ID.ATC_Hack);
elsif Self_ID.ATC_Hack then
+
-- The solution really belongs in the Abort_Signal handler
-- for async. entry calls. The present hack is very
-- fragile. It relies that the very next point after
@@ -296,13 +297,14 @@ package body System.Tasking.Initialization is
-- Final_Task_Unlock --
-----------------------
- -- This version is only for use in Terminate_Task, when the task
- -- is relinquishing further rights to its own ATCB.
- -- There is a very interesting potential race condition there, where
- -- the old task may run concurrently with a new task that is allocated
- -- the old tasks (now reused) ATCB. The critical thing here is to
- -- not make any reference to the ATCB after the lock is released.
- -- See also comments on Terminate_Task and Unlock.
+ -- This version is only for use in Terminate_Task, when the task is
+ -- relinquishing further rights to its own ATCB.
+
+ -- There is a very interesting potential race condition there, where the
+ -- old task may run concurrently with a new task that is allocated the old
+ -- tasks (now reused) ATCB. The critical thing here is to not make any
+ -- reference to the ATCB after the lock is released. See also comments on
+ -- Terminate_Task and Unlock.
procedure Final_Task_Unlock (Self_ID : Task_Id) is
begin
@@ -334,16 +336,17 @@ package body System.Tasking.Initialization is
Self_Id.Awake_Count := 1;
Self_Id.Alive_Count := 1;
- Self_Id.Master_Within := Library_Task_Level;
- -- Normally, a task starts out with internal master nesting level
- -- one larger than external master nesting level. It is incremented
- -- to one by Enter_Master, which is called in the task body only if
- -- the compiler thinks the task may have dependent tasks. There is no
+ -- Normally, a task starts out with internal master nesting level one
+ -- larger than external master nesting level. It is incremented to one
+ -- by Enter_Master, which is called in the task body only if the
+ -- compiler thinks the task may have dependent tasks. There is no
-- corresponding call to Enter_Master for the environment task, so we
- -- would need to increment it to 2 here. Instead, we set it to 3.
- -- By doing this we reserve the level 2 for server tasks of the runtime
+ -- would need to increment it to 2 here. Instead, we set it to 3. By
+ -- doing this we reserve the level 2 for server tasks of the runtime
-- system. The environment task does not need to wait for these server
+ Self_Id.Master_Within := Library_Task_Level;
+
-- Initialize lock used to implement mutual exclusion between all tasks
Initialize_Lock (Global_Task_Lock'Access, STPO.Global_Task_Level);
@@ -368,8 +371,8 @@ package body System.Tasking.Initialization is
SSL.Tasking.Init_Tasking_Soft_Links;
- -- Abort is deferred in a new ATCB, so we need to undefer abort
- -- at this stage to make the environment task abortable.
+ -- Abort is deferred in a new ATCB, so we need to undefer abort at this
+ -- stage to make the environment task abortable.
Undefer_Abort (Environment_Task);
end Init_RTS;
@@ -381,40 +384,37 @@ package body System.Tasking.Initialization is
-- Abort a task to the specified ATC nesting level.
-- Call this only with T locked.
- -- An earlier version of this code contained a call to Wakeup. That
- -- should not be necessary here, if Abort_Task is implemented correctly,
- -- since Abort_Task should include the effect of Wakeup. However, the
- -- above call was in earlier versions of this file, and at least for
- -- some targets Abort_Task has not been doing Wakeup. It should not
- -- hurt to uncomment the above call, until the error is corrected for
- -- all targets.
+ -- An earlier version of this code contained a call to Wakeup. That should
+ -- not be necessary here, if Abort_Task is implemented correctly, since
+ -- Abort_Task should include the effect of Wakeup. However, the above call
+ -- was in earlier versions of this file, and at least for some targets
+ -- Abort_Task has not been doing Wakeup. It should not hurt to uncomment
+ -- the above call, until the error is corrected for all targets.
-- See extended comments in package body System.Tasking.Abort for the
-- overall design of the implementation of task abort.
-- ??? there is no such package ???
- -- If the task is sleeping it will be in an abort-deferred region, and
- -- will not have Abort_Signal raised by Abort_Task. Such an "abort
- -- deferral" is just to protect the RTS internals, and not necessarily
- -- required to enforce Ada semantics. Abort_Task should wake the task up
- -- and let it decide if it wants to complete the aborted construct
- -- immediately.
+ -- If the task is sleeping it will be in an abort-deferred region, and will
+ -- not have Abort_Signal raised by Abort_Task. Such an "abort deferral" is
+ -- just to protect the RTS internals, and not necessarily required to
+ -- enforce Ada semantics. Abort_Task should wake the task up and let it
+ -- decide if it wants to complete the aborted construct immediately.
-- Note that the effect of the low-level Abort_Task is not persistent.
-- If the target task is not blocked, this wakeup will be missed.
-- We don't bother calling Abort_Task if this task is aborting itself,
- -- since we are inside the RTS and have abort deferred. Similarly, We
- -- don't bother to call Abort_Task if T is terminated, since there is
- -- no need to abort a terminated task, and it could be dangerous to try
- -- if the task has stopped executing.
-
- -- Note that an earlier version of this code had some false reasoning
- -- about being able to reliably wake up a task that had suspended on
- -- a blocking system call that does not atomically release the task's
- -- lock (e.g., UNIX nanosleep, which we once thought could be used to
- -- implement delays). That still left the possibility of missed
- -- wakeups.
+ -- since we are inside the RTS and have abort deferred. Similarly, We don't
+ -- bother to call Abort_Task if T is terminated, since there is no need to
+ -- abort a terminated task, and it could be dangerous to try if the task
+ -- has stopped executing.
+
+ -- Note that an earlier version of this code had some false reasoning about
+ -- being able to reliably wake up a task that had suspended on a blocking
+ -- system call that does not atomically release the task's lock (e.g., UNIX
+ -- nanosleep, which we once thought could be used to implement delays).
+ -- That still left the possibility of missed wakeups.
-- We cannot safely call Vulnerable_Complete_Activation here, since that
-- requires locking Self_ID.Parent. The anti-deadlock lock ordering rules
@@ -436,7 +436,8 @@ package body System.Tasking.Initialization is
pragma Assert (False);
null;
- when Runnable =>
+ when Activating | Runnable =>
+
-- This is needed to cancel an asynchronous protected entry
-- call during a requeue with abort.
@@ -454,7 +455,7 @@ package body System.Tasking.Initialization is
AST_Server_Sleep =>
Wakeup (T, T.Common.State);
- when Acceptor_Sleep =>
+ when Acceptor_Sleep | Acceptor_Delay_Sleep =>
T.Open_Accepts := null;
Wakeup (T, T.Common.State);
@@ -488,13 +489,17 @@ package body System.Tasking.Initialization is
-- value will not be set to False except with T also locked,
-- inside Exit_One_ATC_Level, so we should not miss wakeups.
- if T.Common.State = Acceptor_Sleep then
+ if T.Common.State = Acceptor_Sleep
+ or else
+ T.Common.State = Acceptor_Delay_Sleep
+ then
T.Open_Accepts := null;
end if;
elsif T /= Self_ID and then
(T.Common.State = Runnable
- or else T.Common.State = Interrupt_Server_Blocked_On_Event_Flag)
+ or else T.Common.State = Interrupt_Server_Blocked_On_Event_Flag)
+
-- The task is blocked on a system call waiting for the
-- completion event. In this case Abort_Task may need to take
-- special action in order to succeed. Example system: VMS.
@@ -519,7 +524,6 @@ package body System.Tasking.Initialization is
Previous := Null_Task;
C := All_Tasks_List;
-
while C /= Null_Task loop
if C = T then
if Previous = Null_Task then
@@ -565,7 +569,6 @@ package body System.Tasking.Initialization is
function Task_Name return String is
Self_Id : constant Task_Id := STPO.Self;
-
begin
return Self_Id.Common.Task_Image (1 .. Self_Id.Common.Task_Image_Len);
end Task_Name;
@@ -776,6 +779,7 @@ package body System.Tasking.Initialization is
New_State : Entry_Call_State)
is
Caller : constant Task_Id := Entry_Call.Self;
+
begin
pragma Debug (Debug.Trace
(Self_ID, "Wakeup_Entry_Caller", 'E', Caller));
@@ -787,8 +791,8 @@ package body System.Tasking.Initialization is
if Entry_Call.Mode = Asynchronous_Call then
- -- Abort the caller in his abortable part,
- -- but do so only if call has been queued abortably
+ -- Abort the caller in his abortable part, but do so only if call has
+ -- been queued abortably.
if Entry_Call.State >= Was_Abortable or else New_State = Done then
Locked_Abort_To_Level (Self_ID, Caller, Entry_Call.Level - 1);
@@ -804,9 +808,9 @@ package body System.Tasking.Initialization is
-----------------------
-- These are dummies for subprograms that are only needed by certain
- -- optional run-time system packages. If they are needed, the soft
- -- links will be redirected to the real subprogram by elaboration of
- -- the subprogram body where the real subprogram is declared.
+ -- optional run-time system packages. If they are needed, the soft links
+ -- will be redirected to the real subprogram by elaboration of the
+ -- subprogram body where the real subprogram is declared.
procedure Finalize_Attributes (T : Task_Id) is
pragma Unreferenced (T);
diff --git a/gcc/ada/s-taskin.adb b/gcc/ada/s-taskin.adb
index 10ad198bfa2..ba5ef095345 100644
--- a/gcc/ada/s-taskin.adb
+++ b/gcc/ada/s-taskin.adb
@@ -62,9 +62,9 @@ package body System.Tasking is
function Detect_Blocking return Boolean is
GL_Detect_Blocking : Integer;
pragma Import (C, GL_Detect_Blocking, "__gl_detect_blocking");
- -- Global variable exported by the binder generated file.
- -- A value equal to 1 indicates that pragma Detect_Blocking is active,
- -- while 0 is used for the pragma not being present.
+ -- Global variable exported by the binder generated file. A value equal
+ -- to 1 indicates that pragma Detect_Blocking is active, while 0 is used
+ -- for the pragma not being present.
begin
return GL_Detect_Blocking = 1;
@@ -101,7 +101,8 @@ package body System.Tasking is
Task_Info : System.Task_Info.Task_Info_Type;
Stack_Size : System.Parameters.Size_Type;
T : Task_Id;
- Success : out Boolean) is
+ Success : out Boolean)
+ is
begin
T.Common.State := Unactivated;
@@ -113,29 +114,33 @@ package body System.Tasking is
return;
end if;
- T.Common.Parent := Parent;
- T.Common.Base_Priority := Base_Priority;
- T.Common.Current_Priority := 0;
+ -- Wouldn't the following be better done using an assignment of an
+ -- aggregate so that we could be sure no components were forgotten???
+
+ T.Common.Parent := Parent;
+ T.Common.Base_Priority := Base_Priority;
+ T.Common.Current_Priority := 0;
T.Common.Protected_Action_Nesting := 0;
- T.Common.Call := null;
- T.Common.Task_Arg := Task_Arg;
- T.Common.Task_Entry_Point := Task_Entry_Point;
- T.Common.Activator := Self_ID;
- T.Common.Wait_Count := 0;
- T.Common.Elaborated := Elaborated;
- T.Common.Activation_Failed := False;
- T.Common.Task_Info := Task_Info;
+ T.Common.Call := null;
+ T.Common.Task_Arg := Task_Arg;
+ T.Common.Task_Entry_Point := Task_Entry_Point;
+ T.Common.Activator := Self_ID;
+ T.Common.Wait_Count := 0;
+ T.Common.Elaborated := Elaborated;
+ T.Common.Activation_Failed := False;
+ T.Common.Task_Info := Task_Info;
T.Common.Global_Task_Lock_Nesting := 0;
- T.Common.Fall_Back_Handler := null;
- T.Common.Specific_Handler := null;
+ T.Common.Fall_Back_Handler := null;
+ T.Common.Specific_Handler := null;
+ T.Common.Debug_Events := (others => False);
if T.Common.Parent = null then
- -- For the environment task, the adjusted stack size is
- -- meaningless. For example, an unspecified Stack_Size means
- -- that the stack size is determined by the environment, or
- -- can grow dynamically. The Stack_Checking algorithm
- -- therefore needs to use the requested size, or 0 in
- -- case of an unknown size.
+
+ -- For the environment task, the adjusted stack size is meaningless.
+ -- For example, an unspecified Stack_Size means that the stack size
+ -- is determined by the environment, or can grow dynamically. The
+ -- Stack_Checking algorithm therefore needs to use the requested
+ -- size, or 0 in case of an unknown size.
T.Common.Compiler_Data.Pri_Stack_Info.Size :=
Storage_Elements.Storage_Offset (Stack_Size);
@@ -161,9 +166,9 @@ package body System.Tasking is
Main_Priority : Integer;
pragma Import (C, Main_Priority, "__gl_main_priority");
- -- Priority for main task. Note that this is of type Integer, not
- -- Priority, because we use the value -1 to indicate the default
- -- main priority, and that is of course not in Priority'range.
+ -- Priority for main task. Note that this is of type Integer, not Priority,
+ -- because we use the value -1 to indicate the default main priority, and
+ -- that is of course not in Priority'range.
Initialized : Boolean := False;
-- Used to prevent multiple calls to Initialize
diff --git a/gcc/ada/s-taskin.ads b/gcc/ada/s-taskin.ads
index 1041c039e50..5012abec555 100644
--- a/gcc/ada/s-taskin.ads
+++ b/gcc/ada/s-taskin.ads
@@ -128,18 +128,19 @@ package System.Tasking is
type Task_States is
(Unactivated,
- -- Task has been created but has not been activated.
+ -- TCB initialized but not task has not been created.
-- It cannot be executing.
+-- Activating,
+-- -- ??? Temporarily at end of list for GDB compatibility
+-- -- Task has been created and is being made Runnable.
+
-- Active states
-- For all states from here down, the task has been activated.
-- For all states from here down, except for Terminated, the task
-- may be executing.
-- Activator = null iff it has not yet completed activating.
- -- For all states from here down,
- -- the task has been activated, and may be executing.
-
Runnable,
-- Task is not blocked for any reason known to Ada.
-- (It may be waiting for a mutex, though.)
@@ -154,7 +155,11 @@ package System.Tasking is
-- Task is waiting for created tasks to complete activation
Acceptor_Sleep,
- -- Task is waiting on an accept or selective wait statement
+ -- Task is waiting on an accept or select with terminate
+
+-- Acceptor_Delay_Sleep,
+-- -- ??? Temporarily at end of list for GDB compatibility
+-- -- Task is waiting on an selective wait statement
Entry_Caller_Sleep,
-- Task is waiting on an entry call
@@ -190,9 +195,15 @@ package System.Tasking is
Asynchronous_Hold,
-- The task has been held by Asynchronous_Task_Control.Hold_Task
- Interrupt_Server_Blocked_On_Event_Flag
+ Interrupt_Server_Blocked_On_Event_Flag,
-- The task has been blocked on a system call waiting for a
-- completion event/signal to occur.
+
+ Activating,
+ -- Task has been created and is being made Runnable.
+
+ Acceptor_Delay_Sleep
+ -- Task is waiting on an selective wait statement
);
type Call_Modes is
@@ -389,6 +400,15 @@ package System.Tasking is
-- is in general a non-static value that can depend on discriminants
-- of the task.
+ type Bit_Array is array (Integer range <>) of Boolean;
+ pragma Pack (Bit_Array);
+
+ subtype Debug_Event_Array is Bit_Array (1 .. 16);
+
+ Global_Task_Debug_Event_Set : Boolean := False;
+ -- Set True when running under debugger control and a task debug
+ -- event signal has been requested.
+
----------------------------------------------
-- Ada_Task_Control_Block (ATCB) definition --
----------------------------------------------
@@ -608,6 +628,10 @@ package System.Tasking is
-- any of its dependent tasks.
--
-- Protection: Self.L
+
+ Debug_Events : Debug_Event_Array;
+ -- Word length array of per task debug events, of which 11 kinds are
+ -- currently defined in System.Tasking.Debugging package.
end record;
---------------------------------------
diff --git a/gcc/ada/s-tasren.adb b/gcc/ada/s-tasren.adb
index bf5fd85dfb8..38f179d0e2e 100644
--- a/gcc/ada/s-tasren.adb
+++ b/gcc/ada/s-tasren.adb
@@ -1525,7 +1525,7 @@ package body System.Tasking.Rendezvous is
-- Wait for a normal call and a pending action until the
-- Wakeup_Time is reached.
- Self_Id.Common.State := Acceptor_Sleep;
+ Self_Id.Common.State := Acceptor_Delay_Sleep;
-- Try to remove calls to Sleep in the loop below by letting the
-- caller a chance of getting ready immediately, using Unlock
@@ -1557,7 +1557,7 @@ package body System.Tasking.Rendezvous is
exit when Self_Id.Open_Accepts = null;
if Timedout then
- Sleep (Self_Id, Acceptor_Sleep);
+ Sleep (Self_Id, Acceptor_Delay_Sleep);
else
if Parameters.Runtime_Traces then
Send_Trace_Info (WT_Select,
@@ -1567,7 +1567,7 @@ package body System.Tasking.Rendezvous is
end if;
STPO.Timed_Sleep (Self_Id, Timeout, Mode,
- Acceptor_Sleep, Timedout, Yielded);
+ Acceptor_Delay_Sleep, Timedout, Yielded);
end if;
if Timedout then
@@ -1613,9 +1613,9 @@ package body System.Tasking.Rendezvous is
-- 3) Spurious wakeup
Self_Id.Open_Accepts := null;
- Self_Id.Common.State := Acceptor_Sleep;
+ Self_Id.Common.State := Acceptor_Delay_Sleep;
- STPO.Timed_Sleep (Self_Id, Timeout, Mode, Acceptor_Sleep,
+ STPO.Timed_Sleep (Self_Id, Timeout, Mode, Acceptor_Delay_Sleep,
Timedout, Yielded);
Self_Id.Common.State := Runnable;
diff --git a/gcc/ada/s-tassta.adb b/gcc/ada/s-tassta.adb
index eaa6ff0b430..84281cf827f 100644
--- a/gcc/ada/s-tassta.adb
+++ b/gcc/ada/s-tassta.adb
@@ -300,7 +300,7 @@ package body System.Tasking.Stages is
-- racing ahead.
if Success then
- C.Common.State := Runnable;
+ C.Common.State := Activating;
C.Awake_Count := 1;
C.Alive_Count := 1;
P.Awake_Count := P.Awake_Count + 1;
@@ -313,6 +313,21 @@ package body System.Tasking.Stages is
P.Common.Wait_Count := P.Common.Wait_Count + 1;
end if;
+ for J in System.Tasking.Debug.Known_Tasks'Range loop
+ if System.Tasking.Debug.Known_Tasks (J) = null then
+ System.Tasking.Debug.Known_Tasks (J) := C;
+ C.Known_Tasks_Index := J;
+ exit;
+ end if;
+ end loop;
+
+ if Global_Task_Debug_Event_Set then
+ Debug.Signal_Debug_Event
+ (Debug.Debug_Event_Activating, C);
+ end if;
+
+ C.Common.State := Runnable;
+
Unlock (C);
Unlock (P);
@@ -923,7 +938,7 @@ package body System.Tasking.Stages is
Initialization.Undefer_Abort (Self_ID);
end Move_Activation_Chain;
- -- Compiler interface only. Do not call from within the RTS.
+ -- Compiler interface only. Do not call from within the RTS
--------------------
-- Set_Entry_Name --
@@ -1096,8 +1111,7 @@ package body System.Tasking.Stages is
Stack_Guard (Self_ID, True);
-- Initialize low-level TCB components, that cannot be initialized by
- -- the creator. Enter_Task sets Self_ID.Known_Tasks_Index and also
- -- Self_ID.LL.Thread
+ -- the creator. Enter_Task sets Self_ID.LL.Thread
Enter_Task (Self_ID);
@@ -1130,6 +1144,11 @@ package body System.Tasking.Stages is
Self_ID.Deferral_Level := 0;
end if;
+ if Global_Task_Debug_Event_Set then
+ Debug.Signal_Debug_Event
+ (Debug.Debug_Event_Run, Self_ID);
+ end if;
+
begin
-- We are separating the following portion of the code in order to
-- place the exception handlers in a different block. In this way,
@@ -1168,8 +1187,18 @@ package body System.Tasking.Stages is
if Self_ID.Terminate_Alternative then
Cause := Normal;
+
+ if Global_Task_Debug_Event_Set then
+ Debug.Signal_Debug_Event
+ (Debug.Debug_Event_Terminated, Self_ID);
+ end if;
else
Cause := Abnormal;
+
+ if Global_Task_Debug_Event_Set then
+ Debug.Signal_Debug_Event
+ (Debug.Debug_Event_Abort_Terminated, Self_ID);
+ end if;
end if;
when others =>
-- ??? Using an E : others here causes CD2C11A to fail on Tru64
@@ -1194,7 +1223,13 @@ package body System.Tasking.Stages is
-- procedure, as well as the associated Exception_Occurrence.
Cause := Unhandled_Exception;
+
Save_Occurrence (EO, SSL.Get_Current_Excep.all.all);
+
+ if Global_Task_Debug_Event_Set then
+ Debug.Signal_Debug_Event
+ (Debug.Debug_Event_Exception_Terminated, Self_ID);
+ end if;
end;
-- Look for a task termination handler. This code is for all tasks but
@@ -1388,6 +1423,9 @@ package body System.Tasking.Stages is
-- unwound. The common notification routine has been called at the
-- raise point already.
+ -- Lock to prevent unsynchronized output
+
+ Initialization.Task_Lock (Self_Id);
To_Stderr ("task ");
if Self_Id.Common.Task_Image_Len /= 0 then
@@ -1400,6 +1438,7 @@ package body System.Tasking.Stages is
To_Stderr (" terminated by unhandled exception");
To_Stderr ((1 => ASCII.LF));
To_Stderr (Tailored_Exception_Information (Excep.all));
+ Initialization.Task_Unlock (Self_Id);
end Trace_Unhandled_Exception_In_Task;
------------------------------------
diff --git a/gcc/ada/s-traceb.adb b/gcc/ada/s-traceb.adb
index 420030c6dbb..d4de95d7e05 100644
--- a/gcc/ada/s-traceb.adb
+++ b/gcc/ada/s-traceb.adb
@@ -34,9 +34,7 @@
-- Note: this unit must be compiled using -fno-optimize-sibling-calls.
-- See comment below in body of Call_Chain for details on the reason.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.Traceback is
diff --git a/gcc/ada/s-traceb.ads b/gcc/ada/s-traceb.ads
index 79a5f970053..0119b700a44 100644
--- a/gcc/ada/s-traceb.ads
+++ b/gcc/ada/s-traceb.ads
@@ -29,14 +29,11 @@
-- --
------------------------------------------------------------------------------
--- This package provides a method for generating a traceback of the
--- current execution location. The traceback shows the locations of
--- calls in the call chain, up to either the top or a designated
--- number of levels.
+-- This package provides a method for generating a traceback of the current
+-- execution location. The traceback shows the locations of calls in the call
+-- chain, up to either the top or a designated number of levels.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
pragma Polling (Off);
-- We must turn polling off for this unit, because otherwise we get
@@ -61,12 +58,11 @@ package System.Traceback is
-- Traceback is the address of an array of addresses where the
-- result will be stored.
--
- -- Max_Len is the length of the Traceback array. If the call chain
- -- is longer than this, then additional entries are discarded, and
- -- the traceback is missing some of the highest level entries.
+ -- Max_Len is the length of the Traceback array. If the call chain is
+ -- longer than this, then additional entries are discarded, and the
+ -- traceback is missing some of the highest level entries.
--
- -- Len is the returned actual number of addresses stored
- -- in the Traceback array.
+ -- Len is the returned number of addresses stored in the Traceback array
--
-- Exclude_Min/Exclude_Max, if non null, provide a range of addresses
-- to ignore from the computation of the traceback.
@@ -77,9 +73,9 @@ package System.Traceback is
-- this procedure, 2 means 1 + exclude the frame for this procedure's
-- caller, ...
--
- -- On return, the Traceback array is filled in, and Len indicates
- -- the number of stored entries. The first entry is the most recent
- -- call, and the last entry is the highest level call.
+ -- On return, the Traceback array is filled in, and Len indicates the
+ -- number of stored entries. The first entry is the most recent call,
+ -- and the last entry is the highest level call.
function C_Call_Chain
(Traceback : System.Address;
diff --git a/gcc/ada/s-traent.adb b/gcc/ada/s-traent.adb
index 80af8be9964..343d30c8906 100644
--- a/gcc/ada/s-traent.adb
+++ b/gcc/ada/s-traent.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.Traceback_Entries is
diff --git a/gcc/ada/s-traent.ads b/gcc/ada/s-traent.ads
index b353de128f9..cf24e0db52a 100644
--- a/gcc/ada/s-traent.ads
+++ b/gcc/ada/s-traent.ads
@@ -38,9 +38,7 @@
-- version of the package, an entry is a mere code location representing the
-- address of a call instruction part of the call-chain.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.Traceback_Entries is
pragma Preelaborate;
diff --git a/gcc/ada/s-utf_32.adb b/gcc/ada/s-utf_32.adb
index 712eb2c63b7..263f13efd9b 100755
--- a/gcc/ada/s-utf_32.adb
+++ b/gcc/ada/s-utf_32.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
pragma Style_Checks (Off);
-- Allow long lines in this unit
diff --git a/gcc/ada/s-utf_32.ads b/gcc/ada/s-utf_32.ads
index 5217e8bf3ac..41ed6d7927c 100755
--- a/gcc/ada/s-utf_32.ads
+++ b/gcc/ada/s-utf_32.ads
@@ -41,9 +41,7 @@
-- the same services. The reason this package is in System is so that it can
-- with'ed by other packages in the Ada and System hierarchies.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.UTF_32 is
diff --git a/gcc/ada/s-vxwext-kernel.adb b/gcc/ada/s-vxwext-kernel.adb
new file mode 100644
index 00000000000..733772bdf8a
--- /dev/null
+++ b/gcc/ada/s-vxwext-kernel.adb
@@ -0,0 +1,55 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . V X W O R K S . E X T --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2008-2009, 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- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception 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 package provides vxworks specific support functions needed
+-- by System.OS_Interface.
+
+-- This is the VxWorks <= 6.5 kernel version of this package
+-- Also works for 6.6 uniprocessor
+
+package body System.VxWorks.Ext is
+
+ --------------
+ -- Int_Lock --
+ --------------
+
+ function intLock return int;
+ pragma Import (C, intLock, "intLock");
+
+ function Int_Lock return int renames intLock;
+
+ ----------------
+ -- Int_Unlock --
+ ----------------
+
+ function intUnlock return int;
+ pragma Import (C, intUnlock, "intUnlock");
+
+ function Int_Unlock return int renames intUnlock;
+
+end System.VxWorks.Ext;
diff --git a/gcc/ada/s-vxwext-kernel.ads b/gcc/ada/s-vxwext-kernel.ads
index a9d3d5539c6..423acab2ba9 100644
--- a/gcc/ada/s-vxwext-kernel.ads
+++ b/gcc/ada/s-vxwext-kernel.ads
@@ -39,25 +39,40 @@ package System.VxWorks.Ext is
type t_id is new Long_Integer;
subtype int is Interfaces.C.int;
- function Task_Cont (tid : t_id) return int;
- pragma Import (C, Task_Cont, "taskCont");
+ type Interrupt_Handler is access procedure (parameter : System.Address);
+ pragma Convention (C, Interrupt_Handler);
- function Task_Stop (tid : t_id) return int;
- pragma Import (C, Task_Stop, "taskStop");
+ type Interrupt_Vector is new System.Address;
function Int_Lock return int;
- pragma Import (C, Int_Lock, "intLock");
+ pragma Convention (C, Int_Lock);
function Int_Unlock return int;
- pragma Import (C, Int_Unlock, "intUnlock");
+ pragma Convention (C, Int_Unlock);
+
+ function Interrupt_Connect
+ (Vector : Interrupt_Vector;
+ Handler : Interrupt_Handler;
+ Parameter : System.Address := System.Null_Address) return int;
+ pragma Import (C, Interrupt_Connect, "intConnect");
+
+ function Interrupt_Number_To_Vector
+ (intNum : int) return Interrupt_Vector;
+ pragma Import (C, Interrupt_Number_To_Vector, "__gnat_inum_to_ivec");
+
+ function Task_Cont (tid : t_id) return int;
+ pragma Import (C, Task_Cont, "taskCont");
+
+ function Task_Stop (tid : t_id) return int;
+ pragma Import (C, Task_Stop, "taskStop");
function kill (pid : t_id; sig : int) return int;
pragma Import (C, kill, "kill");
- function Set_Time_Slice (ticks : int) return int;
- pragma Import (C, Set_Time_Slice, "kernelTimeSlice");
-
function getpid return t_id;
pragma Import (C, getpid, "taskIdSelf");
+ function Set_Time_Slice (ticks : int) return int;
+ pragma Import (C, Set_Time_Slice, "kernelTimeSlice");
+
end System.VxWorks.Ext;
diff --git a/gcc/ada/s-vxwext-rtp.adb b/gcc/ada/s-vxwext-rtp.adb
index 74ff505f096..809ee91f006 100644
--- a/gcc/ada/s-vxwext-rtp.adb
+++ b/gcc/ada/s-vxwext-rtp.adb
@@ -26,40 +26,57 @@
-- --
------------------------------------------------------------------------------
--- This is the VxWorks 6 rtp version of this package
+-- This package provides vxworks specific support functions needed
+-- by System.OS_Interface.
+
+-- This is the VxWorks 6 RTP version of this package
package body System.VxWorks.Ext is
- function Task_Cont (tid : t_id) return int is
- pragma Unreferenced (tid);
- begin
- -- Operation not allowed in an RTP
- return 0;
- end Task_Cont;
+ ERROR : constant := -1;
- function Task_Stop (tid : t_id) return int is
- pragma Unreferenced (tid);
- begin
- -- Operation not allowed in an RTP
- return 0;
- end Task_Stop;
+ --------------
+ -- Int_Lock --
+ --------------
function Int_Lock return int is
begin
- -- Operation not allowed in an RTP
- return 0;
+ return ERROR;
end Int_Lock;
+ ----------------
+ -- Int_Unlock --
+ ----------------
+
function Int_Unlock return int is
begin
- -- Operation not allowed in an RTP
- return 0;
+ return ERROR;
end Int_Unlock;
+ --------------------
+ -- Set_Time_Slice --
+ --------------------
+
function Set_Time_Slice (ticks : int) return int is
pragma Unreferenced (ticks);
begin
- return 0;
+ return ERROR;
end Set_Time_Slice;
+ function Interrupt_Connect
+ (Vector : Interrupt_Vector;
+ Handler : Interrupt_Handler;
+ Parameter : System.Address := System.Null_Address) return int is
+ pragma Unreferenced (Vector, Handler, Parameter);
+ begin
+ return ERROR;
+ end Interrupt_Connect;
+
+ function Interrupt_Number_To_Vector
+ (intNum : int) return Interrupt_Vector is
+ pragma Unreferenced (intNum);
+ begin
+ return 0;
+ end Interrupt_Number_To_Vector;
+
end System.VxWorks.Ext;
diff --git a/gcc/ada/s-vxwext-rtp.ads b/gcc/ada/s-vxwext-rtp.ads
index bba9cbcf957..8d094412c6d 100644
--- a/gcc/ada/s-vxwext-rtp.ads
+++ b/gcc/ada/s-vxwext-rtp.ads
@@ -29,7 +29,7 @@
-- This package provides vxworks specific support functions needed
-- by System.OS_Interface.
--- This is the VxWorks 6 rtp version of this package
+-- This is the VxWorks 6 RTP version of this package
with Interfaces.C;
@@ -39,11 +39,10 @@ package System.VxWorks.Ext is
type t_id is new Long_Integer;
subtype int is Interfaces.C.int;
- function Task_Cont (tid : t_id) return int;
- pragma Inline (Task_Cont);
+ type Interrupt_Handler is access procedure (parameter : System.Address);
+ pragma Convention (C, Interrupt_Handler);
- function Task_Stop (tid : t_id) return int;
- pragma Inline (Task_Stop);
+ type Interrupt_Vector is new System.Address;
function Int_Lock return int;
pragma Inline (Int_Lock);
@@ -51,13 +50,29 @@ package System.VxWorks.Ext is
function Int_Unlock return int;
pragma Inline (Int_Unlock);
+ function Interrupt_Connect
+ (Vector : Interrupt_Vector;
+ Handler : Interrupt_Handler;
+ Parameter : System.Address := System.Null_Address) return int;
+ pragma Convention (C, Interrupt_Connect);
+
+ function Interrupt_Number_To_Vector
+ (intNum : int) return Interrupt_Vector;
+ pragma Convention (C, Interrupt_Number_To_Vector);
+
+ function Task_Cont (tid : t_id) return int;
+ pragma Import (C, Task_Cont, "taskResume");
+
+ function Task_Stop (tid : t_id) return int;
+ pragma Import (C, Task_Stop, "taskSuspend");
+
function kill (pid : t_id; sig : int) return int;
pragma Import (C, kill, "taskKill");
- function Set_Time_Slice (ticks : int) return int;
- pragma Inline (Set_Time_Slice);
-
function getpid return t_id;
pragma Import (C, getpid, "getpid");
+ function Set_Time_Slice (ticks : int) return int;
+ pragma Inline (Set_Time_Slice);
+
end System.VxWorks.Ext;
diff --git a/gcc/ada/s-vxwext.ads b/gcc/ada/s-vxwext.ads
index a06de26612e..dc23cd26d07 100644
--- a/gcc/ada/s-vxwext.ads
+++ b/gcc/ada/s-vxwext.ads
@@ -39,11 +39,10 @@ package System.VxWorks.Ext is
type t_id is new Long_Integer;
subtype int is Interfaces.C.int;
- function Task_Cont (tid : t_id) return int;
- pragma Import (C, Task_Cont, "taskResume");
+ type Interrupt_Handler is access procedure (parameter : System.Address);
+ pragma Convention (C, Interrupt_Handler);
- function Task_Stop (tid : t_id) return int;
- pragma Import (C, Task_Stop, "taskSuspend");
+ type Interrupt_Vector is new System.Address;
function Int_Lock return int;
pragma Import (C, Int_Lock, "intLock");
@@ -51,13 +50,29 @@ package System.VxWorks.Ext is
function Int_Unlock return int;
pragma Import (C, Int_Unlock, "intUnlock");
+ function Interrupt_Connect
+ (Vector : Interrupt_Vector;
+ Handler : Interrupt_Handler;
+ Parameter : System.Address := System.Null_Address) return int;
+ pragma Import (C, Interrupt_Connect, "intConnect");
+
+ function Interrupt_Number_To_Vector
+ (intNum : int) return Interrupt_Vector;
+ pragma Import (C, Interrupt_Number_To_Vector, "__gnat_inum_to_ivec");
+
+ function Task_Cont (tid : t_id) return int;
+ pragma Import (C, Task_Cont, "taskResume");
+
+ function Task_Stop (tid : t_id) return int;
+ pragma Import (C, Task_Stop, "taskSuspend");
+
function kill (pid : t_id; sig : int) return int;
pragma Import (C, kill, "kill");
- function Set_Time_Slice (ticks : int) return int;
- pragma Import (C, Set_Time_Slice, "kernelTimeSlice");
-
function getpid return t_id;
pragma Import (C, getpid, "taskIdSelf");
+ function Set_Time_Slice (ticks : int) return int;
+ pragma Import (C, Set_Time_Slice, "kernelTimeSlice");
+
end System.VxWorks.Ext;
diff --git a/gcc/ada/s-wchcnv.adb b/gcc/ada/s-wchcnv.adb
index 05526094548..bb806f08aa5 100644
--- a/gcc/ada/s-wchcnv.adb
+++ b/gcc/ada/s-wchcnv.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with Interfaces; use Interfaces;
with System.WCh_Con; use System.WCh_Con;
diff --git a/gcc/ada/s-wchcnv.ads b/gcc/ada/s-wchcnv.ads
index 6b7abe56103..887e2198cb7 100644
--- a/gcc/ada/s-wchcnv.ads
+++ b/gcc/ada/s-wchcnv.ads
@@ -43,9 +43,7 @@
-- This unit may be used directly from an application program by providing
-- an appropriate WITH, and the interface can be expected to remain stable.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
with System.WCh_Con;
diff --git a/gcc/ada/s-wchcon.adb b/gcc/ada/s-wchcon.adb
index 57fb73d3efa..45585d9f744 100755
--- a/gcc/ada/s-wchcon.adb
+++ b/gcc/ada/s-wchcon.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.WCh_Con is
diff --git a/gcc/ada/s-wchcon.ads b/gcc/ada/s-wchcon.ads
index 68d9a122095..1a370698c08 100644
--- a/gcc/ada/s-wchcon.ads
+++ b/gcc/ada/s-wchcon.ads
@@ -36,9 +36,7 @@
-- This unit may be used directly from an application program by providing
-- an appropriate WITH, and the interface can be expected to remain stable.
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.WCh_Con is
pragma Pure;
diff --git a/gcc/ada/s-wchjis.adb b/gcc/ada/s-wchjis.adb
index c4604af0e2b..a005ec68d9b 100644
--- a/gcc/ada/s-wchjis.adb
+++ b/gcc/ada/s-wchjis.adb
@@ -29,9 +29,7 @@
-- --
------------------------------------------------------------------------------
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package body System.WCh_JIS is
diff --git a/gcc/ada/s-wchjis.ads b/gcc/ada/s-wchjis.ads
index f66cdcb18a8..b91839704c2 100644
--- a/gcc/ada/s-wchjis.ads
+++ b/gcc/ada/s-wchjis.ads
@@ -32,9 +32,7 @@
-- This package contains routines used for converting between internal
-- JIS codes and the two external forms we support (EUC and Shift-JIS)
-pragma Warnings (Off);
pragma Compiler_Unit;
-pragma Warnings (On);
package System.WCh_JIS is
pragma Pure;
diff --git a/gcc/ada/s-win32.ads b/gcc/ada/s-win32.ads
index f8856fb3bfa..35975919edd 100644
--- a/gcc/ada/s-win32.ads
+++ b/gcc/ada/s-win32.ads
@@ -82,51 +82,53 @@ package System.Win32 is
-- Files --
-----------
- GENERIC_READ : constant := 16#80000000#;
- GENERIC_WRITE : constant := 16#40000000#;
-
- CREATE_NEW : constant := 1;
- CREATE_ALWAYS : constant := 2;
- OPEN_EXISTING : constant := 3;
- OPEN_ALWAYS : constant := 4;
- TRUNCATE_EXISTING : constant := 5;
-
- FILE_SHARE_DELETE : constant := 16#00000004#;
- FILE_SHARE_READ : constant := 16#00000001#;
- FILE_SHARE_WRITE : constant := 16#00000002#;
-
- FILE_BEGIN : constant := 0;
- FILE_CURRENT : constant := 1;
- FILE_END : constant := 2;
-
- PAGE_NOACCESS : constant := 16#0001#;
- PAGE_READONLY : constant := 16#0002#;
- PAGE_READWRITE : constant := 16#0004#;
- PAGE_WRITECOPY : constant := 16#0008#;
- PAGE_EXECUTE : constant := 16#0010#;
-
- FILE_MAP_ALL_ACCESS : constant := 16#F001f#;
- FILE_MAP_READ : constant := 4;
- FILE_MAP_WRITE : constant := 2;
- FILE_MAP_COPY : constant := 1;
-
- FILE_ADD_FILE : constant := 16#0002#;
- FILE_ADD_SUBDIRECTORY : constant := 16#0004#;
- FILE_APPEND_DATA : constant := 16#0004#;
- FILE_CREATE_PIPE_INSTANCE : constant := 16#0004#;
- FILE_DELETE_CHILD : constant := 16#0040#;
- FILE_EXECUTE : constant := 16#0020#;
- FILE_LIST_DIRECTORY : constant := 16#0001#;
- FILE_READ_ATTRIBUTES : constant := 16#0080#;
- FILE_READ_DATA : constant := 16#0001#;
- FILE_READ_EA : constant := 16#0008#;
- FILE_TRAVERSE : constant := 16#0020#;
- FILE_WRITE_ATTRIBUTES : constant := 16#0100#;
- FILE_WRITE_DATA : constant := 16#0002#;
- FILE_WRITE_EA : constant := 16#0010#;
- STANDARD_RIGHTS_READ : constant := 16#20000#;
- STANDARD_RIGHTS_WRITE : constant := 16#20000#;
- SYNCHRONIZE : constant := 16#100000#;
+ CP_UTF8 : constant := 65001;
+
+ GENERIC_READ : constant := 16#80000000#;
+ GENERIC_WRITE : constant := 16#40000000#;
+
+ CREATE_NEW : constant := 1;
+ CREATE_ALWAYS : constant := 2;
+ OPEN_EXISTING : constant := 3;
+ OPEN_ALWAYS : constant := 4;
+ TRUNCATE_EXISTING : constant := 5;
+
+ FILE_SHARE_DELETE : constant := 16#00000004#;
+ FILE_SHARE_READ : constant := 16#00000001#;
+ FILE_SHARE_WRITE : constant := 16#00000002#;
+
+ FILE_BEGIN : constant := 0;
+ FILE_CURRENT : constant := 1;
+ FILE_END : constant := 2;
+
+ PAGE_NOACCESS : constant := 16#0001#;
+ PAGE_READONLY : constant := 16#0002#;
+ PAGE_READWRITE : constant := 16#0004#;
+ PAGE_WRITECOPY : constant := 16#0008#;
+ PAGE_EXECUTE : constant := 16#0010#;
+
+ FILE_MAP_ALL_ACCESS : constant := 16#F001f#;
+ FILE_MAP_READ : constant := 4;
+ FILE_MAP_WRITE : constant := 2;
+ FILE_MAP_COPY : constant := 1;
+
+ FILE_ADD_FILE : constant := 16#0002#;
+ FILE_ADD_SUBDIRECTORY : constant := 16#0004#;
+ FILE_APPEND_DATA : constant := 16#0004#;
+ FILE_CREATE_PIPE_INSTANCE : constant := 16#0004#;
+ FILE_DELETE_CHILD : constant := 16#0040#;
+ FILE_EXECUTE : constant := 16#0020#;
+ FILE_LIST_DIRECTORY : constant := 16#0001#;
+ FILE_READ_ATTRIBUTES : constant := 16#0080#;
+ FILE_READ_DATA : constant := 16#0001#;
+ FILE_READ_EA : constant := 16#0008#;
+ FILE_TRAVERSE : constant := 16#0020#;
+ FILE_WRITE_ATTRIBUTES : constant := 16#0100#;
+ FILE_WRITE_DATA : constant := 16#0002#;
+ FILE_WRITE_EA : constant := 16#0010#;
+ STANDARD_RIGHTS_READ : constant := 16#20000#;
+ STANDARD_RIGHTS_WRITE : constant := 16#20000#;
+ SYNCHRONIZE : constant := 16#100000#;
FILE_ATTRIBUTE_READONLY : constant := 16#00000001#;
FILE_ATTRIBUTE_HIDDEN : constant := 16#00000002#;
@@ -159,6 +161,16 @@ package System.Win32 is
bInheritHandle : BOOL;
end record;
+ function CreateFileA
+ (lpFileName : Address;
+ dwDesiredAccess : DWORD;
+ dwShareMode : DWORD;
+ lpSecurityAttributes : access SECURITY_ATTRIBUTES;
+ dwCreationDisposition : DWORD;
+ dwFlagsAndAttributes : DWORD;
+ hTemplateFile : HANDLE) return HANDLE;
+ pragma Import (Stdcall, CreateFileA, "CreateFileA");
+
function CreateFile
(lpFileName : Address;
dwDesiredAccess : DWORD;
@@ -167,7 +179,7 @@ package System.Win32 is
dwCreationDisposition : DWORD;
dwFlagsAndAttributes : DWORD;
hTemplateFile : HANDLE) return HANDLE;
- pragma Import (Stdcall, CreateFile, "CreateFileA");
+ pragma Import (Stdcall, CreateFile, "CreateFileW");
function GetFileSize
(hFile : HANDLE;
@@ -220,6 +232,15 @@ package System.Win32 is
function UnmapViewOfFile (lpBaseAddress : System.Address) return BOOL;
pragma Import (Stdcall, UnmapViewOfFile, "UnmapViewOfFile");
+ function MultiByteToWideChar
+ (CodePage : WORD;
+ dwFlags : DWORD;
+ lpMultiByteStr : System.Address;
+ cchMultiByte : WORD;
+ lpWideCharStr : System.Address;
+ cchWideChar : WORD) return BOOL;
+ pragma Import (Stdcall, MultiByteToWideChar, "MultiByteToWideChar");
+
------------------------
-- System Information --
------------------------
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
index 2bf6143d9f0..38f45a85059 100644
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -1557,7 +1557,17 @@ package body Sem_Attr is
-- Check restriction violations
- Check_Restriction (No_Streams, P);
+ -- First check the No_Streams restriction, which prohibits the use
+ -- of explicit stream attributes in the source program. We do not
+ -- prevent the occurrence of stream attributes in generated code,
+ -- for instance those generated implicitly for dispatching purposes.
+
+ if Comes_From_Source (N) then
+ Check_Restriction (No_Streams, P);
+ end if;
+
+ -- Check special case of Exception_Id and Exception_Occurrence which
+ -- are not allowed for restriction No_Exception_Regstriation.
if Is_RTE (P_Type, RE_Exception_Id)
or else
@@ -2049,6 +2059,23 @@ package body Sem_Attr is
Error_Attr_P
("prefix of % attribute cannot be Inline_Always" &
" subprogram");
+
+ -- It is illegal to apply 'Address to an intrinsic
+ -- subprogram. This is now formalized in AI05-0095.
+ -- In an instance, an attempt to obtain 'Address of an
+ -- intrinsic subprogram (e.g the renaming of a predefined
+ -- operator that is an actual) raises Program_Error.
+
+ elsif Convention (Ent) = Convention_Intrinsic then
+ if In_Instance then
+ Rewrite (N,
+ Make_Raise_Program_Error (Loc,
+ Reason => PE_Address_Of_Intrinsic));
+
+ else
+ Error_Msg_N
+ ("cannot take Address of intrinsic subprogram", N);
+ end if;
end if;
elsif Is_Object (Ent)
diff --git a/gcc/ada/sem_case.adb b/gcc/ada/sem_case.adb
index 7afd0d3f718..5de995d984b 100644
--- a/gcc/ada/sem_case.adb
+++ b/gcc/ada/sem_case.adb
@@ -313,26 +313,11 @@ package body Sem_Case is
-- the pos value passed as an argument to Choice_Image.
Get_Name_String (Chars (First_Subtype (Ctype)));
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := ''';
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := 'v';
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := 'a';
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := 'l';
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := '(';
+ Add_Str_To_Name_Buffer ("'val(");
UI_Image (Value);
-
- for J in 1 .. UI_Image_Length loop
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := UI_Image_Buffer (J);
- end loop;
-
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := ')';
+ Add_Str_To_Name_Buffer (UI_Image_Buffer (1 .. UI_Image_Length));
+ Add_Char_To_Name_Buffer (')');
return Name_Find;
end Choice_Image;
diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb
index a5a25fd8a79..b72c1d291cb 100644
--- a/gcc/ada/sem_ch10.adb
+++ b/gcc/ada/sem_ch10.adb
@@ -2405,6 +2405,8 @@ package body Sem_Ch10 is
Set_Entity_With_Style_Check (Name (N), E_Name);
Generate_Reference (E_Name, Name (N), 'w', Set_Ref => False);
+ -- Generate references and check No_Dependence restriction for parents
+
if Is_Child_Unit (E_Name) then
Pref := Prefix (Name (N));
Par_Name := Scope (E_Name);
@@ -2413,6 +2415,7 @@ package body Sem_Ch10 is
Set_Entity_With_Style_Check (Pref, Par_Name);
Generate_Reference (Par_Name, Pref);
+ Check_Restriction_No_Dependence (Pref, N);
Pref := Prefix (Pref);
-- If E_Name is the dummy entity for a nonexistent unit, its scope
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index b8e5d888355..8902d0d546b 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -681,6 +681,19 @@ package body Sem_Ch12 is
-- this field overlaps Entity, which is fine, because the whole point is
-- that we don't need or want the normal Entity field in this situation.
+ procedure Map_Formal_Package_Entities (Form : Entity_Id; Act : Entity_Id);
+ -- Within the generic part, entities in the formal package are
+ -- visible. To validate subsequent type declarations, indicate
+ -- the correspondence between the entities in the analyzed formal,
+ -- and the entities in the actual package. There are three packages
+ -- involved in the instantiation of a formal package: the parent
+ -- generic P1 which appears in the generic declaration, the fake
+ -- instantiation P2 which appears in the analyzed generic, and whose
+ -- visible entities may be used in subsequent formals, and the actual
+ -- P3 in the instance. To validate subsequent formals, me indicate
+ -- that the entities in P2 are mapped into those of P3. The mapping of
+ -- entities has to be done recursively for nested packages.
+
procedure Move_Freeze_Nodes
(Out_Of : Entity_Id;
After : Node_Id;
@@ -2952,11 +2965,37 @@ package body Sem_Ch12 is
Init_Env;
Env_Installed := True;
+
+ -- Reset renaming map for formal types. The mapping is established
+ -- when analyzing the generic associations, but some mappings are
+ -- inherited from formal packages of parent units, and these are
+ -- constructed when the parents are installed.
+
+ Generic_Renamings.Set_Last (0);
+ Generic_Renamings_HTable.Reset;
+
Check_Generic_Child_Unit (Gen_Id, Parent_Installed);
Gen_Unit := Entity (Gen_Id);
-- Verify that it is the name of a generic package
+ -- A visibility glitch: if the instance is a child unit and the generic
+ -- is the generic unit of a parent instance (i.e. both the parent and
+ -- the child units are instances of the same package) the name now
+ -- denotes the renaming within the parent, not the intended generic
+ -- unit. See if there is a homonym that is the desired generic. The
+ -- renaming declaration must be visible inside the instance of the
+ -- child, but not when analyzing the name in the instantiation itself.
+
+ if Ekind (Gen_Unit) = E_Package
+ and then Present (Renamed_Entity (Gen_Unit))
+ and then In_Open_Scopes (Renamed_Entity (Gen_Unit))
+ and then Is_Generic_Instance (Renamed_Entity (Gen_Unit))
+ and then Present (Homonym (Gen_Unit))
+ then
+ Gen_Unit := Homonym (Gen_Unit);
+ end if;
+
if Etype (Gen_Unit) = Any_Type then
Restore_Env;
return;
@@ -3036,9 +3075,6 @@ package body Sem_Ch12 is
-- validate an actual package, the instantiation environment is that
-- of the enclosing instance.
- Generic_Renamings.Set_Last (0);
- Generic_Renamings_HTable.Reset;
-
Create_Instantiation_Source (N, Gen_Unit, False, S_Adjustment);
-- Copy original generic tree, to produce text for instantiation
@@ -6145,6 +6181,7 @@ package body Sem_Ch12 is
function Is_Actual_Of_Previous_Formal (P : Entity_Id) return Boolean;
-- The package in question may be an actual for a previous formal
-- package P of the current instance, so examine its actuals as well.
+ -- This must be recursive over other formal packages.
----------------------------------
-- Is_Actual_Of_Previous_Formal --
@@ -6154,7 +6191,7 @@ package body Sem_Ch12 is
E1 : Entity_Id;
begin
- E1 := First_Entity (E);
+ E1 := First_Entity (P);
while Present (E1) and then E1 /= Instance loop
if Ekind (E1) = E_Package
and then Nkind (Parent (E1)) = N_Package_Renaming_Declaration
@@ -6162,8 +6199,13 @@ package body Sem_Ch12 is
if Renamed_Object (E1) = Pack then
return True;
- elsif Renamed_Object (E1) = P then
+ elsif E1 = P
+ or else Renamed_Object (E1) = P
+ then
return False;
+
+ elsif Is_Actual_Of_Previous_Formal (E1) then
+ return True;
end if;
end if;
@@ -7112,10 +7154,21 @@ package body Sem_Ch12 is
-----------------------------
procedure Install_Formal_Packages (Par : Entity_Id) is
- E : Entity_Id;
+ E : Entity_Id;
+ Gen : Entity_Id;
+ Gen_E : Entity_Id := Empty;
begin
E := First_Entity (Par);
+
+ -- In we are installing an instance parent, locate the formal packages
+ -- of its generic parent.
+
+ if Is_Generic_Instance (Par) then
+ Gen := Generic_Parent (Specification (Unit_Declaration_Node (Par)));
+ Gen_E := First_Entity (Gen);
+ end if;
+
while Present (E) loop
if Ekind (E) = E_Package
and then Nkind (Parent (E)) = N_Package_Renaming_Declaration
@@ -7136,10 +7189,26 @@ package body Sem_Ch12 is
then
Check_Generic_Actuals (Renamed_Object (E), True);
Set_Is_Hidden (E, False);
+
+ -- Find formal package in generic unit that corresponds to
+ -- (instance of) formal package in instance.
+
+ while Present (Gen_E)
+ and then Chars (Gen_E) /= Chars (E)
+ loop
+ Next_Entity (Gen_E);
+ end loop;
+
+ if Present (Gen_E) then
+ Map_Formal_Package_Entities (Gen_E, E);
+ end if;
end if;
end if;
Next_Entity (E);
+ if Present (Gen_E) then
+ Next_Entity (Gen_E);
+ end if;
end loop;
end Install_Formal_Packages;
@@ -7374,19 +7443,6 @@ package body Sem_Ch12 is
-- original generic ancestor. In that case, we recognize that the
-- ultimate ancestor is the same by examining names and scopes.
- procedure Map_Entities (Form : Entity_Id; Act : Entity_Id);
- -- Within the generic part, entities in the formal package are
- -- visible. To validate subsequent type declarations, indicate
- -- the correspondence between the entities in the analyzed formal,
- -- and the entities in the actual package. There are three packages
- -- involved in the instantiation of a formal package: the parent
- -- generic P1 which appears in the generic declaration, the fake
- -- instantiation P2 which appears in the analyzed generic, and whose
- -- visible entities may be used in subsequent formals, and the actual
- -- P3 in the instance. To validate subsequent formals, me indicate
- -- that the entities in P2 are mapped into those of P3. The mapping of
- -- entities has to be done recursively for nested packages.
-
procedure Process_Nested_Formal (Formal : Entity_Id);
-- If the current formal is declared with a box, its own formals are
-- visible in the instance, as they were in the generic, and their
@@ -7567,65 +7623,6 @@ package body Sem_Ch12 is
end if;
end Is_Instance_Of;
- ------------------
- -- Map_Entities --
- ------------------
-
- procedure Map_Entities (Form : Entity_Id; Act : Entity_Id) is
- E1 : Entity_Id;
- E2 : Entity_Id;
-
- begin
- Set_Instance_Of (Form, Act);
-
- -- Traverse formal and actual package to map the corresponding
- -- entities. We skip over internal entities that may be generated
- -- during semantic analysis, and find the matching entities by
- -- name, given that they must appear in the same order.
-
- E1 := First_Entity (Form);
- E2 := First_Entity (Act);
- while Present (E1)
- and then E1 /= First_Private_Entity (Form)
- loop
- -- Could this test be a single condition???
- -- Seems like it could, and isn't FPE (Form) a constant anyway???
-
- if not Is_Internal (E1)
- and then Present (Parent (E1))
- and then not Is_Class_Wide_Type (E1)
- and then not Is_Internal_Name (Chars (E1))
- then
- while Present (E2)
- and then Chars (E2) /= Chars (E1)
- loop
- Next_Entity (E2);
- end loop;
-
- if No (E2) then
- exit;
- else
- Set_Instance_Of (E1, E2);
-
- if Is_Type (E1)
- and then Is_Tagged_Type (E2)
- then
- Set_Instance_Of
- (Class_Wide_Type (E1), Class_Wide_Type (E2));
- end if;
-
- if Ekind (E1) = E_Package
- and then No (Renamed_Object (E1))
- then
- Map_Entities (E1, E2);
- end if;
- end if;
- end if;
-
- Next_Entity (E1);
- end loop;
- end Map_Entities;
-
---------------------------
-- Process_Nested_Formal --
---------------------------
@@ -7711,7 +7708,7 @@ package body Sem_Ch12 is
end if;
Set_Instance_Of (Defining_Identifier (Formal), Actual_Pack);
- Map_Entities (Formal_Pack, Actual_Pack);
+ Map_Formal_Package_Entities (Formal_Pack, Actual_Pack);
Nod :=
Make_Package_Renaming_Declaration (Loc,
@@ -8355,7 +8352,7 @@ package body Sem_Ch12 is
"with volatile actual", Actual);
end if;
- -- OUT not present
+ -- formal in-parameter
else
-- The instantiation of a generic formal in-parameter is constant
@@ -8403,11 +8400,15 @@ package body Sem_Ch12 is
end if;
declare
- Typ : constant Entity_Id :=
- Get_Instance_Of
- (Etype (Defining_Identifier (Analyzed_Formal)));
+ Formal_Object : constant Entity_Id :=
+ Defining_Identifier (Analyzed_Formal);
+ Formal_Type : constant Entity_Id := Etype (Formal_Object);
+
+ Typ : Entity_Id;
begin
+ Typ := Get_Instance_Of (Formal_Type);
+
Freeze_Before (Instantiation_Node, Typ);
-- If the actual is an aggregate, perform name resolution on
@@ -10699,6 +10700,70 @@ package body Sem_Ch12 is
end if;
end Load_Parent_Of_Generic;
+ ---------------------------------
+ -- Map_Formal_Package_Entities --
+ ---------------------------------
+
+ procedure Map_Formal_Package_Entities (Form : Entity_Id; Act : Entity_Id) is
+ E1 : Entity_Id;
+ E2 : Entity_Id;
+
+ begin
+ Set_Instance_Of (Form, Act);
+
+ -- Traverse formal and actual package to map the corresponding entities.
+ -- We skip over internal entities that may be generated during semantic
+ -- analysis, and find the matching entities by name, given that they
+ -- must appear in the same order.
+
+ E1 := First_Entity (Form);
+ E2 := First_Entity (Act);
+ while Present (E1)
+ and then E1 /= First_Private_Entity (Form)
+ loop
+ -- Could this test be a single condition???
+ -- Seems like it could, and isn't FPE (Form) a constant anyway???
+
+ if not Is_Internal (E1)
+ and then Present (Parent (E1))
+ and then not Is_Class_Wide_Type (E1)
+ and then not Is_Internal_Name (Chars (E1))
+ then
+ while Present (E2)
+ and then Chars (E2) /= Chars (E1)
+ loop
+ Next_Entity (E2);
+ end loop;
+
+ if No (E2) then
+ exit;
+ else
+ Set_Instance_Of (E1, E2);
+
+ if Is_Type (E1)
+ and then Is_Tagged_Type (E2)
+ then
+ Set_Instance_Of
+ (Class_Wide_Type (E1), Class_Wide_Type (E2));
+ end if;
+
+ if Is_Constrained (E1) then
+ Set_Instance_Of
+ (Base_Type (E1), Base_Type (E2));
+ end if;
+
+ if Ekind (E1) = E_Package
+ and then No (Renamed_Object (E1))
+ then
+ Map_Formal_Package_Entities (E1, E2);
+ end if;
+ end if;
+ end if;
+
+ Next_Entity (E1);
+ end loop;
+ end Map_Formal_Package_Entities;
+
-----------------------
-- Move_Freeze_Nodes --
-----------------------
@@ -10714,8 +10779,8 @@ package body Sem_Ch12 is
Spec : Node_Id;
function Is_Outer_Type (T : Entity_Id) return Boolean;
- -- Check whether entity is declared in a scope external to that
- -- of the generic unit.
+ -- Check whether entity is declared in a scope external to that of the
+ -- generic unit.
-------------------
-- Is_Outer_Type --
@@ -10823,8 +10888,32 @@ package body Sem_Ch12 is
Act : Node_Id;
Errs : constant Int := Serious_Errors_Detected;
+ Cur : Entity_Id := Empty;
+ -- Current homograph of the instance name
+
+ Vis : Boolean;
+ -- Saved visibility status of the current homograph
+
begin
Assoc := First (Generic_Associations (N));
+
+ -- If the instance is a child unit, its name may hide an outer homonym,
+ -- so make it invisible to perform name resolution on the actuals.
+
+ if Nkind (Defining_Unit_Name (N)) = N_Defining_Program_Unit_Name
+ and then Present
+ (Current_Entity (Defining_Identifier (Defining_Unit_Name (N))))
+ then
+ Cur := Current_Entity (Defining_Identifier (Defining_Unit_Name (N)));
+
+ if Is_Compilation_Unit (Cur) then
+ Vis := Is_Immediately_Visible (Cur);
+ Set_Is_Immediately_Visible (Cur, False);
+ else
+ Cur := Empty;
+ end if;
+ end if;
+
while Present (Assoc) loop
if Nkind (Assoc) /= N_Others_Choice then
Act := Explicit_Generic_Actual_Parameter (Assoc);
@@ -10859,8 +10948,8 @@ package body Sem_Ch12 is
if Nkind (Expr) = N_Subtype_Indication then
Analyze (Subtype_Mark (Expr));
- -- Analyze separately each discriminant constraint,
- -- when given with a named association.
+ -- Analyze separately each discriminant constraint, when
+ -- given with a named association.
declare
Constr : Node_Id;
@@ -10902,12 +10991,26 @@ package body Sem_Ch12 is
Set_Is_Instantiated (Entity (Name (N)));
end if;
+ if Present (Cur) then
+
+ -- For the case of a child instance hiding an outer homonym,
+ -- provide additional warning which might explain the error.
+
+ Set_Is_Immediately_Visible (Cur, Vis);
+ Error_Msg_NE ("& hides outer unit with the same name?",
+ N, Defining_Unit_Name (N));
+ end if;
+
Abandon_Instantiation (Act);
end if;
end if;
Next (Assoc);
end loop;
+
+ if Present (Cur) then
+ Set_Is_Immediately_Visible (Cur, Vis);
+ end if;
end Preanalyze_Actuals;
-------------------
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index 47ffb42384f..b5a3c6bdbfa 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -121,10 +121,14 @@ package body Sem_Ch13 is
-- processing is to take advantage of back-annotations of size and
-- alignment values performed by the back end.
+ -- Note: the reason we store a Source_Ptr value instead of a Node_Id
+ -- is that by the time Validate_Unchecked_Conversions is called, Sprint
+ -- will already have modified all Sloc values if the -gnatD option is set.
+
type UC_Entry is record
- Enode : Node_Id; -- node used for posting warnings
- Source : Entity_Id; -- source type for unchecked conversion
- Target : Entity_Id; -- target type for unchecked conversion
+ Eloc : Source_Ptr; -- node used for posting warnings
+ Source : Entity_Id; -- source type for unchecked conversion
+ Target : Entity_Id; -- target type for unchecked conversion
end record;
package Unchecked_Conversions is new Table.Table (
@@ -4398,7 +4402,7 @@ package body Sem_Ch13 is
if Warn_On_Unchecked_Conversion then
Unchecked_Conversions.Append
(New_Val => UC_Entry'
- (Enode => N,
+ (Eloc => Sloc (N),
Source => Source,
Target => Target));
@@ -4455,9 +4459,9 @@ package body Sem_Ch13 is
declare
T : UC_Entry renames Unchecked_Conversions.Table (N);
- Enode : constant Node_Id := T.Enode;
- Source : constant Entity_Id := T.Source;
- Target : constant Entity_Id := T.Target;
+ Eloc : constant Source_Ptr := T.Eloc;
+ Source : constant Entity_Id := T.Source;
+ Target : constant Entity_Id := T.Target;
Source_Siz : Uint;
Target_Siz : Uint;
@@ -4472,22 +4476,29 @@ package body Sem_Ch13 is
if Serious_Errors_Detected = 0
and then Known_Static_RM_Size (Source)
and then Known_Static_RM_Size (Target)
+
+ -- Don't do the check if warnings off for either type, note the
+ -- deliberate use of OR here instead of OR ELSE to get the flag
+ -- Warnings_Off_Used set for both types if appropriate.
+
+ and then not (Has_Warnings_Off (Source)
+ or
+ Has_Warnings_Off (Target))
then
Source_Siz := RM_Size (Source);
Target_Siz := RM_Size (Target);
if Source_Siz /= Target_Siz then
- Error_Msg_N
+ Error_Msg
("?types for unchecked conversion have different sizes!",
- Enode);
+ Eloc);
if All_Errors_Mode then
Error_Msg_Name_1 := Chars (Source);
Error_Msg_Uint_1 := Source_Siz;
Error_Msg_Name_2 := Chars (Target);
Error_Msg_Uint_2 := Target_Siz;
- Error_Msg_N
- ("\size of % is ^, size of % is ^?", Enode);
+ Error_Msg ("\size of % is ^, size of % is ^?", Eloc);
Error_Msg_Uint_1 := UI_Abs (Source_Siz - Target_Siz);
@@ -4495,46 +4506,46 @@ package body Sem_Ch13 is
and then Is_Discrete_Type (Target)
then
if Source_Siz > Target_Siz then
- Error_Msg_N
+ Error_Msg
("\?^ high order bits of source will be ignored!",
- Enode);
+ Eloc);
elsif Is_Unsigned_Type (Source) then
- Error_Msg_N
+ Error_Msg
("\?source will be extended with ^ high order " &
- "zero bits?!", Enode);
+ "zero bits?!", Eloc);
else
- Error_Msg_N
+ Error_Msg
("\?source will be extended with ^ high order " &
"sign bits!",
- Enode);
+ Eloc);
end if;
elsif Source_Siz < Target_Siz then
if Is_Discrete_Type (Target) then
if Bytes_Big_Endian then
- Error_Msg_N
+ Error_Msg
("\?target value will include ^ undefined " &
"low order bits!",
- Enode);
+ Eloc);
else
- Error_Msg_N
+ Error_Msg
("\?target value will include ^ undefined " &
"high order bits!",
- Enode);
+ Eloc);
end if;
else
- Error_Msg_N
+ Error_Msg
("\?^ trailing bits of target value will be " &
- "undefined!", Enode);
+ "undefined!", Eloc);
end if;
else pragma Assert (Source_Siz > Target_Siz);
- Error_Msg_N
+ Error_Msg
("\?^ trailing bits of source will be ignored!",
- Enode);
+ Eloc);
end if;
end if;
end if;
@@ -4565,19 +4576,31 @@ package body Sem_Ch13 is
begin
if Source_Align < Target_Align
and then not Is_Tagged_Type (D_Source)
+
+ -- Suppress warning if warnings suppressed on either
+ -- type or either designated type. Note the use of
+ -- OR here instead of OR ELSE. That is intentional,
+ -- we would like to set flag Warnings_Off_Used in
+ -- all types for which warnings are suppressed.
+
+ and then not (Has_Warnings_Off (D_Source)
+ or
+ Has_Warnings_Off (D_Target)
+ or
+ Has_Warnings_Off (Source)
+ or
+ Has_Warnings_Off (Target))
then
Error_Msg_Uint_1 := Target_Align;
Error_Msg_Uint_2 := Source_Align;
+ Error_Msg_Node_1 := D_Target;
Error_Msg_Node_2 := D_Source;
- Error_Msg_NE
+ Error_Msg
("?alignment of & (^) is stricter than " &
- "alignment of & (^)!", Enode, D_Target);
-
- if All_Errors_Mode then
- Error_Msg_N
- ("\?resulting access value may have invalid " &
- "alignment!", Enode);
- end if;
+ "alignment of & (^)!", Eloc);
+ Error_Msg
+ ("\?resulting access value may have invalid " &
+ "alignment!", Eloc);
end if;
end;
end if;
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index 8f3c75ef70e..e80c6626a3b 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -993,9 +993,9 @@ package body Sem_Ch3 is
is
procedure Check_For_Premature_Usage (Def : Node_Id);
- -- Check that type T_Name is not used, directly or recursively,
- -- as a parameter or a return type in Def. Def is either a subtype,
- -- an access_definition, or an access_to_subprogram_definition.
+ -- Check that type T_Name is not used, directly or recursively, as a
+ -- parameter or a return type in Def. Def is either a subtype, an
+ -- access_definition, or an access_to_subprogram_definition.
-------------------------------
-- Check_For_Premature_Usage --
@@ -1135,7 +1135,27 @@ package body Sem_Ch3 is
(T => Typ,
Related_Nod => T_Def,
Scope_Id => Current_Scope));
+
else
+ if From_With_Type (Typ) then
+ Error_Msg_NE
+ ("illegal use of incomplete type&",
+ Result_Definition (T_Def), Typ);
+
+ elsif Ekind (Current_Scope) = E_Package
+ and then In_Private_Part (Current_Scope)
+ then
+ if Ekind (Typ) = E_Incomplete_Type then
+ Append_Elmt (Desig_Type, Private_Dependents (Typ));
+
+ elsif Is_Class_Wide_Type (Typ)
+ and then Ekind (Etype (Typ)) = E_Incomplete_Type
+ then
+ Append_Elmt
+ (Desig_Type, Private_Dependents (Etype (Typ)));
+ end if;
+ end if;
+
Set_Etype (Desig_Type, Typ);
end if;
end;
@@ -3326,6 +3346,21 @@ package body Sem_Ch3 is
end if;
end if;
+ -- A consequence of 3.9.4 (6/2) and 7.3 (7.2/2) is that a private
+ -- extension with a synchronized parent must be explicitly declared
+ -- synchronized, because the full view will be a synchronized type.
+ -- This must be checked before the check for limited types below,
+ -- to ensure that types declared limited are not allowed to extend
+ -- synchronized interfaces.
+
+ elsif Is_Interface (Parent_Type)
+ and then Is_Synchronized_Interface (Parent_Type)
+ and then not Synchronized_Present (N)
+ then
+ Error_Msg_NE
+ ("private extension of& must be explicitly synchronized",
+ N, Parent_Type);
+
elsif Limited_Present (N) then
Set_Is_Limited_Record (T);
@@ -3337,18 +3372,6 @@ package body Sem_Ch3 is
Error_Msg_NE ("parent type& of limited extension must be limited",
N, Parent_Type);
end if;
-
- -- A consequence of 3.9.4 (6/2) and 7.3 (2.2/2) is that a private
- -- extension with a synchronized parent must be explicitly declared
- -- synchronized, because the full view will be a synchronized type.
-
- elsif Is_Interface (Parent_Type)
- and then Is_Synchronized_Interface (Parent_Type)
- and then not Synchronized_Present (N)
- then
- Error_Msg_NE
- ("private extension of& must be explicitly synchronized",
- N, Parent_Type);
end if;
end Analyze_Private_Extension_Declaration;
@@ -3583,11 +3606,13 @@ package body Sem_Ch3 is
-- A Pure library_item must not contain the declaration of a
-- named access type, except within a subprogram, generic
- -- subprogram, task unit, or protected unit (RM 10.2.1(16)).
+ -- subprogram, task unit, or protected unit, or if it has
+ -- a specified Storage_Size of zero (RM05-10.2.1(15.4-15.5)).
if Comes_From_Source (Id)
and then In_Pure_Unit
and then not In_Subprogram_Task_Protected_Unit
+ and then not No_Pool_Assigned (Id)
then
Error_Msg_N
("named access types not allowed in pure unit", N);
@@ -4009,7 +4034,12 @@ package body Sem_Ch3 is
-- subtype. Freeze_Entity will use this preallocated freeze node when
-- it freezes the entity.
- if B /= T then
+ -- This does not apply if the base type is a generic type, whose
+ -- declaration is independent of the current derived definition.
+
+ if B /= T
+ and then not Is_Generic_Type (B)
+ then
Ensure_Freeze_Node (B);
Set_First_Subtype_Link (Freeze_Node (B), T);
end if;
@@ -5030,22 +5060,35 @@ package body Sem_Ch3 is
Hi : Node_Id;
begin
- Lo :=
- Make_Attribute_Reference (Loc,
- Attribute_Name => Name_First,
- Prefix => New_Reference_To (Derived_Type, Loc));
- Set_Etype (Lo, Derived_Type);
+ if Nkind (Indic) /= N_Subtype_Indication then
+ Lo :=
+ Make_Attribute_Reference (Loc,
+ Attribute_Name => Name_First,
+ Prefix => New_Reference_To (Derived_Type, Loc));
+ Set_Etype (Lo, Derived_Type);
+
+ Hi :=
+ Make_Attribute_Reference (Loc,
+ Attribute_Name => Name_Last,
+ Prefix => New_Reference_To (Derived_Type, Loc));
+ Set_Etype (Hi, Derived_Type);
+
+ Set_Scalar_Range (Derived_Type,
+ Make_Range (Loc,
+ Low_Bound => Lo,
+ High_Bound => Hi));
+ else
- Hi :=
- Make_Attribute_Reference (Loc,
- Attribute_Name => Name_Last,
- Prefix => New_Reference_To (Derived_Type, Loc));
- Set_Etype (Hi, Derived_Type);
-
- Set_Scalar_Range (Derived_Type,
- Make_Range (Loc,
- Low_Bound => Lo,
- High_Bound => Hi));
+ -- Analyze subtype indication and verify compatibility
+ -- with parent type.
+
+ if Base_Type (Process_Subtype (Indic, N)) /=
+ Base_Type (Parent_Type)
+ then
+ Error_Msg_N
+ ("illegal constraint for formal discrete type", N);
+ end if;
+ end if;
end;
else
@@ -5437,6 +5480,7 @@ package body Sem_Ch3 is
Is_Completion : Boolean;
Derive_Subps : Boolean := True)
is
+ Loc : constant Source_Ptr := Sloc (N);
Der_Base : Entity_Id;
Discr : Entity_Id;
Full_Decl : Node_Id := Empty;
@@ -5479,8 +5523,70 @@ package body Sem_Ch3 is
begin
if Is_Tagged_Type (Parent_Type) then
- Build_Derived_Record_Type
- (N, Parent_Type, Derived_Type, Derive_Subps);
+
+ -- A type extension of a type with unknown discriminants is an
+ -- indefinite type that the back-end cannot handle directly.
+ -- We treat it as a private type, and build a completion that is
+ -- derived from the full view of the parent, and hopefully has
+ -- known discriminants. The implementation of more complex chains
+ -- of derivation with unknown discriminants is left to the more
+ -- enterprising reader.
+
+ if Has_Unknown_Discriminants (Parent_Type)
+ and then Present (Full_View (Parent_Type))
+ and then not In_Open_Scopes (Par_Scope)
+ and then not Is_Completion
+ and then Expander_Active
+ then
+ declare
+ Full_Der : constant Entity_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_Internal_Name ('T'));
+ Decl : Node_Id;
+ New_Ext : constant Node_Id :=
+ Copy_Separate_Tree
+ (Record_Extension_Part (Type_Definition (N)));
+
+ begin
+ Build_Derived_Record_Type
+ (N, Parent_Type, Derived_Type, Derive_Subps);
+
+ -- Build anonymous completion, as a derivation from the full
+ -- view of the parent.
+
+ Decl :=
+ Make_Full_Type_Declaration (Loc,
+ Defining_Identifier => Full_Der,
+ Type_Definition =>
+ Make_Derived_Type_Definition (Loc,
+ Subtype_Indication =>
+ New_Copy_Tree
+ (Subtype_Indication (Type_Definition (N))),
+ Record_Extension_Part => New_Ext));
+ Set_Has_Private_Declaration (Full_Der);
+ Set_Has_Private_Declaration (Derived_Type);
+
+ Install_Private_Declarations (Par_Scope);
+ Install_Visible_Declarations (Par_Scope);
+ Insert_Before (N, Decl);
+ Analyze (Decl);
+ Uninstall_Declarations (Par_Scope);
+
+ -- Freeze the underlying record view, to prevent generation
+ -- of useless dispatching information, which is simply shared
+ -- with the real derived type.
+
+ Set_Is_Frozen (Full_Der);
+ Set_Underlying_Record_View (Derived_Type, Full_Der);
+ end;
+
+ -- if discriminants are known, build derived record
+
+ else
+ Build_Derived_Record_Type
+ (N, Parent_Type, Derived_Type, Derive_Subps);
+ end if;
+
return;
elsif Has_Discriminants (Parent_Type) then
@@ -5513,8 +5619,8 @@ package body Sem_Ch3 is
Build_Underlying_Full_View (N, Derived_Type, Parent_Type);
elsif Is_Constrained (Full_View (Parent_Type)) then
- Set_Underlying_Full_View (Derived_Type,
- Full_View (Parent_Type));
+ Set_Underlying_Full_View
+ (Derived_Type, Full_View (Parent_Type));
end if;
else
@@ -7227,10 +7333,11 @@ package body Sem_Ch3 is
Set_Etype (Derived_Type, Parent_Base);
Set_Has_Task (Derived_Type, Has_Task (Parent_Base));
- Set_Size_Info (Derived_Type, Parent_Type);
- Set_RM_Size (Derived_Type, RM_Size (Parent_Type));
- Set_Convention (Derived_Type, Convention (Parent_Type));
- Set_Is_Controlled (Derived_Type, Is_Controlled (Parent_Type));
+ Set_Size_Info (Derived_Type, Parent_Type);
+ Set_RM_Size (Derived_Type, RM_Size (Parent_Type));
+ Set_Convention (Derived_Type, Convention (Parent_Type));
+ Set_Is_Controlled (Derived_Type, Is_Controlled (Parent_Type));
+ Set_Is_Tagged_Type (Derived_Type, Is_Tagged_Type (Parent_Type));
-- The derived type inherits the representation clauses of the parent.
-- However, for a private type that is completed by a derivation, there
@@ -8712,6 +8819,33 @@ package body Sem_Ch3 is
Is_Protected := True;
end if;
+ if Is_Synchronized_Interface (Iface_Id) then
+
+ -- A consequence of 3.9.4 (6/2) and 7.3 (7.2/2) is that a private
+ -- extension derived from a synchronized interface must explicitly
+ -- be declared synchronized, because the full view will be a
+ -- synchronized type.
+
+ if Nkind (N) = N_Private_Extension_Declaration then
+ if not Synchronized_Present (N) then
+ Error_Msg_NE
+ ("private extension of& must be explicitly synchronized",
+ N, Iface_Id);
+ end if;
+
+ -- However, by 3.9.4(16/2), a full type that is a record extension
+ -- is never allowed to derive from a synchronized interface (note
+ -- that interfaces must be excluded from this check, because those
+ -- are represented by derived type definitions in some cases).
+
+ elsif Nkind (Type_Definition (N)) = N_Derived_Type_Definition
+ and then not Interface_Present (Type_Definition (N))
+ then
+ Error_Msg_N ("record extension cannot derive from synchronized"
+ & " interface", Error_Node);
+ end if;
+ end if;
+
-- Check that the characteristics of the progenitor are compatible
-- with the explicit qualifier in the declaration.
-- The check only applies to qualifiers that come from source.
@@ -13472,6 +13606,9 @@ package body Sem_Ch3 is
Error_Msg_NE (
"full declaration of } must be a record extension",
Prev, Id);
+
+ -- Set some attributes to produce a usable full view
+
Set_Is_Tagged_Type (Id);
Set_Primitive_Operations (Id, New_Elmt_List);
end if;
@@ -16819,6 +16956,10 @@ package body Sem_Ch3 is
E_Incomplete_Type =>
Constrain_Discriminated_Type (Def_Id, S, Related_Nod);
+ if Ekind (Def_Id) = E_Incomplete_Type then
+ Set_Private_Dependents (Def_Id, New_Elmt_List);
+ end if;
+
when Private_Kind =>
Constrain_Discriminated_Type (Def_Id, S, Related_Nod);
Set_Private_Dependents (Def_Id, New_Elmt_List);
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index e9a20c5a70d..e572f56905b 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -127,10 +127,10 @@ package body Sem_Ch4 is
procedure Check_Misspelled_Selector
(Prefix : Entity_Id;
Sel : Node_Id);
- -- Give possible misspelling diagnostic if Sel is likely to be
- -- a misspelling of one of the selectors of the Prefix.
- -- This is called by Analyze_Selected_Component after producing
- -- an invalid selector error message.
+ -- Give possible misspelling diagnostic if Sel is likely to be a mis-
+ -- spelling of one of the selectors of the Prefix. This is called by
+ -- Analyze_Selected_Component after producing an invalid selector error
+ -- message.
function Defined_In_Scope (T : Entity_Id; S : Entity_Id) return Boolean;
-- Verify that type T is declared in scope S. Used to find interpretations
@@ -4697,17 +4697,19 @@ package body Sem_Ch4 is
Scop : Entity_Id := Empty;
procedure Try_One_Interp (T1 : Entity_Id);
- -- The context of the operator plays no role in resolving the
- -- arguments, so that if there is more than one interpretation
- -- of the operands that is compatible with equality, the construct
- -- is ambiguous and an error can be emitted now, after trying to
- -- disambiguate, i.e. applying preference rules.
+ -- The context of the equality operator plays no role in resolving the
+ -- arguments, so that if there is more than one interpretation of the
+ -- operands that is compatible with equality, the construct is ambiguous
+ -- and an error can be emitted now, after trying to disambiguate, i.e.
+ -- applying preference rules.
--------------------
-- Try_One_Interp --
--------------------
procedure Try_One_Interp (T1 : Entity_Id) is
+ Bas : constant Entity_Id := Base_Type (T1);
+
begin
-- If the operator is an expanded name, then the type of the operand
-- must be defined in the corresponding scope. If the type is
@@ -4725,7 +4727,7 @@ package body Sem_Ch4 is
or else T1 = Any_String
or else T1 = Any_Composite
or else (Ekind (T1) = E_Access_Subprogram_Type
- and then not Comes_From_Source (T1))
+ and then not Comes_From_Source (T1))
then
null;
@@ -4739,6 +4741,32 @@ package body Sem_Ch4 is
return;
end if;
+
+ -- If we have infix notation, the operator must be usable.
+ -- Within an instance, if the type is already established we
+ -- know it is correct.
+ -- In Ada 2005, the equality on anonymous access types is declared
+ -- in Standard, and is always visible.
+
+ elsif In_Open_Scopes (Scope (Bas))
+ or else Is_Potentially_Use_Visible (Bas)
+ or else In_Use (Bas)
+ or else (In_Use (Scope (Bas))
+ and then not Is_Hidden (Bas))
+ or else (In_Instance
+ and then First_Subtype (T1) = First_Subtype (Etype (R)))
+ or else Ekind (T1) = E_Anonymous_Access_Type
+ then
+ null;
+
+ else
+ -- Save candidate type for subsquent error message, if any
+
+ if not Is_Limited_Type (T1) then
+ Candidate_Type := T1;
+ end if;
+
+ return;
end if;
-- Ada 2005 (AI-230): Keep restriction imposed by Ada 83 and 95:
diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb
index 6a387d6fc31..5cf092c9917 100644
--- a/gcc/ada/sem_ch5.adb
+++ b/gcc/ada/sem_ch5.adb
@@ -2031,7 +2031,13 @@ package body Sem_Ch5 is
Process_End_Label (Loop_Statement, 'e', Ent);
End_Scope;
Kill_Current_Values;
- Check_Infinite_Loop_Warning (N);
+
+ -- Check for infinite loop. We skip this check for generated code, since
+ -- it justs waste time and makes debugging the routine called harder.
+
+ if Comes_From_Source (N) then
+ Check_Infinite_Loop_Warning (N);
+ end if;
-- Code after loop is unreachable if the loop has no WHILE or FOR
-- and contains no EXIT statements within the body of the loop.
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index c206c4b3eba..c51f8435fd4 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -47,6 +47,8 @@ with Nlists; use Nlists;
with Nmake; use Nmake;
with Opt; use Opt;
with Output; use Output;
+with Restrict; use Restrict;
+with Rident; use Rident;
with Rtsfind; use Rtsfind;
with Sem; use Sem;
with Sem_Aux; use Sem_Aux;
@@ -107,6 +109,9 @@ package body Sem_Ch6 is
-- specification, in a context where the formals are visible and hide
-- outer homographs.
+ procedure Analyze_Subprogram_Body_Helper (N : Node_Id);
+ -- Does all the real work of Analyze_Subprogram_Body
+
procedure Analyze_Generic_Subprogram_Body (N : Node_Id; Gen_Id : Entity_Id);
-- Analyze a generic subprogram body. N is the body to be analyzed, and
-- Gen_Id is the defining entity Id for the corresponding spec.
@@ -1326,8 +1331,8 @@ package body Sem_Ch6 is
and then
Ekind (Root_Type (Typ)) = E_Incomplete_Type)
then
- Error_Msg_N
- ("invalid use of incomplete type", Result_Definition (N));
+ Error_Msg_NE
+ ("invalid use of incomplete type&", Designator, Typ);
end if;
end if;
@@ -1342,12 +1347,48 @@ package body Sem_Ch6 is
-- Analyze_Subprogram_Body --
-----------------------------
+ procedure Analyze_Subprogram_Body (N : Node_Id) is
+ Loc : constant Source_Ptr := Sloc (N);
+ Body_Spec : constant Node_Id := Specification (N);
+ Body_Id : constant Entity_Id := Defining_Entity (Body_Spec);
+
+ begin
+ if Debug_Flag_C then
+ Write_Str ("==> subprogram body ");
+ Write_Name (Chars (Body_Id));
+ Write_Str (" from ");
+ Write_Location (Loc);
+ Write_Eol;
+ Indent;
+ end if;
+
+ Trace_Scope (N, Body_Id, " Analyze subprogram: ");
+
+ -- The real work is split out into the helper, so it can do "return;"
+ -- without skipping the debug output:
+
+ Analyze_Subprogram_Body_Helper (N);
+
+ if Debug_Flag_C then
+ Outdent;
+ Write_Str ("<== subprogram body ");
+ Write_Name (Chars (Body_Id));
+ Write_Str (" from ");
+ Write_Location (Loc);
+ Write_Eol;
+ end if;
+ end Analyze_Subprogram_Body;
+
+ ------------------------------------
+ -- Analyze_Subprogram_Body_Helper --
+ ------------------------------------
+
-- This procedure is called for regular subprogram bodies, generic bodies,
-- and for subprogram stubs of both kinds. In the case of stubs, only the
-- specification matters, and is used to create a proper declaration for
-- the subprogram, or to perform conformance checks.
- procedure Analyze_Subprogram_Body (N : Node_Id) is
+ procedure Analyze_Subprogram_Body_Helper (N : Node_Id) is
Loc : constant Source_Ptr := Sloc (N);
Body_Deleted : constant Boolean := False;
Body_Spec : constant Node_Id := Specification (N);
@@ -1446,6 +1487,11 @@ package body Sem_Ch6 is
and then
Is_Limited_Record (Designated_Type (Etype (Scop)))))
and then Expander_Active
+
+ -- Avoid cases with no tasking support
+
+ and then RTE_Available (RE_Current_Master)
+ and then not Restriction_Active (No_Task_Hierarchy)
then
Decl :=
Make_Object_Declaration (Loc,
@@ -1766,10 +1812,12 @@ package body Sem_Ch6 is
("subprogram & overrides predefined operator ",
Body_Spec, Spec_Id);
- -- If this is not a primitive operation the overriding indicator
- -- is altogether illegal.
+ -- If this is not a primitive operation or protected subprogram,
+ -- then the overriding indicator is altogether illegal.
- elsif not Is_Primitive (Spec_Id) then
+ elsif not Is_Primitive (Spec_Id)
+ and then Ekind (Scope (Spec_Id)) /= E_Protected_Type
+ then
Error_Msg_N ("overriding indicator only allowed " &
"if subprogram is primitive",
Body_Spec);
@@ -1783,19 +1831,9 @@ package body Sem_Ch6 is
end if;
end Verify_Overriding_Indicator;
- -- Start of processing for Analyze_Subprogram_Body
+ -- Start of processing for Analyze_Subprogram_Body_Helper
begin
- if Debug_Flag_C then
- Write_Str ("==== Compiling subprogram body ");
- Write_Name (Chars (Body_Id));
- Write_Str (" from ");
- Write_Location (Loc);
- Write_Eol;
- end if;
-
- Trace_Scope (N, Body_Id, " Analyze subprogram: ");
-
-- Generic subprograms are handled separately. They always have a
-- generic specification. Determine whether current scope has a
-- previous declaration.
@@ -2556,7 +2594,7 @@ package body Sem_Ch6 is
Check_References (Body_Id);
end if;
end;
- end Analyze_Subprogram_Body;
+ end Analyze_Subprogram_Body_Helper;
------------------------------------
-- Analyze_Subprogram_Declaration --
@@ -2570,6 +2608,15 @@ package body Sem_Ch6 is
-- Start of processing for Analyze_Subprogram_Declaration
begin
+ if Debug_Flag_C then
+ Write_Str ("==> subprogram spec ");
+ Write_Name (Chars (Designator));
+ Write_Str (" from ");
+ Write_Location (Sloc (N));
+ Write_Eol;
+ Indent;
+ end if;
+
Generate_Definition (Designator);
-- Check for RCI unit subprogram declarations for illegal inlined
@@ -2583,14 +2630,6 @@ package body Sem_Ch6 is
Defining_Entity (N),
" Analyze subprogram spec: ");
- if Debug_Flag_C then
- Write_Str ("==== Compiling subprogram spec ");
- Write_Name (Chars (Designator));
- Write_Str (" from ");
- Write_Location (Sloc (N));
- Write_Eol;
- end if;
-
New_Overloaded_Entity (Designator);
Check_Delayed_Subprogram (Designator);
@@ -2710,6 +2749,15 @@ package body Sem_Ch6 is
("protected operation cannot be a null procedure", N);
end if;
end if;
+
+ if Debug_Flag_C then
+ Outdent;
+ Write_Str ("<== subprogram spec ");
+ Write_Name (Chars (Designator));
+ Write_Str (" from ");
+ Write_Location (Sloc (N));
+ Write_Eol;
+ end if;
end Analyze_Subprogram_Declaration;
--------------------------------------
@@ -3954,9 +4002,9 @@ package body Sem_Ch6 is
procedure Possible_Freeze (T : Entity_Id);
-- T is the type of either a formal parameter or of the return type.
-- If T is not yet frozen and needs a delayed freeze, then the
- -- subprogram itself must be delayed. If T is the limited view of
- -- of an incomplete type the subprogram must be frozen as well,
- -- because T may depend on local types that have not been frozen yet.
+ -- subprogram itself must be delayed. If T is the limited view of an
+ -- incomplete type the subprogram must be frozen as well, because
+ -- T may depend on local types that have not been frozen yet.
---------------------
-- Possible_Freeze --
@@ -3964,9 +4012,7 @@ package body Sem_Ch6 is
procedure Possible_Freeze (T : Entity_Id) is
begin
- if Has_Delayed_Freeze (T)
- and then not Is_Frozen (T)
- then
+ if Has_Delayed_Freeze (T) and then not Is_Frozen (T) then
Set_Has_Delayed_Freeze (Designator);
elsif Is_Access_Type (T)
@@ -3975,11 +4021,10 @@ package body Sem_Ch6 is
then
Set_Has_Delayed_Freeze (Designator);
- elsif Ekind (T) = E_Incomplete_Type
- and then From_With_Type (T)
- then
+ elsif Ekind (T) = E_Incomplete_Type and then From_With_Type (T) then
Set_Has_Delayed_Freeze (Designator);
end if;
+
end Possible_Freeze;
-- Start of processing for Check_Delayed_Subprogram
@@ -4284,14 +4329,15 @@ package body Sem_Ch6 is
Set_Is_Overriding_Operation (Subp);
end if;
- -- If primitive flag is set, operation is overriding at the
- -- point of its declaration, so warn if necessary. Otherwise
- -- it may have been declared before the operation it overrides
- -- and no check is required.
+ -- If primitive flag is set or this is a protected operation, then
+ -- the operation is overriding at the point of its declaration, so
+ -- warn if necessary. Otherwise it may have been declared before the
+ -- operation it overrides and no check is required.
if Style_Check
- and then not Must_Override (Spec)
- and then Is_Primitive
+ and then not Must_Override (Spec)
+ and then (Is_Primitive
+ or else Ekind (Scope (Subp)) = E_Protected_Type)
then
Style.Missing_Overriding (Decl, Subp);
end if;
@@ -4309,7 +4355,13 @@ package body Sem_Ch6 is
elsif Nkind (Subp) = N_Defining_Operator_Symbol then
if Must_Not_Override (Spec) then
- if not Is_Primitive then
+
+ -- If this is not a primitive operation or protected subprogram,
+ -- then "not overriding" is illegal.
+
+ if not Is_Primitive
+ and then Ekind (Scope (Subp)) /= E_Protected_Type
+ then
Error_Msg_N
("overriding indicator only allowed "
& "if subprogram is primitive", Subp);
@@ -7706,10 +7758,28 @@ package body Sem_Ch6 is
(Is_Class_Wide_Type (Formal_Type)
and then Is_Incomplete_Type (Root_Type (Formal_Type)))
then
- -- Ada 2005 (AI-326): Tagged incomplete types allowed
+ -- Ada 2005 (AI-326): Tagged incomplete types allowed in
+ -- primitive operations, as long as their completion is
+ -- in the same declarative part. If in the private part
+ -- this means that the type cannot be a Taft-amendment type.
+ -- Check is done on package exit. For access to subprograms,
+ -- the use is legal for Taft-amendment types.
if Is_Tagged_Type (Formal_Type) then
- null;
+ if Ekind (Scope (Current_Scope)) = E_Package
+ and then In_Private_Part (Scope (Current_Scope))
+ and then not From_With_Type (Formal_Type)
+ and then not Is_Class_Wide_Type (Formal_Type)
+ then
+ if not Nkind_In
+ (Parent (T), N_Access_Function_Definition,
+ N_Access_Procedure_Definition)
+ then
+ Append_Elmt
+ (Current_Scope,
+ Private_Dependents (Base_Type (Formal_Type)));
+ end if;
+ end if;
-- Special handling of Value_Type for CIL case
@@ -7719,15 +7789,13 @@ package body Sem_Ch6 is
elsif not Nkind_In (Parent (T), N_Access_Function_Definition,
N_Access_Procedure_Definition)
then
- Error_Msg_N ("invalid use of incomplete type", Param_Spec);
-
- -- An incomplete type that is not tagged is allowed in an
- -- access-to-subprogram type only if it is a local declaration
- -- with a forthcoming completion (3.10.1 (9.2/2)).
+ Error_Msg_NE
+ ("invalid use of incomplete type&",
+ Param_Spec, Formal_Type);
- elsif Scope (Formal_Type) /= Scope (Current_Scope) then
- Error_Msg_N
- ("invalid use of limited view of type", Param_Spec);
+ -- Further checks on the legality of incomplete types
+ -- in formal parts must be delayed until the freeze point
+ -- of the enclosing subprogram or access to subprogram.
end if;
elsif Ekind (Formal_Type) = E_Void then
diff --git a/gcc/ada/sem_ch7.adb b/gcc/ada/sem_ch7.adb
index 7b9edd48e28..e344a5802db 100644
--- a/gcc/ada/sem_ch7.adb
+++ b/gcc/ada/sem_ch7.adb
@@ -25,8 +25,8 @@
-- This package contains the routines to process package specifications and
-- bodies. The most important semantic aspects of package processing are the
--- handling of private and full declarations, and the construction of
--- dispatch tables for tagged types.
+-- handling of private and full declarations, and the construction of dispatch
+-- tables for tagged types.
with Atree; use Atree;
with Debug; use Debug;
@@ -90,6 +90,9 @@ package body Sem_Ch7 is
-- Local Subprograms --
-----------------------
+ procedure Analyze_Package_Body_Helper (N : Node_Id);
+ -- Does all the real work of Analyze_Package_Body
+
procedure Check_Anonymous_Access_Types
(Spec_Id : Entity_Id;
P_Body : Node_Id);
@@ -102,9 +105,9 @@ package body Sem_Ch7 is
-- before other body declarations.
procedure Install_Package_Entity (Id : Entity_Id);
- -- Supporting procedure for Install_{Visible,Private}_Declarations.
- -- Places one entity on its visibility chain, and recurses on the visible
- -- part if the entity is an inner package.
+ -- Supporting procedure for Install_{Visible,Private}_Declarations. Places
+ -- one entity on its visibility chain, and recurses on the visible part if
+ -- the entity is an inner package.
function Is_Private_Base_Type (E : Entity_Id) return Boolean;
-- True for a private type that is not a subtype
@@ -135,7 +138,38 @@ package body Sem_Ch7 is
--------------------------
procedure Analyze_Package_Body (N : Node_Id) is
- Loc : constant Source_Ptr := Sloc (N);
+ Loc : constant Source_Ptr := Sloc (N);
+
+ begin
+ if Debug_Flag_C then
+ Write_Str ("==> package body ");
+ Write_Name (Chars (Defining_Entity (N)));
+ Write_Str (" from ");
+ Write_Location (Loc);
+ Write_Eol;
+ Indent;
+ end if;
+
+ -- The real work is split out into the helper, so it can do "return;"
+ -- without skipping the debug output.
+
+ Analyze_Package_Body_Helper (N);
+
+ if Debug_Flag_C then
+ Outdent;
+ Write_Str ("<== package body ");
+ Write_Name (Chars (Defining_Entity (N)));
+ Write_Str (" from ");
+ Write_Location (Loc);
+ Write_Eol;
+ end if;
+ end Analyze_Package_Body;
+
+ ---------------------------------
+ -- Analyze_Package_Body_Helper --
+ ---------------------------------
+
+ procedure Analyze_Package_Body_Helper (N : Node_Id) is
HSS : Node_Id;
Body_Id : Entity_Id;
Spec_Id : Entity_Id;
@@ -144,10 +178,10 @@ package body Sem_Ch7 is
Pack_Decl : Node_Id;
procedure Install_Composite_Operations (P : Entity_Id);
- -- Composite types declared in the current scope may depend on
- -- types that were private at the point of declaration, and whose
- -- full view is now in scope. Indicate that the corresponding
- -- operations on the composite type are available.
+ -- Composite types declared in the current scope may depend on types
+ -- that were private at the point of declaration, and whose full view
+ -- is now in scope. Indicate that the corresponding operations on the
+ -- composite type are available.
----------------------------------
-- Install_Composite_Operations --
@@ -172,33 +206,25 @@ package body Sem_Ch7 is
end loop;
end Install_Composite_Operations;
- -- Start of processing for Analyze_Package_Body
+ -- Start of processing for Analyze_Package_Body_Helper
begin
- -- Find corresponding package specification, and establish the
- -- current scope. The visible defining entity for the package is the
- -- defining occurrence in the spec. On exit from the package body, all
- -- body declarations are attached to the defining entity for the body,
- -- but the later is never used for name resolution. In this fashion
- -- there is only one visible entity that denotes the package.
-
- if Debug_Flag_C then
- Write_Str ("==== Compiling package body ");
- Write_Name (Chars (Defining_Entity (N)));
- Write_Str (" from ");
- Write_Location (Loc);
- Write_Eol;
- end if;
+ -- Find corresponding package specification, and establish the current
+ -- scope. The visible defining entity for the package is the defining
+ -- occurrence in the spec. On exit from the package body, all body
+ -- declarations are attached to the defining entity for the body, but
+ -- the later is never used for name resolution. In this fashion there
+ -- is only one visible entity that denotes the package.
- -- Set Body_Id. Note that this Will be reset to point to the
- -- generic copy later on in the generic case.
+ -- Set Body_Id. Note that this Will be reset to point to the generic
+ -- copy later on in the generic case.
Body_Id := Defining_Entity (N);
if Present (Corresponding_Spec (N)) then
- -- Body is body of package instantiation. Corresponding spec
- -- has already been set.
+ -- Body is body of package instantiation. Corresponding spec has
+ -- already been set.
Spec_Id := Corresponding_Spec (N);
Pack_Decl := Unit_Declaration_Node (Spec_Id);
@@ -257,8 +283,8 @@ package body Sem_Ch7 is
if Ekind (Spec_Id) = E_Generic_Package then
- -- Disable expansion and perform semantic analysis on copy.
- -- The unannotated body will be used in all instantiations.
+ -- Disable expansion and perform semantic analysis on copy. The
+ -- unannotated body will be used in all instantiations.
Body_Id := Defining_Entity (N);
Set_Ekind (Body_Id, E_Package_Body);
@@ -270,23 +296,23 @@ package body Sem_Ch7 is
New_N := Copy_Generic_Node (N, Empty, Instantiating => False);
Rewrite (N, New_N);
- -- Update Body_Id to point to the copied node for the remainder
- -- of the processing.
+ -- Update Body_Id to point to the copied node for the remainder of
+ -- the processing.
Body_Id := Defining_Entity (N);
Start_Generic;
end if;
-- The Body_Id is that of the copied node in the generic case, the
- -- current node otherwise. Note that N was rewritten above, so we
- -- must be sure to get the latest Body_Id value.
+ -- current node otherwise. Note that N was rewritten above, so we must
+ -- be sure to get the latest Body_Id value.
Set_Ekind (Body_Id, E_Package_Body);
Set_Body_Entity (Spec_Id, Body_Id);
Set_Spec_Entity (Body_Id, Spec_Id);
- -- Defining name for the package body is not a visible entity: Only
- -- the defining name for the declaration is visible.
+ -- Defining name for the package body is not a visible entity: Only the
+ -- defining name for the declaration is visible.
Set_Etype (Body_Id, Standard_Void_Type);
Set_Scope (Body_Id, Scope (Spec_Id));
@@ -340,7 +366,7 @@ package body Sem_Ch7 is
Inspect_Deferred_Constant_Completion (Declarations (N));
end if;
- -- Analyze_Declarations has caused freezing of all types; now generate
+ -- Analyze_Declarations has caused freezing of all types. Now generate
-- bodies for RACW primitives and stream attributes, if any.
if Ekind (Spec_Id) = E_Package and then Has_RACW (Spec_Id) then
@@ -416,9 +442,8 @@ package body Sem_Ch7 is
Set_Is_Potentially_Use_Visible (E, False);
Set_Is_Hidden (E);
- -- Child units may appear on the entity list (for example if
- -- they appear in the context of a subunit) but they are not
- -- body entities.
+ -- Child units may appear on the entity list (e.g. if they appear
+ -- in the context of a subunit) but they are not body entities.
if not Is_Child_Unit (E) then
Set_Is_Package_Body_Entity (E);
@@ -444,9 +469,9 @@ package body Sem_Ch7 is
-- following loop runs backwards from the end of the entities of the
-- package body making these entities invisible until we reach a
-- referencer, i.e. a declaration that could reference a previous
- -- declaration, a generic body or an inlined body, or a stub (which
- -- may contain either of these). This is of course an approximation,
- -- but it is conservative and definitely correct.
+ -- declaration, a generic body or an inlined body, or a stub (which may
+ -- contain either of these). This is of course an approximation, but it
+ -- is conservative and definitely correct.
-- We only do this at the outer (library) level non-generic packages.
-- The reason is simply to cut down on the number of external symbols
@@ -464,16 +489,15 @@ package body Sem_Ch7 is
Outer : Boolean)
return Boolean;
-- Traverse the given list of declarations in reverse order.
- -- Return True as soon as a referencer is reached. Return
- -- False if none is found. The Outer parameter is True for
- -- the outer level call, and False for inner level calls for
- -- nested packages. If Outer is True, then any entities up
- -- to the point of hitting a referencer get their Is_Public
- -- flag cleared, so that the entities will be treated as
- -- static entities in the C sense, and need not have fully
- -- qualified names. For inner levels, we need all names to
- -- be fully qualified to deal with the same name appearing
- -- in parallel packages (right now this is tied to their
+ -- Return True as soon as a referencer is reached. Return False if
+ -- none is found. The Outer parameter is True for the outer level
+ -- call, and False for inner level calls for nested packages. If
+ -- Outer is True, then any entities up to the point of hitting a
+ -- referencer get their Is_Public flag cleared, so that the
+ -- entities will be treated as static entities in the C sense, and
+ -- need not have fully qualified names. For inner levels, we need
+ -- all names to be fully qualified to deal with the same name
+ -- appearing in parallel packages (right now this is tied to their
-- being external).
--------------------
@@ -512,10 +536,10 @@ package body Sem_Ch7 is
-- Note that we test Has_Pragma_Inline here rather
-- than Is_Inlined. We are compiling this for a
- -- client, and it is the client who will decide
- -- if actual inlining should occur, so we need to
- -- assume that the procedure could be inlined for
- -- the purpose of accessing global entities.
+ -- client, and it is the client who will decide if
+ -- actual inlining should occur, so we need to assume
+ -- that the procedure could be inlined for the purpose
+ -- of accessing global entities.
if Has_Pragma_Inline (E) then
return True;
@@ -542,20 +566,19 @@ package body Sem_Ch7 is
then
E := Corresponding_Spec (D);
- -- Generic package body is a referencer. It would
- -- seem that we only have to consider generics that
- -- can be exported, i.e. where the corresponding spec
- -- is the spec of the current package, but because of
- -- nested instantiations, a fully private generic
- -- body may export other private body entities.
+ -- Generic package body is a referencer. It would seem
+ -- that we only have to consider generics that can be
+ -- exported, i.e. where the corresponding spec is the
+ -- spec of the current package, but because of nested
+ -- instantiations, a fully private generic body may
+ -- export other private body entities.
if Is_Generic_Unit (E) then
return True;
- -- For non-generic package body, recurse into body
- -- unless this is an instance, we ignore instances
- -- since they cannot have references that affect
- -- outer entities.
+ -- For non-generic package body, recurse into body unless
+ -- this is an instance, we ignore instances since they
+ -- cannot have references that affect outer entities.
elsif not Is_Generic_Instance (E) then
if Has_Referencer
@@ -583,10 +606,10 @@ package body Sem_Ch7 is
end if;
end if;
- -- Objects and exceptions need not be public if we have
- -- not encountered a referencer so far. We only reset
- -- the flag for outer level entities that are not
- -- imported/exported, and which have no interface name.
+ -- Objects and exceptions need not be public if we have not
+ -- encountered a referencer so far. We only reset the flag
+ -- for outer level entities that are not imported/exported,
+ -- and which have no interface name.
elsif Nkind_In (K, N_Object_Declaration,
N_Exception_Declaration,
@@ -623,10 +646,10 @@ package body Sem_Ch7 is
end if;
-- If expander is not active, then here is where we turn off the
- -- In_Package_Body flag, otherwise it is turned off at the end of
- -- the corresponding expansion routine. If this is an instance body,
- -- we need to qualify names of local entities, because the body may
- -- have been compiled as a preliminary to another instantiation.
+ -- In_Package_Body flag, otherwise it is turned off at the end of the
+ -- corresponding expansion routine. If this is an instance body, we need
+ -- to qualify names of local entities, because the body may have been
+ -- compiled as a preliminary to another instantiation.
if not Expander_Active then
Set_In_Package_Body (Spec_Id, False);
@@ -637,7 +660,7 @@ package body Sem_Ch7 is
Qualify_Entity_Names (N);
end if;
end if;
- end Analyze_Package_Body;
+ end Analyze_Package_Body_Helper;
---------------------------------
-- Analyze_Package_Declaration --
@@ -667,6 +690,15 @@ package body Sem_Ch7 is
return;
end if;
+ if Debug_Flag_C then
+ Write_Str ("==> package spec ");
+ Write_Name (Chars (Id));
+ Write_Str (" from ");
+ Write_Location (Sloc (N));
+ Write_Eol;
+ Indent;
+ end if;
+
Generate_Definition (Id);
Enter_Name (Id);
Set_Ekind (Id, E_Package);
@@ -679,22 +711,14 @@ package body Sem_Ch7 is
Set_Categorization_From_Pragmas (N);
- if Debug_Flag_C then
- Write_Str ("==== Compiling package spec ");
- Write_Name (Chars (Id));
- Write_Str (" from ");
- Write_Location (Sloc (N));
- Write_Eol;
- end if;
-
Analyze (Specification (N));
Validate_Categorization_Dependency (N, Id);
Body_Required := Unit_Requires_Body (Id);
- -- When this spec does not require an explicit body, we know that
- -- there are no entities requiring completion in the language sense;
- -- we call Check_Completion here only to ensure that any nested package
+ -- When this spec does not require an explicit body, we know that there
+ -- are no entities requiring completion in the language sense; we call
+ -- Check_Completion here only to ensure that any nested package
-- declaration that requires an implicit body gets one. (In the case
-- where a body is required, Check_Completion is called at the end of
-- the body's declarative part.)
@@ -728,14 +752,23 @@ package body Sem_Ch7 is
if Comp_Unit then
Validate_RT_RAT_Component (N);
end if;
+
+ if Debug_Flag_C then
+ Outdent;
+ Write_Str ("<== package spec ");
+ Write_Name (Chars (Id));
+ Write_Str (" from ");
+ Write_Location (Sloc (N));
+ Write_Eol;
+ end if;
end Analyze_Package_Declaration;
-----------------------------------
-- Analyze_Package_Specification --
-----------------------------------
- -- Note that this code is shared for the analysis of generic package
- -- specs (see Sem_Ch12.Analyze_Generic_Package_Declaration for details).
+ -- Note that this code is shared for the analysis of generic package specs
+ -- (see Sem_Ch12.Analyze_Generic_Package_Declaration for details).
procedure Analyze_Package_Specification (N : Node_Id) is
Id : constant Entity_Id := Defining_Entity (N);
@@ -760,10 +793,10 @@ package body Sem_Ch7 is
-- visibility analysis for preconditions and postconditions in specs.
procedure Clear_Constants (Id : Entity_Id; FE : Entity_Id);
- -- Clears constant indications (Never_Set_In_Source, Constant_Value,
- -- and Is_True_Constant) on all variables that are entities of Id,
- -- and on the chain whose first element is FE. A recursive call is
- -- made for all packages and generic packages.
+ -- Clears constant indications (Never_Set_In_Source, Constant_Value, and
+ -- Is_True_Constant) on all variables that are entities of Id, and on
+ -- the chain whose first element is FE. A recursive call is made for all
+ -- packages and generic packages.
procedure Generate_Parent_References;
-- For a child unit, generate references to parent units, for
@@ -822,18 +855,17 @@ package body Sem_Ch7 is
E : Entity_Id;
begin
- -- Ignore package renamings, not interesting and they can
- -- cause self referential loops in the code below.
+ -- Ignore package renamings, not interesting and they can cause self
+ -- referential loops in the code below.
if Nkind (Parent (Id)) = N_Package_Renaming_Declaration then
return;
end if;
- -- Note: in the loop below, the check for Next_Entity pointing
- -- back to the package entity may seem odd, but it is needed,
- -- because a package can contain a renaming declaration to itself,
- -- and such renamings are generated automatically within package
- -- instances.
+ -- Note: in the loop below, the check for Next_Entity pointing back
+ -- to the package entity may seem odd, but it is needed, because a
+ -- package can contain a renaming declaration to itself, and such
+ -- renamings are generated automatically within package instances.
E := FE;
while Present (E) and then E /= Id loop
@@ -873,8 +905,8 @@ package body Sem_Ch7 is
elsif not Nkind_In (Unit (Cunit (Main_Unit)), N_Subprogram_Body,
N_Subunit)
then
- -- If current unit is an ancestor of main unit, generate
- -- a reference to its own parent.
+ -- If current unit is an ancestor of main unit, generate a
+ -- reference to its own parent.
declare
U : Node_Id;
@@ -1065,11 +1097,11 @@ package body Sem_Ch7 is
Validate_RCI_Declarations (Id);
end if;
- -- Save global references in the visible declarations, before
- -- installing private declarations of parent unit if there is one,
- -- because the privacy status of types defined in the parent will
- -- change. This is only relevant for generic child units, but is
- -- done in all cases for uniformity.
+ -- Save global references in the visible declarations, before installing
+ -- private declarations of parent unit if there is one, because the
+ -- privacy status of types defined in the parent will change. This is
+ -- only relevant for generic child units, but is done in all cases for
+ -- uniformity.
if Ekind (Id) = E_Generic_Package
and then Nkind (Orig_Decl) = N_Generic_Package_Declaration
@@ -1360,8 +1392,8 @@ package body Sem_Ch7 is
procedure Declare_Inherited_Private_Subprograms (Id : Entity_Id) is
function Is_Primitive_Of (T : Entity_Id; S : Entity_Id) return Boolean;
- -- Check whether an inherited subprogram is an operation of an
- -- untagged derived type.
+ -- Check whether an inherited subprogram is an operation of an untagged
+ -- derived type.
---------------------
-- Is_Primitive_Of --
@@ -1371,9 +1403,9 @@ package body Sem_Ch7 is
Formal : Entity_Id;
begin
- -- If the full view is a scalar type, the type is the anonymous
- -- base type, but the operation mentions the first subtype, so
- -- check the signature against the base type.
+ -- If the full view is a scalar type, the type is the anonymous base
+ -- type, but the operation mentions the first subtype, so check the
+ -- signature against the base type.
if Base_Type (Etype (S)) = Base_Type (T) then
return True;
@@ -1409,10 +1441,10 @@ package body Sem_Ch7 is
E := First_Entity (Id);
while Present (E) loop
- -- If the entity is a nonprivate type extension whose parent
- -- type is declared in an open scope, then the type may have
- -- inherited operations that now need to be made visible.
- -- Ditto if the entity is a formal derived type in a child unit.
+ -- If the entity is a nonprivate type extension whose parent type
+ -- is declared in an open scope, then the type may have inherited
+ -- operations that now need to be made visible. Ditto if the entity
+ -- is a formal derived type in a child unit.
if ((Is_Derived_Type (E) and then not Is_Private_Type (E))
or else
@@ -1498,16 +1530,15 @@ package body Sem_Ch7 is
(Is_Dispatching_Operation (New_Op)
and then Node (Last_Elmt (Op_List)) = New_Op);
- -- Substitute the new operation for the old one
- -- in the type's primitive operations list. Since
- -- the new operation was also just added to the end
- -- of list, the last element must be removed.
+ -- Substitute the new operation for the old one in the
+ -- type's primitive operations list. Since the new
+ -- operation was also just added to the end of list,
+ -- the last element must be removed.
- -- (Question: is there a simpler way of declaring
- -- the operation, say by just replacing the name
- -- of the earlier operation, reentering it in the
- -- in the symbol table (how?), and marking it as
- -- private???)
+ -- (Question: is there a simpler way of declaring the
+ -- operation, say by just replacing the name of the
+ -- earlier operation, reentering it in the in the symbol
+ -- table (how?), and marking it as private???)
Replace_Elmt (Op_Elmt, New_Op);
Remove_Last_Elmt (Op_List);
@@ -1524,8 +1555,8 @@ package body Sem_Ch7 is
end if;
else
- -- Non-tagged type, scan forward to locate
- -- inherited hidden operations.
+ -- Non-tagged type, scan forward to locate inherited hidden
+ -- operations.
Prim_Op := Next_Entity (E);
while Present (Prim_Op) loop
@@ -1581,8 +1612,8 @@ package body Sem_Ch7 is
Next2 := Next_Entity (Full_Id);
H2 := Homonym (Full_Id);
- -- Reset full declaration pointer to reflect the switched entities
- -- and readjust the next entity chains.
+ -- Reset full declaration pointer to reflect the switched entities and
+ -- readjust the next entity chains.
Exchange_Entities (Id, Full_Id);
@@ -1625,13 +1656,13 @@ package body Sem_Ch7 is
Full : Entity_Id;
begin
- -- First exchange declarations for private types, so that the
- -- full declaration is visible. For each private type, we check
- -- its Private_Dependents list and also exchange any subtypes of
- -- or derived types from it. Finally, if this is a Taft amendment
- -- type, the incomplete declaration is irrelevant, and we want to
- -- link the eventual full declaration with the original private
- -- one so we also skip the exchange.
+ -- First exchange declarations for private types, so that the full
+ -- declaration is visible. For each private type, we check its
+ -- Private_Dependents list and also exchange any subtypes of or derived
+ -- types from it. Finally, if this is a Taft amendment type, the
+ -- incomplete declaration is irrelevant, and we want to link the
+ -- eventual full declaration with the original private one so we also
+ -- skip the exchange.
Id := First_Entity (P);
while Present (Id) and then Id /= First_Private_Entity (P) loop
@@ -1659,12 +1690,12 @@ package body Sem_Ch7 is
-- can only happen in a package nested within a child package,
-- when the parent type is defined in the parent unit. At this
-- point the current type is not private either, and we have to
- -- install the underlying full view, which is now visible.
- -- Save the current full view as well, so that all views can
- -- be restored on exit. It may seem that after compiling the
- -- child body there are not environments to restore, but the
- -- back-end expects those links to be valid, and freeze nodes
- -- depend on them.
+ -- install the underlying full view, which is now visible. Save
+ -- the current full view as well, so that all views can be
+ -- restored on exit. It may seem that after compiling the child
+ -- body there are not environments to restore, but the back-end
+ -- expects those links to be valid, and freeze nodes depend on
+ -- them.
if No (Full_View (Full))
and then Present (Underlying_Full_View (Full))
@@ -1686,8 +1717,8 @@ package body Sem_Ch7 is
Priv := Node (Priv_Elmt);
-- Before the exchange, verify that the presence of the
- -- Full_View field. It will be empty if the entity
- -- has already been installed due to a previous call.
+ -- Full_View field. It will be empty if the entity has already
+ -- been installed due to a previous call.
if Present (Full_View (Priv))
and then Is_Visible_Dependent (Priv)
@@ -1772,8 +1803,7 @@ package body Sem_Ch7 is
S : constant Entity_Id := Scope (Dep);
begin
- -- Renamings created for actual types have the visibility of the
- -- actual.
+ -- Renamings created for actual types have the visibility of the actual
if Ekind (S) = E_Package
and then Is_Generic_Instance (S)
@@ -1785,9 +1815,9 @@ package body Sem_Ch7 is
elsif not (Is_Derived_Type (Dep))
and then Is_Derived_Type (Full_View (Dep))
then
- -- When instantiating a package body, the scope stack is empty,
- -- so check instead whether the dependent type is defined in
- -- the same scope as the instance itself.
+ -- When instantiating a package body, the scope stack is empty, so
+ -- check instead whether the dependent type is defined in the same
+ -- scope as the instance itself.
return In_Open_Scopes (S)
or else (Is_Generic_Instance (Current_Scope)
@@ -1856,8 +1886,8 @@ package body Sem_Ch7 is
No (Discriminant_Specifications (N))
and then not Unknown_Discriminants_Present (N));
- -- Set tagged flag before processing discriminants, to catch
- -- illegal usage.
+ -- Set tagged flag before processing discriminants, to catch illegal
+ -- usage.
Set_Is_Tagged_Type (Id, Tagged_Present (Def));
@@ -1900,8 +1930,8 @@ package body Sem_Ch7 is
Priv_Sub : Entity_Id;
procedure Preserve_Full_Attributes (Priv, Full : Entity_Id);
- -- Copy to the private declaration the attributes of the full view
- -- that need to be available for the partial view also.
+ -- Copy to the private declaration the attributes of the full view that
+ -- need to be available for the partial view also.
function Type_In_Use (T : Entity_Id) return Boolean;
-- Check whether type or base type appear in an active use_type clause
@@ -1951,8 +1981,8 @@ package body Sem_Ch7 is
then
if Priv_Is_Base_Type then
- -- Ada 2005 (AI-345): The full view of a type implementing
- -- an interface can be a task type.
+ -- Ada 2005 (AI-345): The full view of a type implementing an
+ -- interface can be a task type.
-- type T is new I with private;
-- private
@@ -1984,8 +2014,8 @@ package body Sem_Ch7 is
if Is_Tagged_Type (Priv) then
- -- If the type is tagged, the tag itself must be available
- -- on the partial view, for expansion purposes.
+ -- If the type is tagged, the tag itself must be available on
+ -- the partial view, for expansion purposes.
Set_First_Entity (Priv, First_Entity (Full));
@@ -2156,8 +2186,8 @@ package body Sem_Ch7 is
end if;
-- Make private entities invisible and exchange full and private
- -- declarations for private types. Id is now the first private
- -- entity in the package.
+ -- declarations for private types. Id is now the first private entity
+ -- in the package.
while Present (Id) loop
if Debug_Flag_E then
@@ -2178,10 +2208,10 @@ package body Sem_Ch7 is
then
Full := Full_View (Id);
- -- If the partial view is not declared in the visible part
- -- of the package (as is the case when it is a type derived
- -- from some other private type in the private part of the
- -- current package), no exchange takes place.
+ -- If the partial view is not declared in the visible part of the
+ -- package (as is the case when it is a type derived from some
+ -- other private type in the private part of the current package),
+ -- no exchange takes place.
if No (Parent (Id))
or else List_Containing (Parent (Id))
@@ -2192,10 +2222,10 @@ package body Sem_Ch7 is
-- The entry in the private part points to the full declaration,
-- which is currently visible. Exchange them so only the private
- -- type declaration remains accessible, and link private and
- -- full declaration in the opposite direction. Before the actual
- -- exchange, we copy back attributes of the full view that
- -- must be available to the partial view too.
+ -- type declaration remains accessible, and link private and full
+ -- declaration in the opposite direction. Before the actual
+ -- exchange, we copy back attributes of the full view that must
+ -- be available to the partial view too.
Preserve_Full_Attributes (Id, Full);
@@ -2213,10 +2243,10 @@ package body Sem_Ch7 is
-- Swap out the subtypes and derived types of Id that were
-- compiled in this scope, or installed previously by
-- Install_Private_Declarations.
- -- Before we do the swap, we verify the presence of the
- -- Full_View field which may be empty due to a swap by
- -- a previous call to End_Package_Scope (e.g. from the
- -- freezing mechanism).
+
+ -- Before we do the swap, we verify the presence of the Full_View
+ -- field which may be empty due to a swap by a previous call to
+ -- End_Package_Scope (e.g. from the freezing mechanism).
while Present (Priv_Elmt) loop
Priv_Sub := Node (Priv_Elmt);
@@ -2244,10 +2274,11 @@ package body Sem_Ch7 is
Exchange_Declarations (Id);
- -- If we have installed an underlying full view for a type
- -- derived from a private type in a child unit, restore the
- -- proper views of private and full view. See corresponding
- -- code in Install_Private_Declarations.
+ -- If we have installed an underlying full view for a type derived
+ -- from a private type in a child unit, restore the proper views
+ -- of private and full view. See corresponding code in
+ -- Install_Private_Declarations.
+
-- After the exchange, Full denotes the private type in the
-- visible part of the package.
@@ -2261,12 +2292,47 @@ package body Sem_Ch7 is
end if;
elsif Ekind (Id) = E_Incomplete_Type
+ and then Comes_From_Source (Id)
and then No (Full_View (Id))
then
- -- Mark Taft amendment types
+ -- Mark Taft amendment types. Verify that there are no primitive
+ -- operations declared for the type (3.10.1 (9)).
Set_Has_Completion_In_Body (Id);
+ declare
+ Elmt : Elmt_Id;
+ Subp : Entity_Id;
+
+ begin
+ Elmt := First_Elmt (Private_Dependents (Id));
+ while Present (Elmt) loop
+ Subp := Node (Elmt);
+
+ if Is_Overloadable (Subp) then
+ Error_Msg_NE
+ ("type& must be completed in the private part",
+ Parent (Subp), Id);
+
+ -- The return type of an access_to_function cannot be a
+ -- Taft-amendment type.
+
+ elsif Ekind (Subp) = E_Subprogram_Type then
+ if Etype (Subp) = Id
+ or else
+ (Is_Class_Wide_Type (Etype (Subp))
+ and then Etype (Etype (Subp)) = Id)
+ then
+ Error_Msg_NE
+ ("type& must be completed in the private part",
+ Associated_Node_For_Itype (Subp), Id);
+ end if;
+ end if;
+
+ Next_Elmt (Elmt);
+ end loop;
+ end;
+
elsif not Is_Child_Unit (Id)
and then (not Is_Private_Type (Id)
or else No (Full_View (Id)))
@@ -2288,9 +2354,9 @@ package body Sem_Ch7 is
E : Entity_Id;
begin
- -- Imported entity never requires body. Right now, only
- -- subprograms can be imported, but perhaps in the future
- -- we will allow import of packages.
+ -- Imported entity never requires body. Right now, only subprograms can
+ -- be imported, but perhaps in the future we will allow import of
+ -- packages.
if Is_Imported (P) then
return False;
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index d075a23f044..58d9ff68a46 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -7143,6 +7143,14 @@ package body Sem_Ch8 is
elsif not Redundant_Use (Id) then
Set_In_Use (T);
+
+ -- If T is tagged, primitive operators on class-wide operands
+ -- are also available.
+
+ if Is_Tagged_Type (T) then
+ Set_In_Use (Class_Wide_Type (T));
+ end if;
+
Set_Current_Use_Clause (T, Parent (Id));
Op_List := Collect_Primitive_Operations (T);
@@ -7241,7 +7249,9 @@ package body Sem_Ch8 is
Unit1 := Unit (Parent (Clause1));
Unit2 := Unit (Parent (Clause2));
- -- If both clauses are on same unit, report redundancy
+ -- If both clauses are on same unit, or one is the body
+ -- of the other, or one of them is in a subunit, report
+ -- redundancy on the later one.
if Unit1 = Unit2 then
Error_Msg_Sloc := Sloc (Current_Use_Clause (T));
@@ -7249,6 +7259,23 @@ package body Sem_Ch8 is
("& is already use-visible through previous "
& "use_type_clause #?", Clause1, T);
return;
+
+ elsif Nkind (Unit1) = N_Subunit then
+ Error_Msg_Sloc := Sloc (Current_Use_Clause (T));
+ Error_Msg_NE
+ ("& is already use-visible through previous "
+ & "use_type_clause #?", Clause1, T);
+ return;
+
+ elsif Nkind_In (Unit2, N_Package_Body, N_Subprogram_Body)
+ and then Nkind (Unit1) /= Nkind (Unit2)
+ and then Nkind (Unit1) /= N_Subunit
+ then
+ Error_Msg_Sloc := Sloc (Clause1);
+ Error_Msg_NE
+ ("& is already use-visible through previous "
+ & "use_type_clause #?", Current_Use_Clause (T), T);
+ return;
end if;
-- There is a redundant use type clause in a child unit.
diff --git a/gcc/ada/sem_disp.adb b/gcc/ada/sem_disp.adb
index 96e6bc1fb34..fc3db824aa2 100644
--- a/gcc/ada/sem_disp.adb
+++ b/gcc/ada/sem_disp.adb
@@ -28,6 +28,7 @@ with Debug; use Debug;
with Elists; use Elists;
with Einfo; use Einfo;
with Exp_Disp; use Exp_Disp;
+with Exp_Util; use Exp_Util;
with Exp_Ch7; use Exp_Ch7;
with Exp_Tss; use Exp_Tss;
with Errout; use Errout;
@@ -835,9 +836,9 @@ package body Sem_Disp is
end if;
else
- Register_Primitive (Sloc (Subp_Body),
- Prim => Subp,
- Ins_Nod => Subp_Body);
+ Insert_Actions_After (Subp_Body,
+ Register_Primitive (Sloc (Subp_Body),
+ Prim => Subp));
end if;
Generate_Reference (Tagged_Type, Subp, 'p', False);
@@ -909,7 +910,9 @@ package body Sem_Disp is
-- Ada 2005 (AI-251): In case of late overriding of a primitive
-- that covers abstract interface subprograms we must register it
-- in all the secondary dispatch tables associated with abstract
- -- interfaces.
+ -- interfaces. We do this now only if not building static tables.
+ -- Otherwise the patch code is emitted after those tables are
+ -- built, to prevent access_before_elaboration in gigi.
if Body_Is_Last_Primitive then
declare
@@ -925,10 +928,10 @@ package body Sem_Disp is
if Present (Alias (Prim))
and then Present (Interface_Alias (Prim))
and then Alias (Prim) = Subp
+ and then not Building_Static_DT (Tagged_Type)
then
- Register_Primitive (Sloc (Prim),
- Prim => Prim,
- Ins_Nod => Subp_Body);
+ Insert_Actions_After (Subp_Body,
+ Register_Primitive (Sloc (Subp_Body), Prim => Prim));
end if;
Next_Elmt (Elmt);
diff --git a/gcc/ada/sem_elim.adb b/gcc/ada/sem_elim.adb
index bdf6d57e013..6dd7021e7cf 100644
--- a/gcc/ada/sem_elim.adb
+++ b/gcc/ada/sem_elim.adb
@@ -282,7 +282,7 @@ package body Sem_Elim is
if Is_Dispatching_Operation (E) then
-- If an overriding dispatching primitive is eliminated then
- -- its parent must have been eliminated
+ -- its parent must have been eliminated.
if Is_Overriding_Operation (E)
and then not Is_Eliminated (Overridden_Operation (E))
@@ -671,7 +671,7 @@ package body Sem_Elim is
for J in Elim_Entities.First .. Elim_Entities.Last loop
if E = Elim_Entities.Table (J).Subp then
Error_Msg_Sloc := Sloc (Elim_Entities.Table (J).Prag);
- Error_Msg_NE ("cannot call subprogram & eliminated #", N, E);
+ Error_Msg_NE ("cannot reference subprogram & eliminated #", N, E);
return;
end if;
end loop;
diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb
index 2edcd0ec8db..627ea5bf9bb 100644
--- a/gcc/ada/sem_eval.adb
+++ b/gcc/ada/sem_eval.adb
@@ -1779,6 +1779,32 @@ package body Sem_Eval is
Set_Sloc (N, Loc);
end if;
end if;
+
+ -- We can also constant-fold if the prefix is a string literal.
+ -- This will be useful in an instantiation or an inlining.
+
+ elsif Compile_Time_Known_Value (Sub)
+ and then Nkind (Arr) = N_String_Literal
+ and then Compile_Time_Known_Value (Lbd)
+ and then Expr_Value (Lbd) = 1
+ and then Expr_Value (Sub) <=
+ String_Literal_Length (Etype (Arr))
+ then
+ declare
+ C : constant Char_Code :=
+ Get_String_Char (Strval (Arr),
+ UI_To_Int (Expr_Value (Sub)));
+ begin
+ Set_Character_Literal_Name (C);
+
+ Elm :=
+ Make_Character_Literal (Loc,
+ Chars => Name_Find,
+ Char_Literal_Value => UI_From_CC (C));
+ Set_Etype (Elm, Component_Type (Atyp));
+ Rewrite (N, Duplicate_Subexpr_No_Checks (Elm));
+ Set_Is_Static_Expression (N, False);
+ end;
end if;
end if;
end;
@@ -2504,8 +2530,10 @@ package body Sem_Eval is
-- Start of processing for Extract_Length
begin
- Decompose_Expr (Type_Low_Bound (T), Ent1, Kind1, Cons1);
- Decompose_Expr (Type_High_Bound (T), Ent2, Kind2, Cons2);
+ Decompose_Expr
+ (Original_Node (Type_Low_Bound (T)), Ent1, Kind1, Cons1);
+ Decompose_Expr
+ (Original_Node (Type_High_Bound (T)), Ent2, Kind2, Cons2);
if Present (Ent1)
and then Kind1 = Kind2
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index e8cd0a04b64..cdbd9e338c2 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -3531,13 +3531,14 @@ package body Sem_Prag is
end loop;
-- When the convention is Java or CIL, we also allow Import to be
- -- given for packages, generic packages, exceptions, and record
- -- components.
+ -- given for packages, generic packages, exceptions, record
+ -- components, and access to subprograms.
elsif (C = Convention_Java or else C = Convention_CIL)
and then
(Is_Package_Or_Generic_Package (Def_Id)
or else Ekind (Def_Id) = E_Exception
+ or else Ekind (Def_Id) = E_Access_Subprogram_Type
or else Nkind (Parent (Def_Id)) = N_Component_Declaration)
then
Set_Imported (Def_Id);
@@ -3931,16 +3932,17 @@ package body Sem_Prag is
-- For all cases except external names on CLI target,
-- commas, spaces and slashes are dubious (in CLI, we use
-- spaces and commas in external names to specify assembly
- -- version and public key).
+ -- version and public key, while slashes can be used in
+ -- names to mark nested classes).
or else ((not Ext_Name_Case or else VM_Target /= CLI_Target)
and then (Get_Character (C) = ' '
or else
Get_Character (C) = ','
or else
- Get_Character (C) = '/'
- or else
Get_Character (C) = '\'))
+ or else (VM_Target /= CLI_Target
+ and then Get_Character (C) = '/')
then
Error_Msg
("?interface name contains illegal character",
@@ -9365,14 +9367,14 @@ package body Sem_Prag is
else
if not Rep_Item_Too_Late (Typ, N) then
if VM_Target = No_VM then
- Set_Is_Packed (Base_Type (Typ));
+ Set_Is_Packed (Base_Type (Typ));
+ Set_Has_Pragma_Pack (Base_Type (Typ));
+ Set_Has_Non_Standard_Rep (Base_Type (Typ));
+
elsif not GNAT_Mode then
Error_Pragma
("?pragma% ignored in this configuration");
end if;
-
- Set_Has_Pragma_Pack (Base_Type (Typ));
- Set_Has_Non_Standard_Rep (Base_Type (Typ));
end if;
end if;
@@ -9381,13 +9383,13 @@ package body Sem_Prag is
else pragma Assert (Is_Record_Type (Typ));
if not Rep_Item_Too_Late (Typ, N) then
if VM_Target = No_VM then
- Set_Is_Packed (Base_Type (Typ));
+ Set_Is_Packed (Base_Type (Typ));
+ Set_Has_Pragma_Pack (Base_Type (Typ));
+ Set_Has_Non_Standard_Rep (Base_Type (Typ));
+
elsif not GNAT_Mode then
Error_Pragma ("?pragma% ignored in this configuration");
end if;
-
- Set_Has_Pragma_Pack (Base_Type (Typ));
- Set_Has_Non_Standard_Rep (Base_Type (Typ));
end if;
end if;
end Pack;
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index 31242c6eb57..676cbc2bf42 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -5231,6 +5231,9 @@ package body Sem_Res is
and then Present (Controlling_Argument (N))
then
Generate_Reference (Nam, Subp, 'R');
+
+ -- Normal case, not a dispatching call
+
else
Generate_Reference (Nam, Subp);
end if;
diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb
index bc9dbdbc953..47bc6628e47 100644
--- a/gcc/ada/sem_type.adb
+++ b/gcc/ada/sem_type.adb
@@ -885,7 +885,7 @@ package body Sem_Type is
then
return True;
- -- An aggregate is compatible with an array or record type.
+ -- An aggregate is compatible with an array or record type
elsif T2 = Any_Composite
and then Ekind (T1) in E_Array_Type .. E_Record_Subtype
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 04187933fdc..337d1ac0cf0 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -59,8 +59,38 @@ with Tbuild; use Tbuild;
with Ttypes; use Ttypes;
with Uname; use Uname;
+with GNAT.HTable; use GNAT.HTable;
package body Sem_Util is
+ ----------------------------------------
+ -- Global_Variables for New_Copy_Tree --
+ ----------------------------------------
+
+ -- These global variables are used by New_Copy_Tree. See description
+ -- of the body of this subprogram for details. Global variables can be
+ -- safely used by New_Copy_Tree, since there is no case of a recursive
+ -- call from the processing inside New_Copy_Tree.
+
+ NCT_Hash_Threshhold : constant := 20;
+ -- If there are more than this number of pairs of entries in the
+ -- map, then Hash_Tables_Used will be set, and the hash tables will
+ -- be initialized and used for the searches.
+
+ NCT_Hash_Tables_Used : Boolean := False;
+ -- Set to True if hash tables are in use
+
+ NCT_Table_Entries : Nat;
+ -- Count entries in table to see if threshhold is reached
+
+ NCT_Hash_Table_Setup : Boolean := False;
+ -- Set to True if hash table contains data. We set this True if we
+ -- setup the hash table with data, and leave it set permanently
+ -- from then on, this is a signal that second and subsequent users
+ -- of the hash table must clear the old entries before reuse.
+
+ subtype NCT_Header_Num is Int range 0 .. 511;
+ -- Defines range of headers in hash tables (512 headers)
+
-----------------------
-- Local Subprograms --
-----------------------
@@ -7224,20 +7254,29 @@ package body Sem_Util is
when N_Assignment_Statement =>
return N = Name (P);
- -- Test prefix of component or attribute
+ -- Test prefix of component or attribute. Note that the prefix of an
+ -- explicit or implicit dereference cannot be an l-value.
when N_Attribute_Reference =>
return N = Prefix (P)
and then Name_Implies_Lvalue_Prefix (Attribute_Name (P));
when N_Expanded_Name |
- N_Explicit_Dereference |
N_Indexed_Component |
- N_Reference |
N_Selected_Component |
N_Slice =>
+ if Is_Access_Type (Etype (N)) then
+ return False; -- P is an implicit dereference
+ else
+ return N = Prefix (P);
+ end if;
+
+ when N_Reference =>
return N = Prefix (P);
+ when N_Explicit_Dereference =>
+ return False;
+
-- Function call arguments are never lvalues
when N_Function_Call =>
@@ -7422,6 +7461,954 @@ package body Sem_Util is
end if;
end Needs_One_Actual;
+ ------------------------
+ -- New_Copy_List_Tree --
+ ------------------------
+
+ function New_Copy_List_Tree (List : List_Id) return List_Id is
+ NL : List_Id;
+ E : Node_Id;
+
+ begin
+ if List = No_List then
+ return No_List;
+
+ else
+ NL := New_List;
+ E := First (List);
+
+ while Present (E) loop
+ Append (New_Copy_Tree (E), NL);
+ E := Next (E);
+ end loop;
+
+ return NL;
+ end if;
+ end New_Copy_List_Tree;
+
+ -------------------
+ -- New_Copy_Tree --
+ -------------------
+
+ use Atree.Unchecked_Access;
+ use Atree_Private_Part;
+
+ -- Our approach here requires a two pass traversal of the tree. The
+ -- first pass visits all nodes that eventually will be copied looking
+ -- for defining Itypes. If any defining Itypes are found, then they are
+ -- copied, and an entry is added to the replacement map. In the second
+ -- phase, the tree is copied, using the replacement map to replace any
+ -- Itype references within the copied tree.
+
+ -- The following hash tables are used if the Map supplied has more
+ -- than hash threshhold entries to speed up access to the map. If
+ -- there are fewer entries, then the map is searched sequentially
+ -- (because setting up a hash table for only a few entries takes
+ -- more time than it saves.
+
+ function New_Copy_Hash (E : Entity_Id) return NCT_Header_Num;
+ -- Hash function used for hash operations
+
+ -------------------
+ -- New_Copy_Hash --
+ -------------------
+
+ function New_Copy_Hash (E : Entity_Id) return NCT_Header_Num is
+ begin
+ return Nat (E) mod (NCT_Header_Num'Last + 1);
+ end New_Copy_Hash;
+
+ ---------------
+ -- NCT_Assoc --
+ ---------------
+
+ -- The hash table NCT_Assoc associates old entities in the table
+ -- with their corresponding new entities (i.e. the pairs of entries
+ -- presented in the original Map argument are Key-Element pairs).
+
+ package NCT_Assoc is new Simple_HTable (
+ Header_Num => NCT_Header_Num,
+ Element => Entity_Id,
+ No_Element => Empty,
+ Key => Entity_Id,
+ Hash => New_Copy_Hash,
+ Equal => Types."=");
+
+ ---------------------
+ -- NCT_Itype_Assoc --
+ ---------------------
+
+ -- The hash table NCT_Itype_Assoc contains entries only for those
+ -- old nodes which have a non-empty Associated_Node_For_Itype set.
+ -- The key is the associated node, and the element is the new node
+ -- itself (NOT the associated node for the new node).
+
+ package NCT_Itype_Assoc is new Simple_HTable (
+ Header_Num => NCT_Header_Num,
+ Element => Entity_Id,
+ No_Element => Empty,
+ Key => Entity_Id,
+ Hash => New_Copy_Hash,
+ Equal => Types."=");
+
+ -- Start of processing for New_Copy_Tree function
+
+ function New_Copy_Tree
+ (Source : Node_Id;
+ Map : Elist_Id := No_Elist;
+ New_Sloc : Source_Ptr := No_Location;
+ New_Scope : Entity_Id := Empty) return Node_Id
+ is
+ Actual_Map : Elist_Id := Map;
+ -- This is the actual map for the copy. It is initialized with the
+ -- given elements, and then enlarged as required for Itypes that are
+ -- copied during the first phase of the copy operation. The visit
+ -- procedures add elements to this map as Itypes are encountered.
+ -- The reason we cannot use Map directly, is that it may well be
+ -- (and normally is) initialized to No_Elist, and if we have mapped
+ -- entities, we have to reset it to point to a real Elist.
+
+ function Assoc (N : Node_Or_Entity_Id) return Node_Id;
+ -- Called during second phase to map entities into their corresponding
+ -- copies using Actual_Map. If the argument is not an entity, or is not
+ -- in Actual_Map, then it is returned unchanged.
+
+ procedure Build_NCT_Hash_Tables;
+ -- Builds hash tables (number of elements >= threshold value)
+
+ function Copy_Elist_With_Replacement
+ (Old_Elist : Elist_Id) return Elist_Id;
+ -- Called during second phase to copy element list doing replacements
+
+ procedure Copy_Itype_With_Replacement (New_Itype : Entity_Id);
+ -- Called during the second phase to process a copied Itype. The actual
+ -- copy happened during the first phase (so that we could make the entry
+ -- in the mapping), but we still have to deal with the descendents of
+ -- the copied Itype and copy them where necessary.
+
+ function Copy_List_With_Replacement (Old_List : List_Id) return List_Id;
+ -- Called during second phase to copy list doing replacements
+
+ function Copy_Node_With_Replacement (Old_Node : Node_Id) return Node_Id;
+ -- Called during second phase to copy node doing replacements
+
+ procedure Visit_Elist (E : Elist_Id);
+ -- Called during first phase to visit all elements of an Elist
+
+ procedure Visit_Field (F : Union_Id; N : Node_Id);
+ -- Visit a single field, recursing to call Visit_Node or Visit_List
+ -- if the field is a syntactic descendent of the current node (i.e.
+ -- its parent is Node N).
+
+ procedure Visit_Itype (Old_Itype : Entity_Id);
+ -- Called during first phase to visit subsidiary fields of a defining
+ -- Itype, and also create a copy and make an entry in the replacement
+ -- map for the new copy.
+
+ procedure Visit_List (L : List_Id);
+ -- Called during first phase to visit all elements of a List
+
+ procedure Visit_Node (N : Node_Or_Entity_Id);
+ -- Called during first phase to visit a node and all its subtrees
+
+ -----------
+ -- Assoc --
+ -----------
+
+ function Assoc (N : Node_Or_Entity_Id) return Node_Id is
+ E : Elmt_Id;
+ Ent : Entity_Id;
+
+ begin
+ if not Has_Extension (N) or else No (Actual_Map) then
+ return N;
+
+ elsif NCT_Hash_Tables_Used then
+ Ent := NCT_Assoc.Get (Entity_Id (N));
+
+ if Present (Ent) then
+ return Ent;
+ else
+ return N;
+ end if;
+
+ -- No hash table used, do serial search
+
+ else
+ E := First_Elmt (Actual_Map);
+ while Present (E) loop
+ if Node (E) = N then
+ return Node (Next_Elmt (E));
+ else
+ E := Next_Elmt (Next_Elmt (E));
+ end if;
+ end loop;
+ end if;
+
+ return N;
+ end Assoc;
+
+ ---------------------------
+ -- Build_NCT_Hash_Tables --
+ ---------------------------
+
+ procedure Build_NCT_Hash_Tables is
+ Elmt : Elmt_Id;
+ Ent : Entity_Id;
+ begin
+ if NCT_Hash_Table_Setup then
+ NCT_Assoc.Reset;
+ NCT_Itype_Assoc.Reset;
+ end if;
+
+ Elmt := First_Elmt (Actual_Map);
+ while Present (Elmt) loop
+ Ent := Node (Elmt);
+
+ -- Get new entity, and associate old and new
+
+ Next_Elmt (Elmt);
+ NCT_Assoc.Set (Ent, Node (Elmt));
+
+ if Is_Type (Ent) then
+ declare
+ Anode : constant Entity_Id :=
+ Associated_Node_For_Itype (Ent);
+
+ begin
+ if Present (Anode) then
+
+ -- Enter a link between the associated node of the
+ -- old Itype and the new Itype, for updating later
+ -- when node is copied.
+
+ NCT_Itype_Assoc.Set (Anode, Node (Elmt));
+ end if;
+ end;
+ end if;
+
+ Next_Elmt (Elmt);
+ end loop;
+
+ NCT_Hash_Tables_Used := True;
+ NCT_Hash_Table_Setup := True;
+ end Build_NCT_Hash_Tables;
+
+ ---------------------------------
+ -- Copy_Elist_With_Replacement --
+ ---------------------------------
+
+ function Copy_Elist_With_Replacement
+ (Old_Elist : Elist_Id) return Elist_Id
+ is
+ M : Elmt_Id;
+ New_Elist : Elist_Id;
+
+ begin
+ if No (Old_Elist) then
+ return No_Elist;
+
+ else
+ New_Elist := New_Elmt_List;
+
+ M := First_Elmt (Old_Elist);
+ while Present (M) loop
+ Append_Elmt (Copy_Node_With_Replacement (Node (M)), New_Elist);
+ Next_Elmt (M);
+ end loop;
+ end if;
+
+ return New_Elist;
+ end Copy_Elist_With_Replacement;
+
+ ---------------------------------
+ -- Copy_Itype_With_Replacement --
+ ---------------------------------
+
+ -- This routine exactly parallels its phase one analog Visit_Itype,
+
+ procedure Copy_Itype_With_Replacement (New_Itype : Entity_Id) is
+ begin
+ -- Translate Next_Entity, Scope and Etype fields, in case they
+ -- reference entities that have been mapped into copies.
+
+ Set_Next_Entity (New_Itype, Assoc (Next_Entity (New_Itype)));
+ Set_Etype (New_Itype, Assoc (Etype (New_Itype)));
+
+ if Present (New_Scope) then
+ Set_Scope (New_Itype, New_Scope);
+ else
+ Set_Scope (New_Itype, Assoc (Scope (New_Itype)));
+ end if;
+
+ -- Copy referenced fields
+
+ if Is_Discrete_Type (New_Itype) then
+ Set_Scalar_Range (New_Itype,
+ Copy_Node_With_Replacement (Scalar_Range (New_Itype)));
+
+ elsif Has_Discriminants (Base_Type (New_Itype)) then
+ Set_Discriminant_Constraint (New_Itype,
+ Copy_Elist_With_Replacement
+ (Discriminant_Constraint (New_Itype)));
+
+ elsif Is_Array_Type (New_Itype) then
+ if Present (First_Index (New_Itype)) then
+ Set_First_Index (New_Itype,
+ First (Copy_List_With_Replacement
+ (List_Containing (First_Index (New_Itype)))));
+ end if;
+
+ if Is_Packed (New_Itype) then
+ Set_Packed_Array_Type (New_Itype,
+ Copy_Node_With_Replacement
+ (Packed_Array_Type (New_Itype)));
+ end if;
+ end if;
+ end Copy_Itype_With_Replacement;
+
+ --------------------------------
+ -- Copy_List_With_Replacement --
+ --------------------------------
+
+ function Copy_List_With_Replacement
+ (Old_List : List_Id) return List_Id
+ is
+ New_List : List_Id;
+ E : Node_Id;
+
+ begin
+ if Old_List = No_List then
+ return No_List;
+
+ else
+ New_List := Empty_List;
+
+ E := First (Old_List);
+ while Present (E) loop
+ Append (Copy_Node_With_Replacement (E), New_List);
+ Next (E);
+ end loop;
+
+ return New_List;
+ end if;
+ end Copy_List_With_Replacement;
+
+ --------------------------------
+ -- Copy_Node_With_Replacement --
+ --------------------------------
+
+ function Copy_Node_With_Replacement
+ (Old_Node : Node_Id) return Node_Id
+ is
+ New_Node : Node_Id;
+
+ procedure Adjust_Named_Associations
+ (Old_Node : Node_Id;
+ New_Node : Node_Id);
+ -- If a call node has named associations, these are chained through
+ -- the First_Named_Actual, Next_Named_Actual links. These must be
+ -- propagated separately to the new parameter list, because these
+ -- are not syntactic fields.
+
+ function Copy_Field_With_Replacement
+ (Field : Union_Id) return Union_Id;
+ -- Given Field, which is a field of Old_Node, return a copy of it
+ -- if it is a syntactic field (i.e. its parent is Node), setting
+ -- the parent of the copy to poit to New_Node. Otherwise returns
+ -- the field (possibly mapped if it is an entity).
+
+ -------------------------------
+ -- Adjust_Named_Associations --
+ -------------------------------
+
+ procedure Adjust_Named_Associations
+ (Old_Node : Node_Id;
+ New_Node : Node_Id)
+ is
+ Old_E : Node_Id;
+ New_E : Node_Id;
+
+ Old_Next : Node_Id;
+ New_Next : Node_Id;
+
+ begin
+ Old_E := First (Parameter_Associations (Old_Node));
+ New_E := First (Parameter_Associations (New_Node));
+ while Present (Old_E) loop
+ if Nkind (Old_E) = N_Parameter_Association
+ and then Present (Next_Named_Actual (Old_E))
+ then
+ if First_Named_Actual (Old_Node)
+ = Explicit_Actual_Parameter (Old_E)
+ then
+ Set_First_Named_Actual
+ (New_Node, Explicit_Actual_Parameter (New_E));
+ end if;
+
+ -- Now scan parameter list from the beginning,to locate
+ -- next named actual, which can be out of order.
+
+ Old_Next := First (Parameter_Associations (Old_Node));
+ New_Next := First (Parameter_Associations (New_Node));
+
+ while Nkind (Old_Next) /= N_Parameter_Association
+ or else Explicit_Actual_Parameter (Old_Next)
+ /= Next_Named_Actual (Old_E)
+ loop
+ Next (Old_Next);
+ Next (New_Next);
+ end loop;
+
+ Set_Next_Named_Actual
+ (New_E, Explicit_Actual_Parameter (New_Next));
+ end if;
+
+ Next (Old_E);
+ Next (New_E);
+ end loop;
+ end Adjust_Named_Associations;
+
+ ---------------------------------
+ -- Copy_Field_With_Replacement --
+ ---------------------------------
+
+ function Copy_Field_With_Replacement
+ (Field : Union_Id) return Union_Id
+ is
+ begin
+ if Field = Union_Id (Empty) then
+ return Field;
+
+ elsif Field in Node_Range then
+ declare
+ Old_N : constant Node_Id := Node_Id (Field);
+ New_N : Node_Id;
+
+ begin
+ -- If syntactic field, as indicated by the parent pointer
+ -- being set, then copy the referenced node recursively.
+
+ if Parent (Old_N) = Old_Node then
+ New_N := Copy_Node_With_Replacement (Old_N);
+
+ if New_N /= Old_N then
+ Set_Parent (New_N, New_Node);
+ end if;
+
+ -- For semantic fields, update possible entity reference
+ -- from the replacement map.
+
+ else
+ New_N := Assoc (Old_N);
+ end if;
+
+ return Union_Id (New_N);
+ end;
+
+ elsif Field in List_Range then
+ declare
+ Old_L : constant List_Id := List_Id (Field);
+ New_L : List_Id;
+
+ begin
+ -- If syntactic field, as indicated by the parent pointer,
+ -- then recursively copy the entire referenced list.
+
+ if Parent (Old_L) = Old_Node then
+ New_L := Copy_List_With_Replacement (Old_L);
+ Set_Parent (New_L, New_Node);
+
+ -- For semantic list, just returned unchanged
+
+ else
+ New_L := Old_L;
+ end if;
+
+ return Union_Id (New_L);
+ end;
+
+ -- Anything other than a list or a node is returned unchanged
+
+ else
+ return Field;
+ end if;
+ end Copy_Field_With_Replacement;
+
+ -- Start of processing for Copy_Node_With_Replacement
+
+ begin
+ if Old_Node <= Empty_Or_Error then
+ return Old_Node;
+
+ elsif Has_Extension (Old_Node) then
+ return Assoc (Old_Node);
+
+ else
+ New_Node := New_Copy (Old_Node);
+
+ -- If the node we are copying is the associated node of a
+ -- previously copied Itype, then adjust the associated node
+ -- of the copy of that Itype accordingly.
+
+ if Present (Actual_Map) then
+ declare
+ E : Elmt_Id;
+ Ent : Entity_Id;
+
+ begin
+ -- Case of hash table used
+
+ if NCT_Hash_Tables_Used then
+ Ent := NCT_Itype_Assoc.Get (Old_Node);
+
+ if Present (Ent) then
+ Set_Associated_Node_For_Itype (Ent, New_Node);
+ end if;
+
+ -- Case of no hash table used
+
+ else
+ E := First_Elmt (Actual_Map);
+ while Present (E) loop
+ if Is_Itype (Node (E))
+ and then
+ Old_Node = Associated_Node_For_Itype (Node (E))
+ then
+ Set_Associated_Node_For_Itype
+ (Node (Next_Elmt (E)), New_Node);
+ end if;
+
+ E := Next_Elmt (Next_Elmt (E));
+ end loop;
+ end if;
+ end;
+ end if;
+
+ -- Recursively copy descendents
+
+ Set_Field1
+ (New_Node, Copy_Field_With_Replacement (Field1 (New_Node)));
+ Set_Field2
+ (New_Node, Copy_Field_With_Replacement (Field2 (New_Node)));
+ Set_Field3
+ (New_Node, Copy_Field_With_Replacement (Field3 (New_Node)));
+ Set_Field4
+ (New_Node, Copy_Field_With_Replacement (Field4 (New_Node)));
+ Set_Field5
+ (New_Node, Copy_Field_With_Replacement (Field5 (New_Node)));
+
+ -- Adjust Sloc of new node if necessary
+
+ if New_Sloc /= No_Location then
+ Set_Sloc (New_Node, New_Sloc);
+
+ -- If we adjust the Sloc, then we are essentially making
+ -- a completely new node, so the Comes_From_Source flag
+ -- should be reset to the proper default value.
+
+ Nodes.Table (New_Node).Comes_From_Source :=
+ Default_Node.Comes_From_Source;
+ end if;
+
+ -- If the node is call and has named associations,
+ -- set the corresponding links in the copy.
+
+ if (Nkind (Old_Node) = N_Function_Call
+ or else Nkind (Old_Node) = N_Entry_Call_Statement
+ or else
+ Nkind (Old_Node) = N_Procedure_Call_Statement)
+ and then Present (First_Named_Actual (Old_Node))
+ then
+ Adjust_Named_Associations (Old_Node, New_Node);
+ end if;
+
+ -- Reset First_Real_Statement for Handled_Sequence_Of_Statements.
+ -- The replacement mechanism applies to entities, and is not used
+ -- here. Eventually we may need a more general graph-copying
+ -- routine. For now, do a sequential search to find desired node.
+
+ if Nkind (Old_Node) = N_Handled_Sequence_Of_Statements
+ and then Present (First_Real_Statement (Old_Node))
+ then
+ declare
+ Old_F : constant Node_Id := First_Real_Statement (Old_Node);
+ N1, N2 : Node_Id;
+
+ begin
+ N1 := First (Statements (Old_Node));
+ N2 := First (Statements (New_Node));
+
+ while N1 /= Old_F loop
+ Next (N1);
+ Next (N2);
+ end loop;
+
+ Set_First_Real_Statement (New_Node, N2);
+ end;
+ end if;
+ end if;
+
+ -- All done, return copied node
+
+ return New_Node;
+ end Copy_Node_With_Replacement;
+
+ -----------------
+ -- Visit_Elist --
+ -----------------
+
+ procedure Visit_Elist (E : Elist_Id) is
+ Elmt : Elmt_Id;
+ begin
+ if Present (E) then
+ Elmt := First_Elmt (E);
+
+ while Elmt /= No_Elmt loop
+ Visit_Node (Node (Elmt));
+ Next_Elmt (Elmt);
+ end loop;
+ end if;
+ end Visit_Elist;
+
+ -----------------
+ -- Visit_Field --
+ -----------------
+
+ procedure Visit_Field (F : Union_Id; N : Node_Id) is
+ begin
+ if F = Union_Id (Empty) then
+ return;
+
+ elsif F in Node_Range then
+
+ -- Copy node if it is syntactic, i.e. its parent pointer is
+ -- set to point to the field that referenced it (certain
+ -- Itypes will also meet this criterion, which is fine, since
+ -- these are clearly Itypes that do need to be copied, since
+ -- we are copying their parent.)
+
+ if Parent (Node_Id (F)) = N then
+ Visit_Node (Node_Id (F));
+ return;
+
+ -- Another case, if we are pointing to an Itype, then we want
+ -- to copy it if its associated node is somewhere in the tree
+ -- being copied.
+
+ -- Note: the exclusion of self-referential copies is just an
+ -- optimization, since the search of the already copied list
+ -- would catch it, but it is a common case (Etype pointing
+ -- to itself for an Itype that is a base type).
+
+ elsif Has_Extension (Node_Id (F))
+ and then Is_Itype (Entity_Id (F))
+ and then Node_Id (F) /= N
+ then
+ declare
+ P : Node_Id;
+
+ begin
+ P := Associated_Node_For_Itype (Node_Id (F));
+ while Present (P) loop
+ if P = Source then
+ Visit_Node (Node_Id (F));
+ return;
+ else
+ P := Parent (P);
+ end if;
+ end loop;
+
+ -- An Itype whose parent is not being copied definitely
+ -- should NOT be copied, since it does not belong in any
+ -- sense to the copied subtree.
+
+ return;
+ end;
+ end if;
+
+ elsif F in List_Range
+ and then Parent (List_Id (F)) = N
+ then
+ Visit_List (List_Id (F));
+ return;
+ end if;
+ end Visit_Field;
+
+ -----------------
+ -- Visit_Itype --
+ -----------------
+
+ procedure Visit_Itype (Old_Itype : Entity_Id) is
+ New_Itype : Entity_Id;
+ E : Elmt_Id;
+ Ent : Entity_Id;
+
+ begin
+ -- Itypes that describe the designated type of access to subprograms
+ -- have the structure of subprogram declarations, with signatures,
+ -- etc. Either we duplicate the signatures completely, or choose to
+ -- share such itypes, which is fine because their elaboration will
+ -- have no side effects.
+
+ if Ekind (Old_Itype) = E_Subprogram_Type then
+ return;
+ end if;
+
+ New_Itype := New_Copy (Old_Itype);
+
+ -- The new Itype has all the attributes of the old one, and
+ -- we just copy the contents of the entity. However, the back-end
+ -- needs different names for debugging purposes, so we create a
+ -- new internal name for it in all cases.
+
+ Set_Chars (New_Itype, New_Internal_Name ('T'));
+
+ -- If our associated node is an entity that has already been copied,
+ -- then set the associated node of the copy to point to the right
+ -- copy. If we have copied an Itype that is itself the associated
+ -- node of some previously copied Itype, then we set the right
+ -- pointer in the other direction.
+
+ if Present (Actual_Map) then
+
+ -- Case of hash tables used
+
+ if NCT_Hash_Tables_Used then
+
+ Ent := NCT_Assoc.Get (Associated_Node_For_Itype (Old_Itype));
+
+ if Present (Ent) then
+ Set_Associated_Node_For_Itype (New_Itype, Ent);
+ end if;
+
+ Ent := NCT_Itype_Assoc.Get (Old_Itype);
+ if Present (Ent) then
+ Set_Associated_Node_For_Itype (Ent, New_Itype);
+
+ -- If the hash table has no association for this Itype and
+ -- its associated node, enter one now.
+
+ else
+ NCT_Itype_Assoc.Set
+ (Associated_Node_For_Itype (Old_Itype), New_Itype);
+ end if;
+
+ -- Case of hash tables not used
+
+ else
+ E := First_Elmt (Actual_Map);
+ while Present (E) loop
+ if Associated_Node_For_Itype (Old_Itype) = Node (E) then
+ Set_Associated_Node_For_Itype
+ (New_Itype, Node (Next_Elmt (E)));
+ end if;
+
+ if Is_Type (Node (E))
+ and then
+ Old_Itype = Associated_Node_For_Itype (Node (E))
+ then
+ Set_Associated_Node_For_Itype
+ (Node (Next_Elmt (E)), New_Itype);
+ end if;
+
+ E := Next_Elmt (Next_Elmt (E));
+ end loop;
+ end if;
+ end if;
+
+ if Present (Freeze_Node (New_Itype)) then
+ Set_Is_Frozen (New_Itype, False);
+ Set_Freeze_Node (New_Itype, Empty);
+ end if;
+
+ -- Add new association to map
+
+ if No (Actual_Map) then
+ Actual_Map := New_Elmt_List;
+ end if;
+
+ Append_Elmt (Old_Itype, Actual_Map);
+ Append_Elmt (New_Itype, Actual_Map);
+
+ if NCT_Hash_Tables_Used then
+ NCT_Assoc.Set (Old_Itype, New_Itype);
+
+ else
+ NCT_Table_Entries := NCT_Table_Entries + 1;
+
+ if NCT_Table_Entries > NCT_Hash_Threshhold then
+ Build_NCT_Hash_Tables;
+ end if;
+ end if;
+
+ -- If a record subtype is simply copied, the entity list will be
+ -- shared. Thus cloned_Subtype must be set to indicate the sharing.
+
+ if Ekind (Old_Itype) = E_Record_Subtype
+ or else Ekind (Old_Itype) = E_Class_Wide_Subtype
+ then
+ Set_Cloned_Subtype (New_Itype, Old_Itype);
+ end if;
+
+ -- Visit descendents that eventually get copied
+
+ Visit_Field (Union_Id (Etype (Old_Itype)), Old_Itype);
+
+ if Is_Discrete_Type (Old_Itype) then
+ Visit_Field (Union_Id (Scalar_Range (Old_Itype)), Old_Itype);
+
+ elsif Has_Discriminants (Base_Type (Old_Itype)) then
+ -- ??? This should involve call to Visit_Field
+ Visit_Elist (Discriminant_Constraint (Old_Itype));
+
+ elsif Is_Array_Type (Old_Itype) then
+ if Present (First_Index (Old_Itype)) then
+ Visit_Field (Union_Id (List_Containing
+ (First_Index (Old_Itype))),
+ Old_Itype);
+ end if;
+
+ if Is_Packed (Old_Itype) then
+ Visit_Field (Union_Id (Packed_Array_Type (Old_Itype)),
+ Old_Itype);
+ end if;
+ end if;
+ end Visit_Itype;
+
+ ----------------
+ -- Visit_List --
+ ----------------
+
+ procedure Visit_List (L : List_Id) is
+ N : Node_Id;
+ begin
+ if L /= No_List then
+ N := First (L);
+
+ while Present (N) loop
+ Visit_Node (N);
+ Next (N);
+ end loop;
+ end if;
+ end Visit_List;
+
+ ----------------
+ -- Visit_Node --
+ ----------------
+
+ procedure Visit_Node (N : Node_Or_Entity_Id) is
+
+ -- Start of processing for Visit_Node
+
+ begin
+ -- Handle case of an Itype, which must be copied
+
+ if Has_Extension (N)
+ and then Is_Itype (N)
+ then
+ -- Nothing to do if already in the list. This can happen with an
+ -- Itype entity that appears more than once in the tree.
+ -- Note that we do not want to visit descendents in this case.
+
+ -- Test for already in list when hash table is used
+
+ if NCT_Hash_Tables_Used then
+ if Present (NCT_Assoc.Get (Entity_Id (N))) then
+ return;
+ end if;
+
+ -- Test for already in list when hash table not used
+
+ else
+ declare
+ E : Elmt_Id;
+ begin
+ if Present (Actual_Map) then
+ E := First_Elmt (Actual_Map);
+ while Present (E) loop
+ if Node (E) = N then
+ return;
+ else
+ E := Next_Elmt (Next_Elmt (E));
+ end if;
+ end loop;
+ end if;
+ end;
+ end if;
+
+ Visit_Itype (N);
+ end if;
+
+ -- Visit descendents
+
+ Visit_Field (Field1 (N), N);
+ Visit_Field (Field2 (N), N);
+ Visit_Field (Field3 (N), N);
+ Visit_Field (Field4 (N), N);
+ Visit_Field (Field5 (N), N);
+ end Visit_Node;
+
+ -- Start of processing for New_Copy_Tree
+
+ begin
+ Actual_Map := Map;
+
+ -- See if we should use hash table
+
+ if No (Actual_Map) then
+ NCT_Hash_Tables_Used := False;
+
+ else
+ declare
+ Elmt : Elmt_Id;
+
+ begin
+ NCT_Table_Entries := 0;
+
+ Elmt := First_Elmt (Actual_Map);
+ while Present (Elmt) loop
+ NCT_Table_Entries := NCT_Table_Entries + 1;
+ Next_Elmt (Elmt);
+ Next_Elmt (Elmt);
+ end loop;
+
+ if NCT_Table_Entries > NCT_Hash_Threshhold then
+ Build_NCT_Hash_Tables;
+ else
+ NCT_Hash_Tables_Used := False;
+ end if;
+ end;
+ end if;
+
+ -- Hash table set up if required, now start phase one by visiting
+ -- top node (we will recursively visit the descendents).
+
+ Visit_Node (Source);
+
+ -- Now the second phase of the copy can start. First we process
+ -- all the mapped entities, copying their descendents.
+
+ if Present (Actual_Map) then
+ declare
+ Elmt : Elmt_Id;
+ New_Itype : Entity_Id;
+ begin
+ Elmt := First_Elmt (Actual_Map);
+ while Present (Elmt) loop
+ Next_Elmt (Elmt);
+ New_Itype := Node (Elmt);
+ Copy_Itype_With_Replacement (New_Itype);
+ Next_Elmt (Elmt);
+ end loop;
+ end;
+ end if;
+
+ -- Now we can copy the actual tree
+
+ return Copy_Node_With_Replacement (Source);
+ end New_Copy_Tree;
+
-------------------------
-- New_External_Entity --
-------------------------
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads
index ce6d4bd99d2..4046b785892 100644
--- a/gcc/ada/sem_util.ads
+++ b/gcc/ada/sem_util.ads
@@ -876,6 +876,57 @@ package Sem_Util is
-- formal. Used in Ada 2005 mode to solve the syntactic ambiguity that
-- results from an indexing of a function call written in prefix form.
+ function New_Copy_List_Tree (List : List_Id) return List_Id;
+ -- Copy recursively an analyzed list of nodes. Uses New_Copy_Tree defined
+ -- below. As for New_Copy_Tree, it is illegal to attempt to copy extended
+ -- nodes (entities) either directly or indirectly using this function.
+
+ function New_Copy_Tree
+ (Source : Node_Id;
+ Map : Elist_Id := No_Elist;
+ New_Sloc : Source_Ptr := No_Location;
+ New_Scope : Entity_Id := Empty) return Node_Id;
+ -- Given a node that is the root of a subtree, Copy_Tree copies the entire
+ -- syntactic subtree, including recursively any descendents whose parent
+ -- field references a copied node (descendents not linked to a copied node
+ -- by the parent field are not copied, instead the copied tree references
+ -- the same descendent as the original in this case, which is appropriate
+ -- for non-syntactic fields such as Etype). The parent pointers in the
+ -- copy are properly set. Copy_Tree (Empty/Error) returns Empty/Error.
+ -- The one exception to the rule of not copying semantic fields is that
+ -- any implicit types attached to the subtree are duplicated, so that
+ -- the copy contains a distinct set of implicit type entities. Thus this
+ -- function is used when it is necessary to duplicate an analyzed tree,
+ -- declared in the same or some other compilation unit. This function is
+ -- declared here rather than in atree because it uses semantic information
+ -- in particular concerning the structure of itypes and the generation of
+ -- public symbols.
+
+ -- The Map argument, if set to a non-empty Elist, specifies a set of
+ -- mappings to be applied to entities in the tree. The map has the form:
+ --
+ -- old entity 1
+ -- new entity to replace references to entity 1
+ -- old entity 2
+ -- new entity to replace references to entity 2
+ -- ...
+ --
+ -- The call destroys the contents of Map in this case
+ --
+ -- The parameter New_Sloc, if set to a value other than No_Location, is
+ -- used as the Sloc value for all nodes in the new copy. If New_Sloc is
+ -- set to its default value No_Location, then the Sloc values of the
+ -- nodes in the copy are simply copied from the corresponding original.
+ --
+ -- The Comes_From_Source indication is unchanged if New_Sloc is set to
+ -- the default No_Location value, but is reset if New_Sloc is given, since
+ -- in this case the result clearly is neither a source node or an exact
+ -- copy of a source node.
+ --
+ -- The parameter New_Scope, if set to a value other than Empty, is the
+ -- value to use as the Scope for any Itypes that are copied. The most
+ -- typical value for this parameter, if given, is Current_Scope.
+
function New_External_Entity
(Kind : Entity_Kind;
Scope_Id : Entity_Id;
diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb
index 3550392f872..b8ff44a72a1 100644
--- a/gcc/ada/sem_warn.adb
+++ b/gcc/ada/sem_warn.adb
@@ -236,12 +236,15 @@ package body Sem_Warn is
Iter : constant Node_Id := Iteration_Scheme (Loop_Statement);
Ref : Node_Id := Empty;
- -- Reference in iteration scheme to variable that may not be modified in
- -- loop, indicating a possible infinite loop.
+ -- Reference in iteration scheme to variable that might not be modified
+ -- in loop, indicating a possible infinite loop.
Var : Entity_Id := Empty;
-- Corresponding entity (entity of Ref)
+ Function_Call_Found : Boolean := False;
+ -- True if Find_Var found a function call in the condition
+
procedure Find_Var (N : Node_Id);
-- Inspect condition to see if it depends on a single entity reference.
-- If so, Ref is set to point to the reference node, and Var is set to
@@ -305,6 +308,8 @@ package body Sem_Warn is
elsif Nkind (N) = N_Function_Call then
+ Function_Call_Found := True;
+
-- Forget it if function name is not entity, who knows what
-- we might be calling?
@@ -541,7 +546,7 @@ package body Sem_Warn is
-- Start of processing for Check_Infinite_Loop_Warning
begin
- -- We need a while iteration with no condition actions. Conditions
+ -- We need a while iteration with no condition actions. Condition
-- actions just make things too complicated to get the warning right.
if No (Iter)
@@ -556,19 +561,25 @@ package body Sem_Warn is
Find_Var (Condition (Iter));
- -- Nothing to do if local variable from source not found
+ -- Nothing to do if local variable from source not found. If it's a
+ -- renaming, it is probably renaming something too complicated to deal
+ -- with here.
if No (Var)
or else Ekind (Var) /= E_Variable
or else Is_Library_Level_Entity (Var)
or else not Comes_From_Source (Var)
+ or else Nkind (Parent (Var)) = N_Object_Renaming_Declaration
then
return;
-- Nothing to do if there is some indirection involved (assume that the
-- designated variable might be modified in some way we don't see).
+ -- However, if no function call was found, then we don't care about
+ -- indirections, because the condition must be something like "while X
+ -- /= null loop", so we don't care if X.all is modified in the loop.
- elsif Has_Indirection (Etype (Var)) then
+ elsif Function_Call_Found and then Has_Indirection (Etype (Var)) then
return;
-- Same sort of thing for volatile variable, might be modified by
@@ -3006,6 +3017,7 @@ package body Sem_Warn is
when 'X' =>
Warn_On_Non_Local_Exception := False;
+ No_Warn_On_Non_Local_Exception := True;
when others =>
return False;
@@ -3079,6 +3091,8 @@ package body Sem_Warn is
Warn_On_Unrepped_Components := False;
Warn_On_Warnings_Off := False;
+ No_Warn_On_Non_Local_Exception := True;
+
when 'b' =>
Warn_On_Bad_Fixed_Value := True;
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads
index 91d286fcc6d..b87c917c44d 100644
--- a/gcc/ada/sinfo.ads
+++ b/gcc/ada/sinfo.ads
@@ -621,10 +621,15 @@ package Sinfo is
-- A flag present in the N_Assignment_Statement node. It is used only
-- if the type being assigned is an array type, and is set if analysis
-- determines that it is definitely safe to do the copy backwards, i.e.
- -- starting at the highest addressed element. Note that if neither of the
- -- flags Forwards_OK or Backwards_OK is set, it means that the front end
- -- could not determine that either direction is definitely safe, and a
- -- runtime check may be required if the backend cannot figure it out.
+ -- starting at the highest addressed element. This is the case if either
+ -- the operands do not overlap, or they may overlap, but if they do,
+ -- then the left operand is at a higher address than the right operand.
+ --
+ -- Note: If neither of the flags Forwards_OK or Backwards_OK is set, it
+ -- means that the front end could not determine that either direction is
+ -- definitely safe, and a runtime check may be required if the backend
+ -- cannot figure it out. If both flags Forwards_OK and Backwards_OK are
+ -- set, it means that the front end can assure no overlap of operands.
-- Body_To_Inline (Node3-Sem)
-- present in subprogram declarations. Denotes analyzed but unexpanded
@@ -806,7 +811,7 @@ package Sinfo is
-- See also the description of Do_Range_Check for this case. The only
-- attribute references which use this flag are Pred and Succ, where it
-- means that the result should be checked for going outside the base
- -- range.
+ -- range. Note that this flag is not set for modular types.
-- Do_Range_Check (Flag9-Sem)
-- This flag is set on an expression which appears in a context where a
@@ -971,7 +976,7 @@ package Sinfo is
-- Expansion_Delayed (Flag11-Sem)
-- Set on aggregates and extension aggregates that need a top-down rather
- -- than bottom up expansion. Typically aggregate expansion happens bottom
+ -- than bottom-up expansion. Typically aggregate expansion happens bottom
-- up. For nested aggregates the expansion is delayed until the enclosing
-- aggregate itself is expanded, e.g. in the context of a declaration. To
-- delay it we set this flag. This is done to avoid creating a temporary
@@ -1023,10 +1028,15 @@ package Sinfo is
-- A flag present in the N_Assignment_Statement node. It is used only
-- if the type being assigned is an array type, and is set if analysis
-- determines that it is definitely safe to do the copy forwards, i.e.
- -- starting at the lowest addressed element. Note that if neither of the
- -- flags Forwards_OK or Backwards_OK is set, it means that the front end
- -- could not determine that either direction is definitely safe, and a
- -- runtime check is required.
+ -- starting at the lowest addressed element. This is the case if either
+ -- the operands do not overlap, or they may overlap, but if they do,
+ -- then the left operand is at a lower address than the right operand.
+ --
+ -- Note: If neither of the flags Forwards_OK or Backwards_OK is set, it
+ -- means that the front end could not determine that either direction is
+ -- definitely safe, and a runtime check may be required if the backend
+ -- cannot figure it out. If both flags Forwards_OK and Backwards_OK are
+ -- set, it means that the front end can assure no overlap of operands.
-- From_At_End (Flag4-Sem)
-- This flag is set on an N_Raise_Statement node if it corresponds to
diff --git a/gcc/ada/sinput-l.adb b/gcc/ada/sinput-l.adb
index ac9877f7ad8..08cc5f8301a 100644
--- a/gcc/ada/sinput-l.adb
+++ b/gcc/ada/sinput-l.adb
@@ -494,9 +494,9 @@ package body Sinput.L is
Prep_Buffer_Last := 0;
- -- Initialize the preprocessor
+ -- Initialize the preprocessor hooks
- Prep.Initialize
+ Prep.Setup_Hooks
(Error_Msg => Errout.Error_Msg'Access,
Scan => Scn.Scanner.Scan'Access,
Set_Ignore_Errors => Errout.Set_Ignore_Errors'Access,
diff --git a/gcc/ada/sinput-p.adb b/gcc/ada/sinput-p.adb
index b57c73bf957..2c9dc0636fc 100644
--- a/gcc/ada/sinput-p.adb
+++ b/gcc/ada/sinput-p.adb
@@ -23,9 +23,14 @@
-- --
------------------------------------------------------------------------------
+with Ada.Unchecked_Conversion;
+with Ada.Unchecked_Deallocation;
+
with Prj.Err;
with Sinput.C;
+with System;
+
package body Sinput.P is
First : Boolean := True;
@@ -34,6 +39,59 @@ package body Sinput.P is
-- The flag is reset to False at the first call to Load_Project_File.
-- Calling Reset_First sets it back to True.
+ procedure Free is new Ada.Unchecked_Deallocation
+ (Lines_Table_Type, Lines_Table_Ptr);
+
+ procedure Free is new Ada.Unchecked_Deallocation
+ (Logical_Lines_Table_Type, Logical_Lines_Table_Ptr);
+
+ -----------------------------
+ -- Clear_Source_File_Table --
+ -----------------------------
+
+ procedure Clear_Source_File_Table is
+ use System;
+
+ begin
+ for X in 1 .. Source_File.Last loop
+ declare
+ S : Source_File_Record renames Source_File.Table (X);
+ Lo : constant Source_Ptr := S.Source_First;
+ Hi : constant Source_Ptr := S.Source_Last;
+ subtype Actual_Source_Buffer is Source_Buffer (Lo .. Hi);
+ -- Physical buffer allocated
+
+ type Actual_Source_Ptr is access Actual_Source_Buffer;
+ -- This is the pointer type for the physical buffer allocated
+
+ procedure Free is new Ada.Unchecked_Deallocation
+ (Actual_Source_Buffer, Actual_Source_Ptr);
+
+ pragma Suppress (All_Checks);
+
+ pragma Warnings (Off);
+ -- The following unchecked conversion is aliased safe, since it
+ -- is not used to create improperly aliased pointer values.
+
+ function To_Actual_Source_Ptr is new
+ Ada.Unchecked_Conversion (Address, Actual_Source_Ptr);
+
+ pragma Warnings (On);
+
+ Actual_Ptr : Actual_Source_Ptr :=
+ To_Actual_Source_Ptr (S.Source_Text (Lo)'Address);
+
+ begin
+ Free (Actual_Ptr);
+ Free (S.Lines_Table);
+ Free (S.Logical_Lines_Table);
+ end;
+ end loop;
+
+ Source_File.Free;
+ Sinput.Initialize;
+ end Clear_Source_File_Table;
+
-----------------------
-- Load_Project_File --
-----------------------
@@ -100,11 +158,10 @@ package body Sinput.P is
Prj.Err.Scanner.Set_Special_Character ('#');
Prj.Err.Scanner.Set_Special_Character ('$');
- -- We scan past junk to the first interesting compilation unit
- -- token, to see if it is SEPARATE. We ignore WITH keywords during
- -- this and also PRIVATE. The reason for ignoring PRIVATE is that
- -- it handles some error situations, and also to handle PRIVATE WITH
- -- in Ada 2005 mode.
+ -- We scan past junk to the first interesting compilation unit token, to
+ -- see if it is SEPARATE. We ignore WITH keywords during this and also
+ -- PRIVATE. The reason for ignoring PRIVATE is that it handles some
+ -- error situations, and also to handle PRIVATE WITH in Ada 2005 mode.
while Token = Tok_With
or else Token = Tok_Private
diff --git a/gcc/ada/sinput-p.ads b/gcc/ada/sinput-p.ads
index 2eb3e376802..8f925bbc9a0 100644
--- a/gcc/ada/sinput-p.ads
+++ b/gcc/ada/sinput-p.ads
@@ -31,6 +31,13 @@ with Scans; use Scans;
package Sinput.P is
+ procedure Clear_Source_File_Table;
+ -- This procedure frees memory allocated in the Source_File table (in the
+ -- private part of package Sinput). It should only be used when it is
+ -- guaranteed that all source files that have been loaded so far will not
+ -- be accessed before being reloaded. It is intended for tools that parse
+ -- several times sources, to avoid memory leaks.
+
function Load_Project_File (Path : String) return Source_File_Index;
-- Load the source of a project source file into memory and initialize the
-- Scans state.
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index 8943b7a53a5..2f4c6cc3b08 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -220,6 +220,10 @@ package Snames is
Name_Put_Line : constant Name_Id := N + $;
Name_To : constant Name_Id := N + $;
+ -- Name used by the integrated preprocessor
+
+ Name_Defined : constant Name_Id := N + $;
+
-- Names for packages that are treated specially by the compiler
Name_Exception_Traces : constant Name_Id := N + $;
@@ -1093,6 +1097,7 @@ package Snames is
Name_Metrics : constant Name_Id := N + $;
Name_Naming : constant Name_Id := N + $;
Name_None : constant Name_Id := N + $;
+ Name_Object_File_Suffix : constant Name_Id := N + $;
Name_Object_Generated : constant Name_Id := N + $;
Name_Object_List : constant Name_Id := N + $;
Name_Objects_Linked : constant Name_Id := N + $;
@@ -1130,6 +1135,7 @@ package Snames is
Name_Toolchain_Description : constant Name_Id := N + $;
Name_Toolchain_Version : constant Name_Id := N + $;
Name_Runtime_Library_Dir : constant Name_Id := N + $;
+ Name_Runtime_Source_Dir : constant Name_Id := N + $;
-- Other miscellaneous names used in front end
diff --git a/gcc/ada/sprint.adb b/gcc/ada/sprint.adb
index 1ea8bac1e48..35ecce93fc9 100644
--- a/gcc/ada/sprint.adb
+++ b/gcc/ada/sprint.adb
@@ -3719,7 +3719,7 @@ package body Sprint is
Write_Id (Directly_Designated_Type (Typ));
- -- Array types and string types
+ -- Array types and string types
when E_Array_Type | E_String_Type =>
Write_Header;
@@ -3748,7 +3748,8 @@ package body Sprint is
Sprint_Node (X);
Set_Sloc (X, Old_Sloc);
- -- Array subtypes and string subtypes
+ -- Array subtypes and string subtypes.
+ -- Preserve Sloc of index subtypes, as above.
when E_Array_Subtype | E_String_Subtype =>
Write_Header (False);
@@ -3757,7 +3758,9 @@ package body Sprint is
X := First_Index (Typ);
loop
+ Old_Sloc := Sloc (X);
Sprint_Node (X);
+ Set_Sloc (X, Old_Sloc);
Next_Index (X);
exit when No (X);
Write_Str (", ");
@@ -3765,11 +3768,13 @@ package body Sprint is
Write_Char (')');
- -- Signed integer types, and modular integer subtypes
+ -- Signed integer types, and modular integer subtypes,
+ -- and also enumeration subtypes.
when E_Signed_Integer_Type |
E_Signed_Integer_Subtype |
- E_Modular_Integer_Subtype =>
+ E_Modular_Integer_Subtype |
+ E_Enumeration_Subtype =>
Write_Header (Ekind (Typ) = E_Signed_Integer_Type);
@@ -3821,14 +3826,14 @@ package body Sprint is
end if;
end;
- -- Modular integer types
+ -- Modular integer types
when E_Modular_Integer_Type =>
Write_Header;
Write_Str (" mod ");
Write_Uint_With_Col_Check (Modulus (Typ), Auto);
- -- Floating point types and subtypes
+ -- Floating point types and subtypes
when E_Floating_Point_Type |
E_Floating_Point_Subtype =>
@@ -4104,8 +4109,8 @@ package body Sprint is
exit when Spec = Empty;
-- Add semicolon, unless we are printing original tree and the
- -- next specification is part of a list (but not the first
- -- element of that list)
+ -- next specification is part of a list (but not the first element
+ -- of that list).
if not Dump_Original_Only or else not Prev_Ids (Spec) then
Write_Str ("; ");
diff --git a/gcc/ada/stand.ads b/gcc/ada/stand.ads
index 29d80a15296..f2fadccad8e 100644
--- a/gcc/ada/stand.ads
+++ b/gcc/ada/stand.ads
@@ -35,13 +35,6 @@
with Types; use Types;
--- Do we really need the with of Namet?
-
-pragma Warnings (Off);
-with Namet; use Namet;
-pragma Elaborate_All (Namet);
-pragma Warnings (On);
-
package Stand is
type Standard_Entity_Type is (
diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c
index a0fd4b0a115..8a227b42037 100644
--- a/gcc/ada/sysdep.c
+++ b/gcc/ada/sysdep.c
@@ -348,7 +348,7 @@ __gnat_ttyname (int filedes)
|| defined (__MACHTEN__) || defined (__hpux__) || defined (_AIX) \
|| (defined (__svr4__) && defined (i386)) || defined (__Lynx__) \
|| defined (__CYGWIN__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
- || defined (__GLIBC__)
+ || defined (__GLIBC__) || defined (__APPLE__)
#ifdef __MINGW32__
#if OLD_MINGW
@@ -406,7 +406,7 @@ getc_immediate_common (FILE *stream,
|| defined (__CYGWIN32__) || defined (__MACHTEN__) || defined (__hpux__) \
|| defined (_AIX) || (defined (__svr4__) && defined (i386)) \
|| defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
- || defined (__GLIBC__)
+ || defined (__GLIBC__) || defined (__APPLE__)
char c;
int nread;
int good_one = 0;
@@ -426,7 +426,7 @@ getc_immediate_common (FILE *stream,
|| defined (__osf__) || defined (__MACHTEN__) || defined (__hpux__) \
|| defined (_AIX) || (defined (__svr4__) && defined (i386)) \
|| defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
- || defined (__GLIBC__)
+ || defined (__GLIBC__) || defined (__APPLE__)
eof_ch = termios_rec.c_cc[VEOF];
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
@@ -743,26 +743,53 @@ extern void (*Unlock_Task) (void);
/* Reentrant localtime for Windows and OS/2. */
-extern struct tm *
-__gnat_localtime_tzoff (const time_t *, struct tm *, long *);
+extern void
+__gnat_localtime_tzoff (const time_t *, long *);
-struct tm *
-__gnat_localtime_tzoff (const time_t *timer, struct tm *tp, long *off)
+static const unsigned long long w32_epoch_offset = 11644473600ULL;
+void
+__gnat_localtime_tzoff (const time_t *timer, long *off)
{
- DWORD dwRet;
- struct tm *tmp;
+ union
+ {
+ FILETIME ft_time;
+ unsigned long long ull_time;
+ } utc_time, local_time;
+
+ SYSTEMTIME utc_sys_time, local_sys_time;
TIME_ZONE_INFORMATION tzi;
+ BOOL status = 1;
+ DWORD tzi_status;
+
(*Lock_Task) ();
- tmp = localtime (timer);
- memcpy (tp, tmp, sizeof (struct tm));
- dwRet = GetTimeZoneInformation (&tzi);
- *off = tzi.Bias;
- if (tp->tm_isdst > 0)
- *off = *off + tzi.DaylightBias;
- *off = *off * -60;
+
+ /* First convert unix time_t structure to windows FILETIME format. */
+ utc_time.ull_time = ((unsigned long long) *timer + w32_epoch_offset)
+ * 10000000ULL;
+
+ tzi_status = GetTimeZoneInformation (&tzi);
+
+ /* If GetTimeZoneInformation does not return a value between 0 and 2 then
+ it means that we were not able to retrieve timezone informations.
+ Note that we cannot use here FileTimeToLocalFileTime as Windows will use
+ in always in this case the current timezone setting. As suggested on
+ MSDN we use the following three system calls to get the right information.
+ Note also that starting with Windows Vista new functions are provided to
+ get timezone settings that depend on the year. We cannot use them as we
+ still support Windows XP and Windows 2003. */
+ status = (tzi_status >= 0 && tzi_status <= 2)
+ && FileTimeToSystemTime (&utc_time.ft_time, &utc_sys_time)
+ && SystemTimeToTzSpecificLocalTime (&tzi, &utc_sys_time, &local_sys_time)
+ && SystemTimeToFileTime (&local_sys_time, &local_time.ft_time);
+
+ if (!status)
+ /* An error occurs so return invalid_tzoff. */
+ *off = __gnat_invalid_tzoff;
+ else
+ *off = (long) ((local_time.ull_time - utc_time.ull_time) / 10000000ULL);
+
(*Unlock_Task) ();
- return tp;
}
#else
@@ -774,16 +801,14 @@ __gnat_localtime_tzoff (const time_t *timer, struct tm *tp, long *off)
spec is required. Only use when ___THREADS_POSIX4ad4__ is defined,
the Lynx convention when building against the legacy API. */
-extern struct tm *
-__gnat_localtime_tzoff (const time_t *, struct tm *, long *);
+extern void
+__gnat_localtime_tzoff (const time_t *, long *);
-struct tm *
-__gnat_localtime_tzoff (const time_t *timer, struct tm *tp, long *off)
+void
+__gnat_localtime_tzoff (const time_t *timer, long *off)
{
/* Treat all time values in GMT */
- localtime_r (tp, timer);
*off = 0;
- return NULL;
}
#else
@@ -795,28 +820,21 @@ __gnat_localtime_tzoff (const time_t *timer, struct tm *tp, long *off)
/* All other targets provide a standard localtime_r */
-extern struct tm *
-__gnat_localtime_tzoff (const time_t *, struct tm *, long *);
+extern void
+__gnat_localtime_tzoff (const time_t *, long *);
-struct tm *
-__gnat_localtime_tzoff (const time_t *timer, struct tm *tp, long *off)
+void
+__gnat_localtime_tzoff (const time_t *timer, long *off)
{
- localtime_r (timer, tp);
+ struct tm tp;
+ localtime_r (timer, &tp);
/* AIX, HPUX, SGI Irix, Sun Solaris */
#if defined (_AIX) || defined (__hpux__) || defined (sgi) || defined (sun)
- /* The contents of external variable "timezone" may not always be
- initialized. Instead of returning an incorrect offset, treat the local
- time zone as 0 (UTC). The value of 28 hours is the maximum valid offset
- allowed by Ada.Calendar.Time_Zones. */
- if ((timezone < -28 * 3600) || (timezone > 28 * 3600))
- *off = 0;
- else
- {
- *off = (long) -timezone;
- if (tp->tm_isdst > 0)
- *off = *off + 3600;
- }
+ *off = (long) -timezone;
+ if (tp.tm_isdst > 0)
+ *off = *off + 3600;
+
/* Lynx - Treat all time values in GMT */
#elif defined (__Lynx__)
*off = 0;
@@ -850,17 +868,16 @@ __gnat_localtime_tzoff (const time_t *timer, struct tm *tp, long *off)
}
}
-/* Darwin, Free BSD, Linux, Tru64, where there exists a component tm_gmtoff
- in struct tm */
+/* Darwin, Free BSD, Linux, Tru64, where component tm_gmtoff is present in
+ struct tm */
#elif defined (__APPLE__) || defined (__FreeBSD__) || defined (linux) ||\
(defined (__alpha__) && defined (__osf__)) || defined (__GLIBC__)
- *off = tp->tm_gmtoff;
+ *off = tp.tm_gmtoff;
/* All other platforms: Treat all time values in GMT */
#else
*off = 0;
#endif
- return NULL;
}
#endif
diff --git a/gcc/ada/system-darwin-x86.ads b/gcc/ada/system-darwin-x86.ads
index d7f6d0ec272..a4d5fbf25e0 100644
--- a/gcc/ada/system-darwin-x86.ads
+++ b/gcc/ada/system-darwin-x86.ads
@@ -155,7 +155,7 @@ private
Preallocated_Stacks : constant Boolean := False;
Signed_Zeros : constant Boolean := True;
Stack_Check_Default : constant Boolean := False;
- Stack_Check_Probes : constant Boolean := False;
+ Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_64_Bit_Divides : constant Boolean := True;
Support_Aggregates : constant Boolean := True;
diff --git a/gcc/ada/system-darwin-x86_64.ads b/gcc/ada/system-darwin-x86_64.ads
index e57910b188f..4211f347c8e 100644
--- a/gcc/ada/system-darwin-x86_64.ads
+++ b/gcc/ada/system-darwin-x86_64.ads
@@ -5,7 +5,7 @@
-- S Y S T E M --
-- --
-- S p e c --
--- (Darwin/x86_64 Version) --
+-- (Darwin/x86_64 Version) --
-- --
-- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
-- --
@@ -142,7 +142,7 @@ private
-- of the individual switch values.
Backend_Divide_Checks : constant Boolean := False;
- Backend_Overflow_Checks : constant Boolean := False;
+ Backend_Overflow_Checks : constant Boolean := True;
Command_Line_Args : constant Boolean := True;
Configurable_Run_Time : constant Boolean := False;
Denorm : constant Boolean := True;
@@ -155,7 +155,7 @@ private
Preallocated_Stacks : constant Boolean := False;
Signed_Zeros : constant Boolean := True;
Stack_Check_Default : constant Boolean := False;
- Stack_Check_Probes : constant Boolean := False;
+ Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_64_Bit_Divides : constant Boolean := True;
Support_Aggregates : constant Boolean := True;
diff --git a/gcc/ada/system-mingw-x86_64.ads b/gcc/ada/system-mingw-x86_64.ads
index c60f6aa1d40..587fd21163d 100644
--- a/gcc/ada/system-mingw-x86_64.ads
+++ b/gcc/ada/system-mingw-x86_64.ads
@@ -116,7 +116,7 @@ private
-- of the individual switch values.
Backend_Divide_Checks : constant Boolean := False;
- Backend_Overflow_Checks : constant Boolean := False;
+ Backend_Overflow_Checks : constant Boolean := True;
Command_Line_Args : constant Boolean := True;
Configurable_Run_Time : constant Boolean := False;
Denorm : constant Boolean := True;
diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb
index 52bbbcb953c..da42ba8b7b5 100644
--- a/gcc/ada/targparm.adb
+++ b/gcc/ada/targparm.adb
@@ -408,10 +408,10 @@ package body Targparm is
-- Suppress_Exception_Locations
- elsif System_Text (P .. P + 34) =
- "pragma Suppress_Exception_Locations;"
+ elsif System_Text (P .. P + 35) =
+ "pragma Suppress_Exception_Locations;"
then
- P := P + 35;
+ P := P + 36;
Opt.Exception_Locations_Suppressed := True;
goto Line_Loop_Continue;
diff --git a/gcc/ada/tbuild.adb b/gcc/ada/tbuild.adb
index 217c7f2d8f2..395a7137659 100644
--- a/gcc/ada/tbuild.adb
+++ b/gcc/ada/tbuild.adb
@@ -511,8 +511,7 @@ package body Tbuild is
if Suffix /= ' ' then
pragma Assert (Is_OK_Internal_Letter (Suffix));
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := Suffix;
+ Add_Char_To_Name_Buffer (Suffix);
end if;
if Suffix_Index /= 0 then
@@ -637,10 +636,8 @@ package body Tbuild is
is
begin
Get_Name_String (Related_Id);
- Name_Len := Name_Len + 1;
- Name_Buffer (Name_Len) := '_';
- Name_Buffer (Name_Len + 1 .. Name_Len + Suffix'Length) := Suffix;
- Name_Len := Name_Len + Suffix'Length;
+ Add_Char_To_Name_Buffer ('_');
+ Add_Str_To_Name_Buffer (Suffix);
return Name_Find;
end New_Suffixed_Name;
diff --git a/gcc/ada/tracebak.c b/gcc/ada/tracebak.c
index 8a69057ed77..8f3c4cc389d 100644
--- a/gcc/ada/tracebak.c
+++ b/gcc/ada/tracebak.c
@@ -317,7 +317,8 @@ struct layout
#define FRAME_OFFSET(FP) 0
#define PC_ADJUST -2
#define STOP_FRAME(CURRENT, TOP_STACK) \
- (IS_BAD_PTR((long)(CURRENT)->return_address) \
+ (IS_BAD_PTR((long)(CURRENT)) \
+ || IS_BAD_PTR((long)(CURRENT)->return_address) \
|| (CURRENT)->return_address == 0|| (CURRENT)->next == 0 \
|| (void *) (CURRENT) < (TOP_STACK))
diff --git a/gcc/ada/types.ads b/gcc/ada/types.ads
index 94b037e7518..96b60b579de 100644
--- a/gcc/ada/types.ads
+++ b/gcc/ada/types.ads
@@ -192,8 +192,8 @@ package Types is
subtype Source_Buffer is Text_Buffer;
-- Type used to store text of a source file . The buffer for the main
-- source (the source specified on the command line) has a lower bound
- -- starting at zero. Subsequent subsidiary sources have lower bounds which
- -- are one greater than the previous upper bound.
+ -- starting at zero. Subsequent subsidiary sources have lower bounds
+ -- which are one greater than the previous upper bound.
subtype Big_Source_Buffer is Text_Buffer (0 .. Text_Ptr'Last);
-- This is a virtual type used as the designated type of the access
@@ -787,24 +787,25 @@ package Types is
PE_Access_Before_Elaboration, -- 14
PE_Accessibility_Check_Failed, -- 15
- PE_All_Guards_Closed, -- 16
- PE_Current_Task_In_Entry_Body, -- 17
- PE_Duplicated_Entry_Address, -- 18
- PE_Explicit_Raise, -- 19
- PE_Finalize_Raised_Exception, -- 20
- PE_Implicit_Return, -- 21
- PE_Misaligned_Address_Value, -- 22
- PE_Missing_Return, -- 23
- PE_Overlaid_Controlled_Object, -- 24
- PE_Potentially_Blocking_Operation, -- 25
- PE_Stubbed_Subprogram_Called, -- 26
- PE_Unchecked_Union_Restriction, -- 27
- PE_Non_Transportable_Actual, -- 28
-
- SE_Empty_Storage_Pool, -- 29
- SE_Explicit_Raise, -- 30
- SE_Infinite_Recursion, -- 31
- SE_Object_Too_Large); -- 32
+ PE_Address_Of_Intrinsic, -- 16
+ PE_All_Guards_Closed, -- 17
+ PE_Current_Task_In_Entry_Body, -- 18
+ PE_Duplicated_Entry_Address, -- 19
+ PE_Explicit_Raise, -- 20
+ PE_Finalize_Raised_Exception, -- 21
+ PE_Implicit_Return, -- 22
+ PE_Misaligned_Address_Value, -- 23
+ PE_Missing_Return, -- 24
+ PE_Overlaid_Controlled_Object, -- 25
+ PE_Potentially_Blocking_Operation, -- 26
+ PE_Stubbed_Subprogram_Called, -- 27
+ PE_Unchecked_Union_Restriction, -- 28
+ PE_Non_Transportable_Actual, -- 29
+
+ SE_Empty_Storage_Pool, -- 30
+ SE_Explicit_Raise, -- 31
+ SE_Infinite_Recursion, -- 32
+ SE_Object_Too_Large); -- 33
subtype RT_CE_Exceptions is RT_Exception_Code range
CE_Access_Check_Failed ..
diff --git a/gcc/ada/types.h b/gcc/ada/types.h
index 1d4fd67065b..9b2cc9036bd 100644
--- a/gcc/ada/types.h
+++ b/gcc/ada/types.h
@@ -359,23 +359,24 @@ typedef Int Mechanism_Type;
#define PE_Access_Before_Elaboration 14
#define PE_Accessibility_Check_Failed 15
-#define PE_All_Guards_Closed 16
-#define PE_Current_Task_In_Entry_Body 17
-#define PE_Duplicated_Entry_Address 18
-#define PE_Explicit_Raise 19
-#define PE_Finalize_Raised_Exception 20
-#define PE_Implicit_Return 21
-#define PE_Misaligned_Address_Value 22
-#define PE_Missing_Return 23
-#define PE_Overlaid_Controlled_Object 24
-#define PE_Potentially_Blocking_Operation 25
-#define PE_Stubbed_Subprogram_Called 26
-#define PE_Unchecked_Union_Restriction 27
-#define PE_Non_Transportable_Actual 28
-
-#define SE_Empty_Storage_Pool 29
-#define SE_Explicit_Raise 30
-#define SE_Infinite_Recursion 31
-#define SE_Object_Too_Large 32
-
-#define LAST_REASON_CODE 32
+#define PE_Address_Of_Intrinsic 16
+#define PE_All_Guards_Closed 17
+#define PE_Current_Task_In_Entry_Body 18
+#define PE_Duplicated_Entry_Address 19
+#define PE_Explicit_Raise 20
+#define PE_Finalize_Raised_Exception 21
+#define PE_Implicit_Return 22
+#define PE_Misaligned_Address_Value 23
+#define PE_Missing_Return 24
+#define PE_Overlaid_Controlled_Object 25
+#define PE_Potentially_Blocking_Operation 26
+#define PE_Stubbed_Subprogram_Called 27
+#define PE_Unchecked_Union_Restriction 28
+#define PE_Non_Transportable_Actual 29
+
+#define SE_Empty_Storage_Pool 30
+#define SE_Explicit_Raise 31
+#define SE_Infinite_Recursion 32
+#define SE_Object_Too_Large 33
+
+#define LAST_REASON_CODE 33
diff --git a/gcc/ada/xoscons.adb b/gcc/ada/xoscons.adb
index efce54a1f11..4f5e4a291c7 100644
--- a/gcc/ada/xoscons.adb
+++ b/gcc/ada/xoscons.adb
@@ -23,14 +23,14 @@
-- --
------------------------------------------------------------------------------
--- This program generates the spec of System.OS_Constants (s-oscons.ads).
+-- This program generates the spec of System.OS_Constants (s-oscons.ads)
-- It works in conjunction with a C template file which must be pre-processed
-- and compiled using the cross compiler. Two input files are used:
-- - the preprocessed C file: s-oscons-tmplt.i
-- - the generated assembly file: s-oscons-tmplt.s
--- The contents of s-oscons.ads is written on standard output.
+-- The contents of s-oscons.ads is written on standard output
with Ada.Characters.Handling; use Ada.Characters.Handling;
with Ada.Exceptions; use Ada.Exceptions;
diff --git a/gcc/bt-load.c b/gcc/bt-load.c
index accba8d0d22..be36f2c6e4a 100644
--- a/gcc/bt-load.c
+++ b/gcc/bt-load.c
@@ -1,5 +1,5 @@
/* Perform branch target register load optimizations.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -1513,7 +1513,7 @@ struct rtl_opt_pass pass_branch_target_load_optimize1 =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1563,7 +1563,7 @@ struct rtl_opt_pass pass_branch_target_load_optimize2 =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1572,4 +1572,3 @@ struct rtl_opt_pass pass_branch_target_load_optimize2 =
TODO_ggc_collect, /* todo_flags_finish */
}
};
-
diff --git a/gcc/builtins.def b/gcc/builtins.def
index 7a98c76394c..3f4e251c3fd 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -700,9 +700,9 @@ DEF_LIB_BUILTIN (BUILT_IN_STRFTIME, "strftime", BT_FN_SIZE_STRING_SIZE_CO
DEF_GCC_BUILTIN (BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LIST)
DEF_GCC_BUILTIN (BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
DEF_GCC_BUILTIN (BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR_INT, ATTR_NULL)
-DEF_GCC_BUILTIN (BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NULL)
-DEF_GCC_BUILTIN (BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NULL)
-DEF_GCC_BUILTIN (BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NULL)
+DEF_GCC_BUILTIN (BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NOTHROW_LIST)
+DEF_GCC_BUILTIN (BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NOTHROW_LIST)
+DEF_GCC_BUILTIN (BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NOTHROW_LIST)
DEF_GCC_BUILTIN (BUILT_IN_VA_ARG_PACK, "va_arg_pack", BT_FN_INT, ATTR_PURE_NOTHROW_LIST)
DEF_GCC_BUILTIN (BUILT_IN_VA_ARG_PACK_LEN, "va_arg_pack_len", BT_FN_INT, ATTR_PURE_NOTHROW_LIST)
DEF_EXT_LIB_BUILTIN (BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 3d114550fa2..735c8e0b5c4 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -1712,38 +1712,43 @@ overflow_warning (tree value)
}
}
-
-/* Warn about use of a logical || / && operator being used in a
- context where it is likely that the bitwise equivalent was intended
- by the programmer. CODE is the TREE_CODE of the operator, ARG1
- and ARG2 the arguments. */
+/* Warn about uses of logical || / && operator in a context where it
+ is likely that the bitwise equivalent was intended by the
+ programmer. We have seen an expression in which CODE is a binary
+ operator used to combine expressions OP_LEFT and OP_RIGHT, which
+ before folding had CODE_LEFT and CODE_RIGHT. */
void
-warn_logical_operator (enum tree_code code, tree arg1, tree
- arg2)
-{
- switch (code)
- {
- case TRUTH_ANDIF_EXPR:
- case TRUTH_ORIF_EXPR:
- case TRUTH_OR_EXPR:
- case TRUTH_AND_EXPR:
- if (!TREE_NO_WARNING (arg1)
- && INTEGRAL_TYPE_P (TREE_TYPE (arg1))
- && !CONSTANT_CLASS_P (arg1)
- && TREE_CODE (arg2) == INTEGER_CST
- && !integer_zerop (arg2))
- {
- warning (OPT_Wlogical_op,
- "logical %<%s%> with non-zero constant "
- "will always evaluate as true",
- ((code == TRUTH_ANDIF_EXPR)
- || (code == TRUTH_AND_EXPR)) ? "&&" : "||");
- TREE_NO_WARNING (arg1) = true;
- }
- break;
- default:
- break;
+warn_logical_operator (location_t location, enum tree_code code,
+ enum tree_code code_left, tree op_left,
+ enum tree_code ARG_UNUSED (code_right), tree op_right)
+{
+ if (code != TRUTH_ANDIF_EXPR
+ && code != TRUTH_AND_EXPR
+ && code != TRUTH_ORIF_EXPR
+ && code != TRUTH_OR_EXPR)
+ return;
+
+ /* Warn if &&/|| are being used in a context where it is
+ likely that the bitwise equivalent was intended by the
+ programmer. That is, an expression such as op && MASK
+ where op should not be any boolean expression, nor a
+ constant, and mask seems to be a non-boolean integer constant. */
+ if (!truth_value_p (code_left)
+ && INTEGRAL_TYPE_P (TREE_TYPE (op_left))
+ && !CONSTANT_CLASS_P (op_left)
+ && !TREE_NO_WARNING (op_left)
+ && TREE_CODE (op_right) == INTEGER_CST
+ && !integer_zerop (op_right)
+ && !integer_onep (op_right))
+ {
+ if (code == TRUTH_ORIF_EXPR || code == TRUTH_OR_EXPR)
+ warning_at (location, OPT_Wlogical_op, "logical %<or%>"
+ " applied to non-boolean constant");
+ else
+ warning_at (location, OPT_Wlogical_op, "logical %<and%>"
+ " applied to non-boolean constant");
+ TREE_NO_WARNING (op_left) = true;
}
}
@@ -1882,7 +1887,7 @@ bool
vector_targets_convertible_p (const_tree t1, const_tree t2)
{
if (TREE_CODE (t1) == VECTOR_TYPE && TREE_CODE (t2) == VECTOR_TYPE
- && (targetm.vector_opaque_p (t1) || targetm.vector_opaque_p (t2))
+ && (TYPE_VECTOR_OPAQUE (t1) || TYPE_VECTOR_OPAQUE (t2))
&& tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2)))
return true;
@@ -1900,7 +1905,7 @@ vector_types_convertible_p (const_tree t1, const_tree t2, bool emit_lax_note)
static bool emitted_lax_note = false;
bool convertible_lax;
- if ((targetm.vector_opaque_p (t1) || targetm.vector_opaque_p (t2))
+ if ((TYPE_VECTOR_OPAQUE (t1) || TYPE_VECTOR_OPAQUE (t2))
&& tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2)))
return true;
diff --git a/gcc/c-common.h b/gcc/c-common.h
index 061cbe3ad0c..723f8b5ef18 100644
--- a/gcc/c-common.h
+++ b/gcc/c-common.h
@@ -801,7 +801,8 @@ extern bool strict_aliasing_warning (tree, tree, tree);
extern void warnings_for_convert_and_check (tree, tree, tree);
extern tree convert_and_check (tree, tree);
extern void overflow_warning (tree);
-extern void warn_logical_operator (enum tree_code, tree, tree);
+extern void warn_logical_operator (location_t, enum tree_code,
+ enum tree_code, tree, enum tree_code, tree);
extern void check_main_parameter_types (tree decl);
extern bool c_determine_visibility (tree);
extern bool same_scalar_type_ignoring_signedness (tree, tree);
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 62262034d8c..796f1eaadf3 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -2883,6 +2883,12 @@ shadow_tag_warned (const struct c_declspecs *declspecs, int warned)
found_tag = true;
+ if (declspecs->restrict_p)
+ {
+ error ("invalid use of %<restrict%>");
+ warned = 1;
+ }
+
if (name == 0)
{
if (warned != 1 && code != ENUMERAL_TYPE)
diff --git a/gcc/c-opts.c b/gcc/c-opts.c
index 54edf302ab0..ece4d7f8a4a 100644
--- a/gcc/c-opts.c
+++ b/gcc/c-opts.c
@@ -412,6 +412,12 @@ c_common_handle_option (size_t scode, const char *arg, int value)
can turn it off only if it's not explicit. */
if (warn_main == -1)
warn_main = (value ? 2 : 0);
+
+ /* In C, -Wall turns on -Wenum-compare, which we do here.
+ In C++ it is on by default, which is done in
+ c_common_post_options. */
+ if (warn_enum_compare == -1)
+ warn_enum_compare = value;
}
else
{
@@ -438,6 +444,13 @@ c_common_handle_option (size_t scode, const char *arg, int value)
cpp_opts->warn_comments = value;
break;
+ case OPT_Wc___compat:
+ /* Because -Wenum-compare is the default in C++, -Wc++-compat
+ implies -Wenum-compare. */
+ if (warn_enum_compare == -1 && value)
+ warn_enum_compare = value;
+ break;
+
case OPT_Wdeprecated:
cpp_opts->warn_deprecated = value;
break;
@@ -1067,6 +1080,8 @@ c_common_post_options (const char **pfilename)
warn_override_init = extra_warnings;
if (warn_ignored_qualifiers == -1)
warn_ignored_qualifiers = extra_warnings;
+ if (warn_logical_op == -1)
+ warn_logical_op = extra_warnings;
/* -Wpointer-sign is disabled by default, but it is enabled if any
of -Wall or -pedantic are given. */
@@ -1099,6 +1114,12 @@ c_common_post_options (const char **pfilename)
if (warn_sign_conversion == -1)
warn_sign_conversion = (c_dialect_cxx ()) ? 0 : warn_conversion;
+ /* In C, -Wall and -Wc++-compat enable -Wenum-compare, which we do
+ in c_common_handle_option; if it has not yet been set, it is
+ disabled by default. In C++, it is enabled by default. */
+ if (warn_enum_compare == -1)
+ warn_enum_compare = c_dialect_cxx () ? 1 : 0;
+
/* -Wpacked-bitfield-compat is on by default for the C languages. The
warning is issued in stor-layout.c which is not part of the front-end so
we need to selectively turn it on here. */
diff --git a/gcc/c-parser.c b/gcc/c-parser.c
index 7887391dfcc..9b3ace515a9 100644
--- a/gcc/c-parser.c
+++ b/gcc/c-parser.c
@@ -3044,6 +3044,7 @@ c_parser_braced_init (c_parser *parser, tree type, bool nested_p)
struct c_expr ret;
ret.value = error_mark_node;
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, "expected %<}%>");
pop_init_level (0);
return ret;
@@ -3100,6 +3101,7 @@ c_parser_initelt (c_parser *parser)
struct c_expr init;
init.value = error_mark_node;
init.original_code = ERROR_MARK;
+ init.original_type = NULL;
c_parser_error (parser, "expected identifier");
c_parser_skip_until_found (parser, CPP_COMMA, NULL);
process_init_element (init, false);
@@ -3174,6 +3176,7 @@ c_parser_initelt (c_parser *parser)
mexpr.value
= objc_build_message_expr (build_tree_list (rec, args));
mexpr.original_code = ERROR_MARK;
+ mexpr.original_type = NULL;
/* Now parse and process the remainder of the
initializer, starting with this message
expression as a primary-expression. */
@@ -3223,6 +3226,7 @@ c_parser_initelt (c_parser *parser)
struct c_expr init;
init.value = error_mark_node;
init.original_code = ERROR_MARK;
+ init.original_type = NULL;
c_parser_error (parser, "expected %<=%>");
c_parser_skip_until_found (parser, CPP_COMMA, NULL);
process_init_element (init, false);
@@ -4438,6 +4442,7 @@ c_parser_expr_no_commas (c_parser *parser, struct c_expr *after)
TREE_NO_WARNING (ret.value) = 1;
ret.original_code = ERROR_MARK;
}
+ ret.original_type = NULL;
return ret;
}
@@ -4485,6 +4490,7 @@ c_parser_conditional_expression (c_parser *parser, struct c_expr *after)
exp1.value = c_save_expr (default_conversion (cond.value));
if (eptype)
exp1.value = build1 (EXCESS_PRECISION_EXPR, eptype, exp1.value);
+ exp1.original_type = NULL;
cond.value = c_objc_common_truthvalue_conversion (cond_loc, exp1.value);
skip_evaluation += cond.value == truthvalue_true_node;
}
@@ -4503,6 +4509,7 @@ c_parser_conditional_expression (c_parser *parser, struct c_expr *after)
skip_evaluation -= cond.value == truthvalue_true_node;
ret.value = error_mark_node;
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
return ret;
}
exp2 = c_parser_conditional_expression (parser, NULL);
@@ -4512,6 +4519,24 @@ c_parser_conditional_expression (c_parser *parser, struct c_expr *after)
cond.original_code == C_MAYBE_CONST_EXPR,
exp1.value, exp2.value);
ret.original_code = ERROR_MARK;
+ if (exp1.value == error_mark_node || exp2.value == error_mark_node)
+ ret.original_type = NULL;
+ else
+ {
+ tree t1, t2;
+
+ /* If both sides are enum type, the default conversion will have
+ made the type of the result be an integer type. We want to
+ remember the enum types we started with. */
+ t1 = exp1.original_type ? exp1.original_type : TREE_TYPE (exp1.value);
+ t2 = exp2.original_type ? exp2.original_type : TREE_TYPE (exp2.value);
+ ret.original_type = ((t1 != error_mark_node
+ && t2 != error_mark_node
+ && (TYPE_MAIN_VARIANT (t1)
+ == TYPE_MAIN_VARIANT (t2)))
+ ? t1
+ : NULL);
+ }
return ret;
}
@@ -4800,6 +4825,7 @@ c_parser_cast_expression (c_parser *parser, struct c_expr *after)
{
ret.value = error_mark_node;
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
return ret;
}
@@ -4813,6 +4839,7 @@ c_parser_cast_expression (c_parser *parser, struct c_expr *after)
expr = default_function_array_conversion (expr);
ret.value = c_cast_expr (type_name, expr.value);
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
return ret;
}
else
@@ -4852,6 +4879,8 @@ c_parser_unary_expression (c_parser *parser)
int ext;
struct c_expr ret, op;
location_t loc = c_parser_peek_token (parser)->location;
+ ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
switch (c_parser_peek_token (parser)->type)
{
case CPP_PLUS_PLUS:
@@ -4874,7 +4903,6 @@ c_parser_unary_expression (c_parser *parser)
op = c_parser_cast_expression (parser, NULL);
op = default_function_array_conversion (op);
ret.value = build_indirect_ref (loc, op.value, "unary *");
- ret.original_code = ERROR_MARK;
return ret;
case CPP_PLUS:
if (!c_dialect_objc () && !in_system_header)
@@ -4914,7 +4942,6 @@ c_parser_unary_expression (c_parser *parser)
c_parser_error (parser, "expected identifier");
ret.value = error_mark_node;
}
- ret.original_code = ERROR_MARK;
return ret;
case CPP_KEYWORD:
switch (c_parser_peek_token (parser)->keyword)
@@ -4975,6 +5002,7 @@ c_parser_sizeof_expression (c_parser *parser)
in_sizeof--;
ret.value = error_mark_node;
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
return ret;
}
if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
@@ -5029,6 +5057,7 @@ c_parser_alignof_expression (c_parser *parser)
in_alignof--;
ret.value = error_mark_node;
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
return ret;
}
if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
@@ -5042,6 +5071,7 @@ c_parser_alignof_expression (c_parser *parser)
in_alignof--;
ret.value = c_alignof (groktypename (type_name, NULL, NULL));
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
return ret;
}
else
@@ -5053,6 +5083,7 @@ c_parser_alignof_expression (c_parser *parser)
in_alignof--;
ret.value = c_alignof_expr (expr.value);
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
return ret;
}
}
@@ -5116,11 +5147,12 @@ c_parser_postfix_expression (c_parser *parser)
struct c_expr expr, e1, e2, e3;
struct c_type_name *t1, *t2;
location_t loc;
+ expr.original_code = ERROR_MARK;
+ expr.original_type = NULL;
switch (c_parser_peek_token (parser)->type)
{
case CPP_NUMBER:
expr.value = c_parser_peek_token (parser)->value;
- expr.original_code = ERROR_MARK;
loc = c_parser_peek_token (parser)->location;
c_parser_consume_token (parser);
if (TREE_CODE (expr.value) == FIXED_CST
@@ -5135,7 +5167,6 @@ c_parser_postfix_expression (c_parser *parser)
case CPP_CHAR32:
case CPP_WCHAR:
expr.value = c_parser_peek_token (parser)->value;
- expr.original_code = ERROR_MARK;
c_parser_consume_token (parser);
break;
case CPP_STRING:
@@ -5150,7 +5181,6 @@ c_parser_postfix_expression (c_parser *parser)
gcc_assert (c_dialect_objc ());
expr.value
= objc_build_string_object (c_parser_peek_token (parser)->value);
- expr.original_code = ERROR_MARK;
c_parser_consume_token (parser);
break;
case CPP_NAME:
@@ -5158,7 +5188,6 @@ c_parser_postfix_expression (c_parser *parser)
{
c_parser_error (parser, "expected expression");
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
{
@@ -5167,8 +5196,8 @@ c_parser_postfix_expression (c_parser *parser)
c_parser_consume_token (parser);
expr.value = build_external_ref (id,
(c_parser_peek_token (parser)->type
- == CPP_OPEN_PAREN), loc);
- expr.original_code = ERROR_MARK;
+ == CPP_OPEN_PAREN), loc,
+ &expr.original_type);
}
break;
case CPP_OPEN_PAREN:
@@ -5189,7 +5218,6 @@ c_parser_postfix_expression (c_parser *parser)
c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, NULL);
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
stmt = c_begin_stmt_expr ();
@@ -5199,7 +5227,6 @@ c_parser_postfix_expression (c_parser *parser)
pedwarn (here, OPT_pedantic,
"ISO C forbids braced-groups within expressions");
expr.value = c_finish_stmt_expr (stmt);
- expr.original_code = ERROR_MARK;
}
else if (c_token_starts_typename (c_parser_peek_2nd_token (parser)))
{
@@ -5215,7 +5242,6 @@ c_parser_postfix_expression (c_parser *parser)
if (type_name == NULL)
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
}
else
expr = c_parser_postfix_expression_after_paren_type (parser,
@@ -5230,6 +5256,7 @@ c_parser_postfix_expression (c_parser *parser)
TREE_NO_WARNING (expr.value) = 1;
if (expr.original_code != C_MAYBE_CONST_EXPR)
expr.original_code = ERROR_MARK;
+ /* Don't change EXPR.ORIGINAL_TYPE. */
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
"expected %<)%>");
}
@@ -5243,7 +5270,6 @@ c_parser_postfix_expression (c_parser *parser)
expr.value = fname_decl (c_parser_peek_token (parser)->location,
c_parser_peek_token (parser)->keyword,
c_parser_peek_token (parser)->value);
- expr.original_code = ERROR_MARK;
c_parser_consume_token (parser);
break;
case RID_VA_ARG:
@@ -5251,7 +5277,6 @@ c_parser_postfix_expression (c_parser *parser)
if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
e1 = c_parser_expr_no_commas (parser, NULL);
@@ -5260,7 +5285,6 @@ c_parser_postfix_expression (c_parser *parser)
{
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
t1 = c_parser_type_name (parser);
@@ -5269,7 +5293,6 @@ c_parser_postfix_expression (c_parser *parser)
if (t1 == NULL)
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
}
else
{
@@ -5284,7 +5307,6 @@ c_parser_postfix_expression (c_parser *parser)
expr.value);
C_MAYBE_CONST_EXPR_NON_CONST (expr.value) = true;
}
- expr.original_code = ERROR_MARK;
}
break;
case RID_OFFSETOF:
@@ -5292,21 +5314,18 @@ c_parser_postfix_expression (c_parser *parser)
if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
t1 = c_parser_type_name (parser);
if (t1 == NULL)
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>"))
{
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
{
@@ -5371,7 +5390,6 @@ c_parser_postfix_expression (c_parser *parser)
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
"expected %<)%>");
expr.value = fold_offsetof (offsetof_ref, NULL_TREE);
- expr.original_code = ERROR_MARK;
}
break;
case RID_CHOOSE_EXPR:
@@ -5379,7 +5397,6 @@ c_parser_postfix_expression (c_parser *parser)
if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
loc = c_parser_peek_token (parser)->location;
@@ -5388,7 +5405,6 @@ c_parser_postfix_expression (c_parser *parser)
{
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
e2 = c_parser_expr_no_commas (parser, NULL);
@@ -5396,7 +5412,6 @@ c_parser_postfix_expression (c_parser *parser)
{
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
e3 = c_parser_expr_no_commas (parser, NULL);
@@ -5420,28 +5435,24 @@ c_parser_postfix_expression (c_parser *parser)
if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
t1 = c_parser_type_name (parser);
if (t1 == NULL)
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>"))
{
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
t2 = c_parser_type_name (parser);
if (t2 == NULL)
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
@@ -5455,7 +5466,6 @@ c_parser_postfix_expression (c_parser *parser)
expr.value = comptypes (e1, e2)
? build_int_cst (NULL_TREE, 1)
: build_int_cst (NULL_TREE, 0);
- expr.original_code = ERROR_MARK;
}
break;
case RID_AT_SELECTOR:
@@ -5464,7 +5474,6 @@ c_parser_postfix_expression (c_parser *parser)
if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
{
@@ -5472,7 +5481,6 @@ c_parser_postfix_expression (c_parser *parser)
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
"expected %<)%>");
expr.value = objc_build_selector_expr (sel);
- expr.original_code = ERROR_MARK;
}
break;
case RID_AT_PROTOCOL:
@@ -5481,7 +5489,6 @@ c_parser_postfix_expression (c_parser *parser)
if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
if (c_parser_next_token_is_not (parser, CPP_NAME))
@@ -5489,7 +5496,6 @@ c_parser_postfix_expression (c_parser *parser)
c_parser_error (parser, "expected identifier");
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
{
@@ -5498,7 +5504,6 @@ c_parser_postfix_expression (c_parser *parser)
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
"expected %<)%>");
expr.value = objc_build_protocol_expr (id);
- expr.original_code = ERROR_MARK;
}
break;
case RID_AT_ENCODE:
@@ -5508,14 +5513,12 @@ c_parser_postfix_expression (c_parser *parser)
if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
t1 = c_parser_type_name (parser);
if (t1 == NULL)
{
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
break;
}
@@ -5524,13 +5527,11 @@ c_parser_postfix_expression (c_parser *parser)
{
tree type = groktypename (t1, NULL, NULL);
expr.value = objc_build_encode_expr (type);
- expr.original_code = ERROR_MARK;
}
break;
default:
c_parser_error (parser, "expected expression");
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
break;
@@ -5545,14 +5546,12 @@ c_parser_postfix_expression (c_parser *parser)
"expected %<]%>");
expr.value = objc_build_message_expr (build_tree_list (receiver,
args));
- expr.original_code = ERROR_MARK;
break;
}
/* Else fall through to report error. */
default:
c_parser_error (parser, "expected expression");
expr.value = error_mark_node;
- expr.original_code = ERROR_MARK;
break;
}
return c_parser_postfix_expression_after_primary (parser, expr);
@@ -5597,6 +5596,7 @@ c_parser_postfix_expression_after_paren_type (c_parser *parser,
non_const |= !type_expr_const;
expr.value = build_compound_literal (type, init.value, non_const);
expr.original_code = ERROR_MARK;
+ expr.original_type = NULL;
if (type_expr)
{
if (TREE_CODE (expr.value) == C_MAYBE_CONST_EXPR)
@@ -5637,6 +5637,7 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
"expected %<]%>");
expr.value = build_array_ref (expr.value, idx, loc);
expr.original_code = ERROR_MARK;
+ expr.original_type = NULL;
break;
case CPP_OPEN_PAREN:
/* Function call. */
@@ -5655,6 +5656,7 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
&& DECL_BUILT_IN_CLASS (orig_expr.value) == BUILT_IN_NORMAL
&& DECL_FUNCTION_CODE (orig_expr.value) == BUILT_IN_CONSTANT_P)
expr.original_code = C_MAYBE_CONST_EXPR;
+ expr.original_type = NULL;
break;
case CPP_DOT:
/* Structure element reference. */
@@ -5667,11 +5669,23 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
c_parser_error (parser, "expected identifier");
expr.value = error_mark_node;
expr.original_code = ERROR_MARK;
+ expr.original_type = NULL;
return expr;
}
c_parser_consume_token (parser);
expr.value = build_component_ref (expr.value, ident);
expr.original_code = ERROR_MARK;
+ if (TREE_CODE (expr.value) != COMPONENT_REF)
+ expr.original_type = NULL;
+ else
+ {
+ /* Remember the original type of a bitfield. */
+ tree field = TREE_OPERAND (expr.value, 1);
+ if (TREE_CODE (field) != FIELD_DECL)
+ expr.original_type = NULL;
+ else
+ expr.original_type = DECL_BIT_FIELD_TYPE (field);
+ }
break;
case CPP_DEREF:
/* Structure element reference. */
@@ -5684,6 +5698,7 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
c_parser_error (parser, "expected identifier");
expr.value = error_mark_node;
expr.original_code = ERROR_MARK;
+ expr.original_type = NULL;
return expr;
}
c_parser_consume_token (parser);
@@ -5692,6 +5707,17 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
"->"),
ident);
expr.original_code = ERROR_MARK;
+ if (TREE_CODE (expr.value) != COMPONENT_REF)
+ expr.original_type = NULL;
+ else
+ {
+ /* Remember the original type of a bitfield. */
+ tree field = TREE_OPERAND (expr.value, 1);
+ if (TREE_CODE (field) != FIELD_DECL)
+ expr.original_type = NULL;
+ else
+ expr.original_type = DECL_BIT_FIELD_TYPE (field);
+ }
break;
case CPP_PLUS_PLUS:
/* Postincrement. */
@@ -5700,6 +5726,7 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
expr.value = build_unary_op (loc,
POSTINCREMENT_EXPR, expr.value, 0);
expr.original_code = ERROR_MARK;
+ expr.original_type = NULL;
break;
case CPP_MINUS_MINUS:
/* Postdecrement. */
@@ -5708,6 +5735,7 @@ c_parser_postfix_expression_after_primary (c_parser *parser,
expr.value = build_unary_op (loc,
POSTDECREMENT_EXPR, expr.value, 0);
expr.original_code = ERROR_MARK;
+ expr.original_type = NULL;
break;
default:
return expr;
@@ -5735,6 +5763,7 @@ c_parser_expression (c_parser *parser)
next = default_function_array_conversion (next);
expr.value = build_compound_expr (expr.value, next.value);
expr.original_code = COMPOUND_EXPR;
+ expr.original_type = NULL;
}
return expr;
}
diff --git a/gcc/c-semantics.c b/gcc/c-semantics.c
index 3c7b241b999..b6c3a27c5ab 100644
--- a/gcc/c-semantics.c
+++ b/gcc/c-semantics.c
@@ -70,6 +70,8 @@ pop_stmt_list (tree t)
{
chain = TREE_CHAIN (u);
TREE_CHAIN (u) = NULL_TREE;
+ if (chain)
+ STATEMENT_LIST_HAS_LABEL (chain) |= STATEMENT_LIST_HAS_LABEL (u);
if (t == u)
break;
u = chain;
diff --git a/gcc/c-tree.h b/gcc/c-tree.h
index ac9586b8243..6b9fcc798ca 100644
--- a/gcc/c-tree.h
+++ b/gcc/c-tree.h
@@ -163,6 +163,11 @@ struct c_expr
initializers, or ERROR_MARK for other expressions (including
parenthesized expressions). */
enum tree_code original_code;
+ /* If not NULL, the original type of an expression. This will
+ differ from the type of the value field for an enum constant.
+ The type of an enum constant is a plain integer type, but this
+ field will be the enum type. */
+ tree original_type;
};
/* A kind of type specifier. Note that this information is currently
@@ -577,7 +582,7 @@ extern struct c_expr default_function_array_conversion (struct c_expr);
extern tree composite_type (tree, tree);
extern tree build_component_ref (tree, tree);
extern tree build_array_ref (tree, tree, location_t);
-extern tree build_external_ref (tree, int, location_t);
+extern tree build_external_ref (tree, int, location_t, tree *);
extern void pop_maybe_used (bool);
extern struct c_expr c_expr_sizeof_expr (struct c_expr);
extern struct c_expr c_expr_sizeof_type (struct c_type_name *);
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 9c74bf39944..96b1a5da599 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -107,6 +107,7 @@ static void set_nonincremental_init (void);
static void set_nonincremental_init_from_string (tree);
static tree find_init_member (tree);
static void readonly_error (tree, enum lvalue_use);
+static void readonly_warning (tree, enum lvalue_use);
static int lvalue_or_else (const_tree, enum lvalue_use);
static int lvalue_p (const_tree);
static void record_maybe_used_decl (tree);
@@ -2202,9 +2203,12 @@ build_array_ref (tree array, tree index, location_t loc)
/* Build an external reference to identifier ID. FUN indicates
whether this will be used for a function call. LOC is the source
- location of the identifier. */
+ location of the identifier. This sets *TYPE to the type of the
+ identifier, which is not the same as the type of the returned value
+ for CONST_DECLs defined as enum constants. If the type of the
+ identifier is not available, *TYPE is set to NULL. */
tree
-build_external_ref (tree id, int fun, location_t loc)
+build_external_ref (tree id, int fun, location_t loc, tree *type)
{
tree ref;
tree decl = lookup_name (id);
@@ -2213,8 +2217,12 @@ build_external_ref (tree id, int fun, location_t loc)
whatever lookup_name() found. */
decl = objc_lookup_ivar (decl, id);
+ *type = NULL;
if (decl && decl != error_mark_node)
- ref = decl;
+ {
+ ref = decl;
+ *type = TREE_TYPE (ref);
+ }
else if (fun)
/* Implicit function declaration. */
ref = implicitly_declare (id);
@@ -2346,6 +2354,7 @@ c_expr_sizeof_expr (struct c_expr expr)
{
ret.value = error_mark_node;
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
pop_maybe_used (false);
}
else
@@ -2355,6 +2364,7 @@ c_expr_sizeof_expr (struct c_expr expr)
&expr_const_operands);
ret.value = c_sizeof (TREE_TYPE (folded_expr));
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
if (c_vla_type_p (TREE_TYPE (folded_expr)))
{
/* sizeof is evaluated when given a vla (C99 6.5.3.4p2). */
@@ -2380,6 +2390,7 @@ c_expr_sizeof_type (struct c_type_name *t)
type = groktypename (t, &type_expr, &type_expr_const);
ret.value = c_sizeof (type);
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
if (type_expr && c_vla_type_p (type))
{
ret.value = build2 (C_MAYBE_CONST_EXPR, TREE_TYPE (ret.value),
@@ -2488,7 +2499,12 @@ build_function_call (tree function, tree params)
trap = build2 (COMPOUND_EXPR, void_type_node, argarray[i], trap);
if (VOID_TYPE_P (return_type))
- return trap;
+ {
+ if (TYPE_QUALS (return_type) != TYPE_UNQUALIFIED)
+ pedwarn (input_location, 0,
+ "function with qualified void return type called");
+ return trap;
+ }
else
{
tree rhs;
@@ -2500,7 +2516,8 @@ build_function_call (tree function, tree params)
else
rhs = fold_convert (return_type, integer_zero_node);
- return build2 (COMPOUND_EXPR, return_type, trap, rhs);
+ return require_complete_type (build2 (COMPOUND_EXPR, return_type,
+ trap, rhs));
}
}
@@ -2533,7 +2550,12 @@ build_function_call (tree function, tree params)
function, nargs, argarray);
if (VOID_TYPE_P (TREE_TYPE (result)))
- return result;
+ {
+ if (TYPE_QUALS (TREE_TYPE (result)) != TYPE_UNQUALIFIED)
+ pedwarn (input_location, 0,
+ "function with qualified void return type called");
+ return result;
+ }
return require_complete_type (result);
}
@@ -2856,7 +2878,8 @@ parser_build_unary_op (enum tree_code code, struct c_expr arg, location_t loc)
result.value = build_unary_op (loc, code, arg.value, 0);
result.original_code = code;
-
+ result.original_type = NULL;
+
if (TREE_OVERFLOW_P (result.value) && !TREE_OVERFLOW_P (arg.value))
overflow_warning (result.value);
@@ -2879,10 +2902,17 @@ parser_build_binary_op (location_t location, enum tree_code code,
enum tree_code code1 = arg1.original_code;
enum tree_code code2 = arg2.original_code;
+ tree type1 = (arg1.original_type
+ ? arg1.original_type
+ : TREE_TYPE (arg1.value));
+ tree type2 = (arg2.original_type
+ ? arg2.original_type
+ : TREE_TYPE (arg2.value));
result.value = build_binary_op (location, code,
arg1.value, arg2.value, 1);
result.original_code = code;
+ result.original_type = NULL;
if (TREE_CODE (result.value) == ERROR_MARK)
return result;
@@ -2895,8 +2925,9 @@ parser_build_binary_op (location_t location, enum tree_code code,
if (warn_parentheses)
warn_about_parentheses (code, code1, arg1.value, code2, arg2.value);
- if (TREE_CODE_CLASS (code1) != tcc_comparison)
- warn_logical_operator (code, arg1.value, arg2.value);
+ if (warn_logical_op)
+ warn_logical_operator (input_location, code,
+ code1, arg1.value, code2, arg2.value);
/* Warn about comparisons against string literals, with the exception
of testing for equality or inequality of a string literal with NULL. */
@@ -2915,6 +2946,16 @@ parser_build_binary_op (location_t location, enum tree_code code,
&& !TREE_OVERFLOW_P (arg2.value))
overflow_warning (result.value);
+ /* Warn about comparisons of different enum types. */
+ if (warn_enum_compare
+ && TREE_CODE_CLASS (code) == tcc_comparison
+ && TREE_CODE (type1) == ENUMERAL_TYPE
+ && TREE_CODE (type2) == ENUMERAL_TYPE
+ && TYPE_MAIN_VARIANT (type1) != TYPE_MAIN_VARIANT (type2))
+ warning_at (location, OPT_Wenum_compare,
+ "comparison between %qT and %qT",
+ type1, type2);
+
return result;
}
@@ -3284,7 +3325,7 @@ build_unary_op (location_t location,
}
/* Report a read-only lvalue. */
- if (TREE_READONLY (arg))
+ if (TYPE_READONLY (argtype))
{
readonly_error (arg,
((code == PREINCREMENT_EXPR
@@ -3292,6 +3333,11 @@ build_unary_op (location_t location,
? lv_increment : lv_decrement));
return error_mark_node;
}
+ else if (TREE_READONLY (arg))
+ readonly_warning (arg,
+ ((code == PREINCREMENT_EXPR
+ || code == POSTINCREMENT_EXPR)
+ ? lv_increment : lv_decrement));
if (TREE_CODE (TREE_TYPE (arg)) == BOOLEAN_TYPE)
val = boolean_increment (code, arg);
@@ -3307,6 +3353,15 @@ build_unary_op (location_t location,
case ADDR_EXPR:
/* Note that this operation never does default_conversion. */
+ /* The operand of unary '&' must be an lvalue (which excludes
+ expressions of type void), or, in C99, the result of a [] or
+ unary '*' operator. */
+ if (VOID_TYPE_P (TREE_TYPE (arg))
+ && TYPE_QUALS (TREE_TYPE (arg)) == TYPE_UNQUALIFIED
+ && (TREE_CODE (arg) != INDIRECT_REF
+ || !flag_isoc99))
+ pedwarn (location, 0, "taking address of expression of type %<void%>");
+
/* Let &* cancel out to simplify resulting code. */
if (TREE_CODE (arg) == INDIRECT_REF)
{
@@ -3492,6 +3547,29 @@ readonly_error (tree arg, enum lvalue_use use)
arg);
}
+/* Give a warning for storing in something that is read-only in GCC
+ terms but not const in ISO C terms. */
+
+static void
+readonly_warning (tree arg, enum lvalue_use use)
+{
+ switch (use)
+ {
+ case lv_assign:
+ warning (0, "assignment of read-only location %qE", arg);
+ break;
+ case lv_increment:
+ warning (0, "increment of read-only location %qE", arg);
+ break;
+ case lv_decrement:
+ warning (0, "decrement of read-only location %qE", arg);
+ break;
+ default:
+ gcc_unreachable ();
+ }
+ return;
+}
+
/* Return nonzero if REF is an lvalue valid for this language;
otherwise, print an error message and return zero. USE says
@@ -4244,7 +4322,7 @@ build_modify_expr (location_t location,
/* Give an error for storing in something that is 'const'. */
- if (TREE_READONLY (lhs) || TYPE_READONLY (lhstype)
+ if (TYPE_READONLY (lhstype)
|| ((TREE_CODE (lhstype) == RECORD_TYPE
|| TREE_CODE (lhstype) == UNION_TYPE)
&& C_TYPE_FIELDS_READONLY (lhstype)))
@@ -4252,6 +4330,8 @@ build_modify_expr (location_t location,
readonly_error (lhs, lv_assign);
return error_mark_node;
}
+ else if (TREE_READONLY (lhs))
+ readonly_warning (lhs, lv_assign);
/* If storing into a structure or union member,
it has probably been given type `int'.
@@ -5171,8 +5251,13 @@ digest_init (tree type, tree init, bool null_pointer_constant,
tree typ2 = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (inside_init)));
expr.value = inside_init;
expr.original_code = (strict_string ? STRING_CST : ERROR_MARK);
+ expr.original_type = NULL;
maybe_warn_string_init (type, expr);
+ if (TYPE_DOMAIN (type) && !TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
+ pedwarn_init (input_location, OPT_pedantic,
+ "initialization of a flexible array member");
+
if (comptypes (TYPE_MAIN_VARIANT (TREE_TYPE (inside_init)),
TYPE_MAIN_VARIANT (type)))
return inside_init;
@@ -5671,7 +5756,8 @@ really_start_incremental_init (tree type)
if (type == 0)
type = TREE_TYPE (constructor_decl);
- if (targetm.vector_opaque_p (type))
+ if (TREE_CODE (type) == VECTOR_TYPE
+ && TYPE_VECTOR_OPAQUE (type))
error ("opaque vector types cannot be initialized");
p->type = constructor_type;
@@ -5690,6 +5776,7 @@ really_start_incremental_init (tree type)
p->depth = constructor_depth;
p->replacement_value.value = 0;
p->replacement_value.original_code = ERROR_MARK;
+ p->replacement_value.original_type = NULL;
p->implicit = 0;
p->range_stack = 0;
p->outer = 0;
@@ -5833,6 +5920,7 @@ push_init_level (int implicit)
p->depth = constructor_depth;
p->replacement_value.value = 0;
p->replacement_value.original_code = ERROR_MARK;
+ p->replacement_value.original_type = NULL;
p->implicit = implicit;
p->outer = 0;
p->incremental = constructor_incremental;
@@ -5989,6 +6077,7 @@ pop_init_level (int implicit)
struct c_expr ret;
ret.value = 0;
ret.original_code = ERROR_MARK;
+ ret.original_type = NULL;
if (implicit == 0)
{
diff --git a/gcc/c.opt b/gcc/c.opt
index 3f1cd1301a0..b3e7dd7db18 100644
--- a/gcc/c.opt
+++ b/gcc/c.opt
@@ -204,7 +204,7 @@ C ObjC C++ ObjC++ Warning
Warn about stray tokens after #elif and #endif
Wenum-compare
-C++ ObjC++ Var(warn_enum_compare) Init(1) Warning
+C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning
Warn about comparison of different enum types
Werror
@@ -284,6 +284,10 @@ Winvalid-pch
C ObjC C++ ObjC++ Warning
Warn about PCH files that are found but not used
+Wlogical-op
+C ObjC C++ ObjC++ Var(warn_logical_op) Init(-1) Warning
+Warn when a logical operator is suspiciously always evaluating to true or false
+
Wlong-long
C ObjC C++ ObjC++ Var(warn_long_long) Init(1) Warning
Do not warn about using \"long long\" when -pedantic
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index 3af15ec5601..ee72030327c 100644
--- a/gcc/cfglayout.c
+++ b/gcc/cfglayout.c
@@ -1,5 +1,5 @@
/* Basic block reordering routines for the GNU compiler.
- Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008
+ Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -363,7 +363,7 @@ struct rtl_opt_pass pass_into_cfg_layout_mode =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
PROP_cfglayout, /* properties_provided */
0, /* properties_destroyed */
@@ -382,7 +382,7 @@ struct rtl_opt_pass pass_outof_cfg_layout_mode =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
PROP_cfglayout, /* properties_destroyed */
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 95d28ac1cfd..c6436bf4be7 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -1,6 +1,6 @@
/* Control flow graph manipulation code for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -232,22 +232,6 @@ delete_insn_chain (rtx start, rtx finish, bool clear_bb)
start = next;
}
}
-
-/* Like delete_insn_chain but also purge dead edges from BB. */
-
-void
-delete_insn_chain_and_edges (rtx first, rtx last)
-{
- bool purge = false;
-
- if (INSN_P (last)
- && BLOCK_FOR_INSN (last)
- && BB_END (BLOCK_FOR_INSN (last)) == last)
- purge = true;
- delete_insn_chain (first, last, false);
- if (purge)
- purge_dead_edges (BLOCK_FOR_INSN (last));
-}
/* Create a new basic block consisting of the instructions between HEAD and END
inclusive. This function is designed to allow fast BB construction - reuses
@@ -435,7 +419,7 @@ struct rtl_opt_pass pass_free_cfg =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
PROP_cfg, /* properties_destroyed */
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 86642ab605b..ce696e211b6 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -640,6 +640,9 @@ cgraph_set_call_stmt (struct cgraph_edge *e, gimple new_stmt)
htab_hash_pointer (e->call_stmt));
}
e->call_stmt = new_stmt;
+ push_cfun (DECL_STRUCT_FUNCTION (e->caller->decl));
+ e->can_throw_external = stmt_can_throw_external (new_stmt);
+ pop_cfun ();
if (e->caller->call_site_hash)
{
void **slot;
@@ -704,6 +707,9 @@ cgraph_create_edge (struct cgraph_node *caller, struct cgraph_node *callee,
edge->caller = caller;
edge->callee = callee;
edge->call_stmt = call_stmt;
+ push_cfun (DECL_STRUCT_FUNCTION (caller->decl));
+ edge->can_throw_external = stmt_can_throw_external (call_stmt);
+ pop_cfun ();
edge->prev_caller = NULL;
edge->next_caller = callee->callers;
if (callee->callers)
@@ -1215,6 +1221,8 @@ dump_cgraph_node (FILE *f, struct cgraph_node *node)
fprintf(f, "(inlined) ");
if (edge->indirect_call)
fprintf(f, "(indirect) ");
+ if (edge->can_throw_external)
+ fprintf(f, "(can throw external) ");
}
fprintf (f, "\n calls: ");
@@ -1234,6 +1242,8 @@ dump_cgraph_node (FILE *f, struct cgraph_node *node)
edge->frequency / (double)CGRAPH_FREQ_BASE);
if (edge->loop_nest)
fprintf (f, "(nested in %i loops) ", edge->loop_nest);
+ if (edge->can_throw_external)
+ fprintf(f, "(can throw external) ");
}
fprintf (f, "\n");
}
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index aba0e5927a3..347653fc79e 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -216,9 +216,11 @@ struct cgraph_edge GTY((chain_next ("%h.next_caller"), chain_prev ("%h.prev_call
per function call. The range is 0 to CGRAPH_FREQ_MAX. */
int frequency;
/* Depth of loop nest, 1 means no loop nest. */
- unsigned int loop_nest : 31;
+ unsigned int loop_nest : 30;
/* Whether this edge describes a call that was originally indirect. */
unsigned int indirect_call : 1;
+ /* Can this call throw externally? */
+ unsigned int can_throw_external : 1;
/* Unique id of the edge. */
int uid;
};
diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c
index c7d6aa72329..f244a1e315d 100644
--- a/gcc/cgraphbuild.c
+++ b/gcc/cgraphbuild.c
@@ -1,5 +1,5 @@
/* Callgraph construction.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Jan Hubicka
@@ -182,7 +182,7 @@ struct gimple_opt_pass pass_build_cgraph_edges =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -243,7 +243,7 @@ struct gimple_opt_pass pass_rebuild_cgraph_edges =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -270,7 +270,7 @@ struct gimple_opt_pass pass_remove_cgraph_callee_edges =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 9f6a50ddcbe..a99b7dfe96d 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -134,6 +134,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-iterator.h"
#include "tree-pass.h"
#include "output.h"
+#include "coverage.h"
static void cgraph_expand_all_functions (void);
static void cgraph_mark_functions_to_output (void);
@@ -978,6 +979,8 @@ cgraph_finalize_compilation_unit (void)
cgraph_analyze_functions ();
timevar_pop (TV_CGRAPH);
}
+
+
/* Figure out what functions we want to assemble. */
static void
@@ -1238,6 +1241,15 @@ ipa_passes (void)
gimple_register_cfg_hooks ();
bitmap_obstack_initialize (NULL);
execute_ipa_pass_list (all_ipa_passes);
+
+ /* Generate coverage variables and constructors. */
+ coverage_finish ();
+
+ /* Process new functions added. */
+ set_cfun (NULL);
+ current_function_decl = NULL;
+ cgraph_process_new_functions ();
+
bitmap_obstack_release (NULL);
}
@@ -1369,6 +1381,7 @@ cgraph_build_static_cdtor (char which, tree body, int priority)
resdecl = build_decl (RESULT_DECL, NULL_TREE, void_type_node);
DECL_ARTIFICIAL (resdecl) = 1;
DECL_RESULT (decl) = resdecl;
+ DECL_CONTEXT (resdecl) = decl;
allocate_struct_function (decl, false);
diff --git a/gcc/combine-stack-adj.c b/gcc/combine-stack-adj.c
index c678a607c66..3ec197f1beb 100644
--- a/gcc/combine-stack-adj.c
+++ b/gcc/combine-stack-adj.c
@@ -1,6 +1,6 @@
/* Combine stack adjustments.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -333,9 +333,7 @@ adjust_frame_related_expr (rtx last_sp_set, rtx insn,
if (note)
XEXP (note, 0) = new_expr;
else
- REG_NOTES (last_sp_set)
- = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, new_expr,
- REG_NOTES (last_sp_set));
+ add_reg_note (last_sp_set, REG_FRAME_RELATED_EXPR, new_expr);
}
/* Subroutine of combine_stack_adjustments, called for each basic block. */
@@ -551,7 +549,7 @@ struct rtl_opt_pass pass_stack_adjustments =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -561,4 +559,3 @@ struct rtl_opt_pass pass_stack_adjustments =
TODO_ggc_collect, /* todo_flags_finish */
}
};
-
diff --git a/gcc/combine.c b/gcc/combine.c
index 80187347aed..b070ee1c2ab 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -3643,12 +3643,12 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
if (i3dest_killed)
{
if (newi2pat && reg_set_p (i3dest_killed, newi2pat))
- distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i3dest_killed,
- NULL_RTX),
+ distribute_notes (alloc_reg_note (REG_DEAD, i3dest_killed,
+ NULL_RTX),
NULL_RTX, i2, NULL_RTX, elim_i2, elim_i1);
else
- distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i3dest_killed,
- NULL_RTX),
+ distribute_notes (alloc_reg_note (REG_DEAD, i3dest_killed,
+ NULL_RTX),
NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
elim_i2, elim_i1);
}
@@ -3656,10 +3656,10 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
if (i2dest_in_i2src)
{
if (newi2pat && reg_set_p (i2dest, newi2pat))
- distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i2dest, NULL_RTX),
+ distribute_notes (alloc_reg_note (REG_DEAD, i2dest, NULL_RTX),
NULL_RTX, i2, NULL_RTX, NULL_RTX, NULL_RTX);
else
- distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i2dest, NULL_RTX),
+ distribute_notes (alloc_reg_note (REG_DEAD, i2dest, NULL_RTX),
NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
NULL_RTX, NULL_RTX);
}
@@ -3667,10 +3667,10 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
if (i1dest_in_i1src)
{
if (newi2pat && reg_set_p (i1dest, newi2pat))
- distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i1dest, NULL_RTX),
+ distribute_notes (alloc_reg_note (REG_DEAD, i1dest, NULL_RTX),
NULL_RTX, i2, NULL_RTX, NULL_RTX, NULL_RTX);
else
- distribute_notes (gen_rtx_EXPR_LIST (REG_DEAD, i1dest, NULL_RTX),
+ distribute_notes (alloc_reg_note (REG_DEAD, i1dest, NULL_RTX),
NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
NULL_RTX, NULL_RTX);
}
@@ -9863,8 +9863,8 @@ recog_for_combine (rtx *pnewpat, rtx insn, rtx *pnotes)
if (GET_CODE (XEXP (XVECEXP (newpat, 0, i), 0)) != SCRATCH)
{
gcc_assert (REG_P (XEXP (XVECEXP (newpat, 0, i), 0)));
- notes = gen_rtx_EXPR_LIST (REG_UNUSED,
- XEXP (XVECEXP (newpat, 0, i), 0), notes);
+ notes = alloc_reg_note (REG_UNUSED,
+ XEXP (XVECEXP (newpat, 0, i), 0), notes);
}
}
pat = newpat;
@@ -12231,7 +12231,7 @@ move_deaths (rtx x, rtx maybe_kill_insn, int from_luid, rtx to_insn,
*pnotes = note;
}
else
- *pnotes = gen_rtx_EXPR_LIST (REG_DEAD, x, *pnotes);
+ *pnotes = alloc_reg_note (REG_DEAD, x, *pnotes);
}
return;
@@ -12800,8 +12800,8 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2,
&& ! reg_bitfield_target_p (piece,
PATTERN (place)))
{
- rtx new_note
- = gen_rtx_EXPR_LIST (REG_DEAD, piece, NULL_RTX);
+ rtx new_note = alloc_reg_note (REG_DEAD, piece,
+ NULL_RTX);
distribute_notes (new_note, place, place,
NULL_RTX, NULL_RTX, NULL_RTX);
@@ -12848,9 +12848,7 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2,
}
if (place2)
- REG_NOTES (place2)
- = gen_rtx_fmt_ee (GET_CODE (note), REG_NOTE_KIND (note),
- XEXP (note, 0), REG_NOTES (place2));
+ add_reg_note (place2, REG_NOTE_KIND (note), XEXP (note, 0));
}
}
@@ -13046,4 +13044,3 @@ struct rtl_opt_pass pass_combine =
TODO_ggc_collect, /* todo_flags_finish */
}
};
-
diff --git a/gcc/common.opt b/gcc/common.opt
index 20dd071cd7c..c0f6b9e6d09 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -128,10 +128,6 @@ Wlarger-than=
Common RejectNegative Joined UInteger Warning
-Wlarger-than=<number> Warn if an object is larger than <number> bytes
-Wlogical-op
-Common Warning Var(warn_logical_op)
-Warn when a logical operator is suspicously always evaluating to true or false
-
Wunsafe-loop-optimizations
Common Var(warn_unsafe_loop_optimizations) Warning
Warn if the loop cannot be optimized due to nontrivial assumptions.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index ac2fcc1fb80..a2c7032d92b 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1989,9 +1989,14 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
*) with_endian=big,little ;;
esac
fi
+ # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
+ # First word : the default endian.
+ # Second word: the secondary endian (optional).
case ${with_endian} in
- big|little) tmake_file="${tmake_file} sh/t-1e" ;;
- big,little|little,big) ;;
+ big) TM_ENDIAN_CONFIG=mb ;;
+ little) TM_ENDIAN_CONFIG=ml ;;
+ big,little) TM_ENDIAN_CONFIG="mb ml" ;;
+ little,big) TM_ENDIAN_CONFIG="ml mb" ;;
*) echo "with_endian=${with_endian} not supported."; exit 1 ;;
esac
case ${with_endian} in
@@ -2101,7 +2106,7 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
*) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
esac
sh_multilibs=${with_multilib_list}
- if test x${sh_multilibs} = x ; then
+ if test "$sh_multilibs" = "default" ; then
case ${target} in
sh64-superh-linux* | \
sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
@@ -2117,25 +2122,32 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
fi
target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
- sh_multilibs=`echo $sh_multilibs,$sh_cpu_default | sed -e 's/[ ,/][ ,]*/ /g' -e 's/ $//' -e 's/^m/sh/' -e 's/ m/ sh/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
+ tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
+ sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^sh/m/i' -e 's/ sh/ m/gi' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
for sh_multilib in ${sh_multilibs}; do
case ${sh_multilib} in
- sh1 | sh2 | sh2e | sh3 | sh3e | \
- sh4 | sh4-single | sh4-single-only | sh4-nofpu | sh4-300 |\
- sh4a | sh4a-single | sh4a-single-only | sh4a-nofpu | sh4al | \
- sh2a | sh2a-single | sh2a-single-only | sh2a-nofpu | \
- sh5-64media | sh5-64media-nofpu | \
- sh5-32media | sh5-32media-nofpu | \
- sh5-compact | sh5-compact-nofpu)
- tmake_file="${tmake_file} sh/t-mlib-${sh_multilib}"
- tm_defines="$tm_defines SUPPORT_`echo $sh_multilib|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
+ m1 | m2 | m2e | m3 | m3e | \
+ m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
+ m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
+ m2a | m2a-single | m2a-single-only | m2a-nofpu | \
+ m5-64media | m5-64media-nofpu | \
+ m5-32media | m5-32media-nofpu | \
+ m5-compact | m5-compact-nofpu)
+ # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
+ # It is passed to MULTIILIB_OPTIONS verbatim.
+ TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
+ tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
;;
+ \!*) # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
+ # It is passed the MULTILIB_EXCEPTIONS verbatim.
+ TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
*)
echo "with_multilib_list=${sh_multilib} not supported."
exit 1
;;
esac
done
+ TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
if test x${enable_incomplete_targets} = xyes ; then
tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1 SUPPORT_SH5_32MEDIA=1 SUPPORT_SH5_32MEDIA_NOFPU=1 SUPPORT_SH5_64MEDIA=1 SUPPORT_SH5_64MEDIA_NOFPU=1"
fi
@@ -3053,7 +3065,7 @@ case ${target} in
i[34567]86-*-darwin* | x86_64-*-darwin*)
tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
;;
- i[34567]86-*-linux* | x86_64-*-linux*)
+ i[34567]86-*-linux* | x86_64-*-linux* | i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux"
;;
ia64*-*-linux*)
diff --git a/gcc/config/arm/sfp-machine.h b/gcc/config/arm/sfp-machine.h
index bc75737d73d..4a456ae03a2 100644
--- a/gcc/config/arm/sfp-machine.h
+++ b/gcc/config/arm/sfp-machine.h
@@ -3,6 +3,11 @@
#define _FP_WS_TYPE signed long
#define _FP_I_TYPE long
+/* The type of the result of a floating point comparison. This must
+ match `__libgcc_cmp_return__' in GCC for the target. */
+typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
+#define CMPtype __gcc_CMPtype
+
#define _FP_MUL_MEAT_S(R,X,Y) \
_FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
#define _FP_MUL_MEAT_D(R,X,Y) \
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index 309b028589d..269e2c5ddb5 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -1478,7 +1478,7 @@
(rotate:SI (match_operand:SI 1 "register_operand" "r")
(const_int 16)))]
""
- "{mov __tmp_reg__,%A0\;mov %A0,%D0\;mov %D0, __tmp_reg__\;mov __tmp_reg__,%B0\;mov %B0,%C0\;mov %C0, __tmp_reg__|movw __tmp_reg__,%A0\;movw %A0,%C0\;movw %C0, __tmp_reg__\;clr __zero_reg__}"
+ "{mov __tmp_reg__,%A1\;mov %A0,%C1\;mov %C0, __tmp_reg__\;mov __tmp_reg__,%B1\;mov %B0,%D1\;mov %D0, __tmp_reg__|movw __tmp_reg__,%A1\;movw %A0,%C1\;movw %C0, __tmp_reg__\;clr __zero_reg__}"
"reload_completed
&& REGNO (operands[0]) != REGNO (operands[1])"
[(set (match_dup 2) (match_dup 5))
@@ -1490,7 +1490,18 @@
operands[3] = simplify_gen_subreg (HImode, operands[0], SImode, si_hi_off);
operands[4] = simplify_gen_subreg (HImode, operands[1], SImode, si_lo_off);
- operands[5] = simplify_gen_subreg (HImode, operands[1], SImode, si_hi_off);"
+ operands[5] = simplify_gen_subreg (HImode, operands[1], SImode, si_hi_off);
+
+ if (REGNO (operands[0]) == REGNO(operands[1]) + 2)
+ {
+ emit_move_insn (operands[3], operands[4]);
+ DONE;
+ }
+ else if (REGNO (operands[0]) == REGNO(operands[1]) - 2)
+ {
+ emit_move_insn (operands[2], operands[5]);
+ DONE;
+ }"
[(set (attr "length") (if_then_else (eq_attr "mcu_have_movw" "yes")
(const_int 4)
(const_int 6)))
@@ -1503,17 +1514,14 @@
(rotate:SI (match_operand:SI 1 "register_operand" "r")
(const_int 8)))]
""
- "mov __tmp_reg__,%D0
- mov %D0,%C0
- mov %C0,%B0
- mov %B0,%A0
+ "mov __tmp_reg__,%D1
+ mov %D0,%C1
+ mov %C0,%B1
+ mov %B0,%A1
mov %A0, __tmp_reg__"
"reload_completed
&& REGNO (operands[0]) != REGNO (operands[1])"
- [(set (match_dup 2) (match_dup 9))
- (set (match_dup 3) (match_dup 6))
- (set (match_dup 4) (match_dup 7))
- (set (match_dup 5) (match_dup 8))]
+ [(const_int 0)]
"unsigned int si_lo_off = subreg_lowpart_offset (HImode, SImode);
unsigned int si_hi_off = subreg_highpart_offset (HImode, SImode);
unsigned int hi_lo_off = subreg_lowpart_offset (QImode, HImode);
@@ -1531,7 +1539,23 @@
operands[7] = simplify_gen_subreg (QImode, operands[6], HImode, hi_hi_off);
operands[6] = simplify_gen_subreg (QImode, operands[6], HImode, hi_lo_off);
operands[9] = simplify_gen_subreg (QImode, operands[8], HImode, hi_hi_off);
- operands[8] = simplify_gen_subreg (QImode, operands[8], HImode, hi_lo_off);"
+ operands[8] = simplify_gen_subreg (QImode, operands[8], HImode, hi_lo_off);
+
+ if (REGNO (operands[0]) < REGNO(operands[1]))
+ {
+ emit_move_insn (operands[2], operands[9]);
+ emit_move_insn (operands[3], operands[6]);
+ emit_move_insn (operands[4], operands[7]);
+ emit_move_insn (operands[5], operands[8]);
+ }
+ else
+ {
+ emit_move_insn (operands[5], operands[8]);
+ emit_move_insn (operands[2], operands[9]);
+ emit_move_insn (operands[4], operands[7]);
+ emit_move_insn (operands[3], operands[6]);
+ }
+ DONE;"
[(set_attr "length" "5")
(set_attr "cc" "none")])
@@ -1540,17 +1564,14 @@
(rotate:SI (match_operand:SI 1 "register_operand" "r")
(const_int 24)))]
""
- "mov __tmp_reg__,%A0
- mov %A0,%B0
- mov %B0,%C0
- mov %C0,%D0
+ "mov __tmp_reg__,%A1
+ mov %A0,%B1
+ mov %B0,%C1
+ mov %C0,%D1
mov %D0, __tmp_reg__"
"reload_completed
&& REGNO (operands[0]) != REGNO (operands[1])"
- [(set (match_dup 2) (match_dup 7))
- (set (match_dup 3) (match_dup 8))
- (set (match_dup 4) (match_dup 9))
- (set (match_dup 5) (match_dup 6))]
+ [(const_int 0)]
"unsigned int si_lo_off = subreg_lowpart_offset (HImode, SImode);
unsigned int si_hi_off = subreg_highpart_offset (HImode, SImode);
unsigned int hi_lo_off = subreg_lowpart_offset (QImode, HImode);
@@ -1568,7 +1589,23 @@
operands[7] = simplify_gen_subreg (QImode, operands[6], HImode, hi_hi_off);
operands[6] = simplify_gen_subreg (QImode, operands[6], HImode, hi_lo_off);
operands[9] = simplify_gen_subreg (QImode, operands[8], HImode, hi_hi_off);
- operands[8] = simplify_gen_subreg (QImode, operands[8], HImode, hi_lo_off);"
+ operands[8] = simplify_gen_subreg (QImode, operands[8], HImode, hi_lo_off);
+
+ if (REGNO (operands[0]) < REGNO(operands[1]))
+ {
+ emit_move_insn (operands[2], operands[7]);
+ emit_move_insn (operands[5], operands[6]);
+ emit_move_insn (operands[3], operands[8]);
+ emit_move_insn (operands[4], operands[9]);
+ }
+ else
+ {
+ emit_move_insn (operands[5], operands[6]);
+ emit_move_insn (operands[4], operands[9]);
+ emit_move_insn (operands[3], operands[8]);
+ emit_move_insn (operands[2], operands[7]);
+ }
+ DONE;"
[(set_attr "length" "5")
(set_attr "cc" "none")])
diff --git a/gcc/config/i386/cygwin-stdint.h b/gcc/config/i386/cygwin-stdint.h
index 53fd7e22a9d..df865f717cb 100644
--- a/gcc/config/i386/cygwin-stdint.h
+++ b/gcc/config/i386/cygwin-stdint.h
@@ -57,6 +57,6 @@ along with GCC; see the file COPYING3. If not see
/* Integer types capable of holding object pointers */
-#define INTPTR_TYPE "long int"
-#define UINTPTR_TYPE "long unsigned int"
+#define INTPTR_TYPE "int"
+#define UINTPTR_TYPE "unsigned int"
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 0b51c78f576..ca727ad12e5 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -1094,13 +1094,7 @@ static const struct mips_rtx_cost_data mips_rtx_cost_data[PROCESSOR_MAX] = {
DEFAULT_COSTS
},
{ /* XLR */
- /* Need to replace first five with the costs of calling the appropriate
- libgcc routine. */
- COSTS_N_INSNS (256), /* fp_add */
- COSTS_N_INSNS (256), /* fp_mult_sf */
- COSTS_N_INSNS (256), /* fp_mult_df */
- COSTS_N_INSNS (256), /* fp_div_sf */
- COSTS_N_INSNS (256), /* fp_div_df */
+ SOFT_FP_COSTS,
COSTS_N_INSNS (8), /* int_mult_si */
COSTS_N_INSNS (8), /* int_mult_di */
COSTS_N_INSNS (72), /* int_div_si */
@@ -14725,7 +14719,7 @@ mips_final_prescan_insn (rtx insn, rtx *opvec, int noperands)
/* Implement TARGET_ASM_FINAL_POSTSCAN_INSN. */
-void
+static void
mips_final_postscan_insn (FILE *file, rtx insn, rtx *opvec, int noperands)
{
int i;
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 45971acf08a..cd6f1e5d220 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -709,7 +709,8 @@ enum mips_code_readable_setting {
%{march=mips32|march=4kc|march=4km|march=4kp|march=4ksc:-mips32} \
%{march=mips32r2|march=m4k|march=4ke*|march=4ksd|march=24k* \
|march=34k*|march=74k*: -mips32r2} \
- %{march=mips64|march=5k*|march=20k*|march=sb1*|march=sr71000: -mips64} \
+ %{march=mips64|march=5k*|march=20k*|march=sb1*|march=sr71000 \
+ |march=xlr: -mips64} \
%{march=mips64r2|march=octeon: -mips64r2} \
%{!march=*: -" MULTILIB_ISA_DEFAULT "}}"
@@ -720,7 +721,7 @@ enum mips_code_readable_setting {
#define MIPS_ARCH_FLOAT_SPEC \
"%{mhard-float|msoft-float|march=mips*:; \
march=vr41*|march=m4k|march=4k*|march=24kc|march=24kec \
- |march=34kc|march=74kc|march=5kc|march=octeon: -msoft-float; \
+ |march=34kc|march=74kc|march=5kc|march=octeon|march=xlr: -msoft-float; \
march=*: -mhard-float}"
/* A spec condition that matches 32-bit options. It only works if
@@ -3462,3 +3463,7 @@ extern enum mips_code_readable_setting mips_code_readable;
#define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \
mips_final_prescan_insn (INSN, OPVEC, NOPERANDS)
+
+/* This is necessary to avoid a warning about comparing different enum
+ types. */
+#define mips_tune_attr ((enum attr_cpu) mips_tune)
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 8a6719466d3..8453aab3deb 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -571,7 +571,7 @@
;; with the processor_type enumeration in mips.h.
(define_attr "cpu"
"r3000,4kc,4kp,5kc,5kf,20kc,24kc,24kf2_1,24kf1_1,74kc,74kf2_1,74kf1_1,74kf3_2,loongson_2e,loongson_2f,m4k,octeon,r3900,r6000,r4000,r4100,r4111,r4120,r4130,r4300,r4600,r4650,r5000,r5400,r5500,r7000,r8000,r9000,r10000,sb1,sb1a,sr71000,xlr"
- (const (symbol_ref "mips_tune")))
+ (const (symbol_ref "mips_tune_attr")))
;; The type of hardware hazard associated with this instruction.
;; DELAY means that the next instruction cannot read the result
diff --git a/gcc/config/mips/xlr.md b/gcc/config/mips/xlr.md
index 21550ba12d9..69913b7b2fb 100644
--- a/gcc/config/mips/xlr.md
+++ b/gcc/config/mips/xlr.md
@@ -1,5 +1,5 @@
;; DFA-based pipeline description for the XLR.
-;; Copyright (C) 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2008, 2009 Free Software Foundation, Inc.
;;
;; xlr.md Machine Description for the RMI XLR Microprocessor
;; This file is part of GCC.
@@ -31,7 +31,7 @@
;; Integer arithmetic instructions.
(define_insn_reservation "ir_xlr_alu" 1
(and (eq_attr "cpu" "xlr")
- (eq_attr "type" "arith,shift,clz,const,unknown,multi,nop,trap"))
+ (eq_attr "type" "move,arith,shift,clz,logical,signext,const,unknown,multi,nop,trap"))
"xlr_main_pipe")
;; Integer arithmetic instructions.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 6500cc79291..07131b72723 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -885,7 +885,6 @@ static rtx paired_expand_predicate_builtin (enum insn_code, tree, rtx);
static void enable_mask_for_builtins (struct builtin_description *, int,
enum rs6000_builtins,
enum rs6000_builtins);
-static tree build_opaque_vector_type (tree, int);
static void spe_init_builtins (void);
static rtx spe_expand_builtin (tree, rtx, bool *);
static rtx spe_expand_stv_builtin (enum insn_code, tree);
@@ -916,7 +915,6 @@ static void compute_save_world_info (rs6000_stack_t *info_ptr);
static void is_altivec_return_reg (rtx, void *);
static rtx generate_set_vrsave (rtx, rs6000_stack_t *, int);
int easy_vector_constant (rtx, enum machine_mode);
-static bool rs6000_is_opaque_type (const_tree);
static rtx rs6000_dwarf_register_span (rtx);
static void rs6000_init_dwarf_reg_sizes_extra (tree);
static rtx rs6000_legitimize_tls_address (rtx, enum tls_model);
@@ -1191,9 +1189,6 @@ static const char alt_reg_names[][8] =
#undef TARGET_ADDRESS_COST
#define TARGET_ADDRESS_COST hook_int_rtx_bool_0
-#undef TARGET_VECTOR_OPAQUE_P
-#define TARGET_VECTOR_OPAQUE_P rs6000_is_opaque_type
-
#undef TARGET_DWARF_REGISTER_SPAN
#define TARGET_DWARF_REGISTER_SPAN rs6000_dwarf_register_span
@@ -9362,15 +9357,6 @@ rs6000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
gcc_unreachable ();
}
-static tree
-build_opaque_vector_type (tree node, int nunits)
-{
- node = copy_node (node);
- TYPE_MAIN_VARIANT (node) = node;
- TYPE_CANONICAL (node) = node;
- return build_vector_type (node, nunits);
-}
-
static void
rs6000_init_builtins (void)
{
@@ -9391,7 +9377,7 @@ rs6000_init_builtins (void)
opaque_V2SF_type_node = build_opaque_vector_type (float_type_node, 2);
opaque_V2SI_type_node = build_opaque_vector_type (intSI_type_node, 2);
opaque_p_V2SI_type_node = build_pointer_type (opaque_V2SI_type_node);
- opaque_V4SI_type_node = copy_node (V4SI_type_node);
+ opaque_V4SI_type_node = build_opaque_vector_type (intSI_type_node, 4);
/* The 'vector bool ...' types must be kept distinct from 'vector unsigned ...'
types, especially in C++ land. Similarly, 'vector pixel' is distinct from
@@ -22600,7 +22586,8 @@ rs6000_function_value (const_tree valtype, const_tree func ATTRIBUTE_UNUSED)
if (DECIMAL_FLOAT_MODE_P (mode) && TARGET_HARD_FLOAT && TARGET_FPRS)
/* _Decimal128 must use an even/odd register pair. */
regno = (mode == TDmode) ? FP_ARG_RETURN + 1 : FP_ARG_RETURN;
- else if (SCALAR_FLOAT_TYPE_P (valtype) && TARGET_HARD_FLOAT && TARGET_FPRS)
+ else if (SCALAR_FLOAT_TYPE_P (valtype) && TARGET_HARD_FLOAT && TARGET_FPRS
+ && ((TARGET_SINGLE_FLOAT && (mode == SFmode)) || TARGET_DOUBLE_FLOAT))
regno = FP_ARG_RETURN;
else if (TREE_CODE (valtype) == COMPLEX_TYPE
&& targetm.calls.split_complex_arg)
@@ -22693,16 +22680,6 @@ rs6000_initial_elimination_offset (int from, int to)
return offset;
}
-/* Return true if TYPE is a SPE or AltiVec opaque type. */
-
-static bool
-rs6000_is_opaque_type (const_tree type)
-{
- return (type == opaque_V2SI_type_node
- || type == opaque_V2SF_type_node
- || type == opaque_V4SI_type_node);
-}
-
static rtx
rs6000_dwarf_register_span (rtx reg)
{
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index c2f05e5dfad..cb7c404567a 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -8143,8 +8143,8 @@
(define_insn "*movsi_internal1"
[(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "=r,r,r,m,r,r,r,r,r,*q,*c*l,*h,*h")
(match_operand:SI 1 "input_operand" "r,U,m,r,I,L,n,R,*h,r,r,r,0"))]
- "gpc_reg_operand (operands[0], SImode)
- || gpc_reg_operand (operands[1], SImode)"
+ "!TARGET_SINGLE_FPU &&
+ (gpc_reg_operand (operands[0], SImode) || gpc_reg_operand (operands[1], SImode))"
"@
mr %0,%1
{cal|la} %0,%a1
@@ -8162,6 +8162,30 @@
[(set_attr "type" "*,*,load,store,*,*,*,*,mfjmpr,*,mtjmpr,*,*")
(set_attr "length" "4,4,4,4,4,4,8,4,4,4,4,4,4")])
+(define_insn "*movsi_internal1_single"
+ [(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "=r,r,r,m,r,r,r,r,r,*q,*c*l,*h,*h,m,*f")
+ (match_operand:SI 1 "input_operand" "r,U,m,r,I,L,n,R,*h,r,r,r,0,f,m"))]
+ "TARGET_SINGLE_FPU &&
+ (gpc_reg_operand (operands[0], SImode) || gpc_reg_operand (operands[1], SImode))"
+ "@
+ mr %0,%1
+ {cal|la} %0,%a1
+ {l%U1%X1|lwz%U1%X1} %0,%1
+ {st%U0%X0|stw%U0%X0} %1,%0
+ {lil|li} %0,%1
+ {liu|lis} %0,%v1
+ #
+ {cal|la} %0,%a1
+ mf%1 %0
+ mt%0 %1
+ mt%0 %1
+ mt%0 %1
+ {cror 0,0,0|nop}
+ stfs%U0%X0 %1, %0
+ lfs%U1%X1 %0, %1"
+ [(set_attr "type" "*,*,load,store,*,*,*,*,mfjmpr,*,mtjmpr,*,*,*,*")
+ (set_attr "length" "4,4,4,4,4,4,8,4,4,4,4,4,4,4,4")])
+
;; Split a load of a large constant into the appropriate two-insn
;; sequence.
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index bfe0268cc77..3bf9d7d2157 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -60,6 +60,10 @@ enum processor_flags
extern enum processor_type s390_tune;
extern enum processor_flags s390_tune_flags;
+/* This is necessary to avoid a warning about comparing different enum
+ types. */
+#define s390_tune_attr ((enum attr_cpu)s390_tune)
+
extern enum processor_type s390_arch;
extern enum processor_flags s390_arch_flags;
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 16ed99e08f1..c3d181f0aac 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -262,7 +262,7 @@
;; CPUs could in theory be modeled.
(define_attr "cpu" "g5,g6,z900,z990,z9_109,z10"
- (const (symbol_ref "s390_tune")))
+ (const (symbol_ref "s390_tune_attr")))
(define_attr "cpu_facility" "standard,ieee,zarch,longdisp,extimm,dfp,z10"
(const_string "standard"))
diff --git a/gcc/config/sh/lib1funcs.asm b/gcc/config/sh/lib1funcs.asm
index 1f36f73dbc3..2f0ca16cd91 100644
--- a/gcc/config/sh/lib1funcs.asm
+++ b/gcc/config/sh/lib1funcs.asm
@@ -30,6 +30,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
!! recoded in assembly by Toshiyasu Morita
!! tm@netcom.com
+#if defined(__ELF__) && defined(__linux__)
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
ELF local label prefixes by J"orn Rennecke
amylaar@cygnus.com */
diff --git a/gcc/config/sh/linux-atomic.asm b/gcc/config/sh/linux-atomic.asm
index bf95970424c..fd3a7720e99 100644
--- a/gcc/config/sh/linux-atomic.asm
+++ b/gcc/config/sh/linux-atomic.asm
@@ -135,4 +135,7 @@ ATOMIC_FETCH_AND_COMBOP(nand,and,not,1,b,extu.b)
ATOMIC_FETCH_AND_COMBOP(nand,and,not,2,w,extu.w)
ATOMIC_FETCH_AND_COMBOP(nand,and,not,4,l,mov)
+.section .note.GNU-stack,"",%progbits
+.previous
+
#endif /* ! __SH5__ */
diff --git a/gcc/config/sh/predicates.md b/gcc/config/sh/predicates.md
index f800db7b7d1..da9962c9984 100644
--- a/gcc/config/sh/predicates.md
+++ b/gcc/config/sh/predicates.md
@@ -112,6 +112,7 @@
|| satisfies_constraint_Css (op))
return 1;
else if (GET_CODE (op) == TRUNCATE
+ && GET_CODE (XEXP (op, 0)) == REG
&& ! system_reg_operand (XEXP (op, 0), VOIDmode)
&& (mode == VOIDmode || mode == GET_MODE (op))
&& (GET_MODE_SIZE (GET_MODE (op))
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index 6a4ccb0f0e6..3a90cf172fd 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -1743,7 +1743,7 @@ extern enum reg_class regno_reg_class[FIRST_PSEUDO_REGISTER];
|| TREE_CODE (VALTYPE) == BOOLEAN_TYPE \
|| TREE_CODE (VALTYPE) == REAL_TYPE \
|| TREE_CODE (VALTYPE) == OFFSET_TYPE)) \
- && sh_promote_prototypes (VALTYPE) \
+ && sh_promote_prototypes (FUNC) \
? (TARGET_SHMEDIA64 ? DImode : SImode) : TYPE_MODE (VALTYPE)), \
BASE_RETURN_VALUE_REG (TYPE_MODE (VALTYPE)))
diff --git a/gcc/config/sh/t-1e b/gcc/config/sh/t-1e
deleted file mode 100644
index 74b0f9a606a..00000000000
--- a/gcc/config/sh/t-1e
+++ /dev/null
@@ -1 +0,0 @@
-MULTILIB_ENDIAN =
diff --git a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux
index b7a3d7c977b..13ff848dd7c 100644
--- a/gcc/config/sh/t-linux
+++ b/gcc/config/sh/t-linux
@@ -4,6 +4,5 @@ LIB2FUNCS_EXTRA= $(srcdir)/config/sh/linux-atomic.asm
MULTILIB_DIRNAMES=
MULTILIB_MATCHES =
-MULTILIB_EXCEPTIONS=
EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
diff --git a/gcc/config/sh/t-mlib-sh1 b/gcc/config/sh/t-mlib-sh1
deleted file mode 100644
index 9ba70541c6c..00000000000
--- a/gcc/config/sh/t-mlib-sh1
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh1=m1/
diff --git a/gcc/config/sh/t-mlib-sh2 b/gcc/config/sh/t-mlib-sh2
deleted file mode 100644
index d8857bab66b..00000000000
--- a/gcc/config/sh/t-mlib-sh2
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh2=m2/
diff --git a/gcc/config/sh/t-mlib-sh2a b/gcc/config/sh/t-mlib-sh2a
deleted file mode 100644
index e276ac99517..00000000000
--- a/gcc/config/sh/t-mlib-sh2a
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh2a=m2a/
diff --git a/gcc/config/sh/t-mlib-sh2a-nofpu b/gcc/config/sh/t-mlib-sh2a-nofpu
deleted file mode 100644
index a84874efcd0..00000000000
--- a/gcc/config/sh/t-mlib-sh2a-nofpu
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh2a_nofpu=m2a-nofpu/
diff --git a/gcc/config/sh/t-mlib-sh2a-single b/gcc/config/sh/t-mlib-sh2a-single
deleted file mode 100644
index b3432fa83a1..00000000000
--- a/gcc/config/sh/t-mlib-sh2a-single
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh2a_single=m2a-single/
diff --git a/gcc/config/sh/t-mlib-sh2a-single-only b/gcc/config/sh/t-mlib-sh2a-single-only
deleted file mode 100644
index e34afe2f219..00000000000
--- a/gcc/config/sh/t-mlib-sh2a-single-only
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh2a_single_only=m2a-single-only/
diff --git a/gcc/config/sh/t-mlib-sh2e b/gcc/config/sh/t-mlib-sh2e
deleted file mode 100644
index 58841327cfe..00000000000
--- a/gcc/config/sh/t-mlib-sh2e
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh2e=m2e/
diff --git a/gcc/config/sh/t-mlib-sh3 b/gcc/config/sh/t-mlib-sh3
deleted file mode 100644
index 2c89d749a99..00000000000
--- a/gcc/config/sh/t-mlib-sh3
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh3=m3/
diff --git a/gcc/config/sh/t-mlib-sh3e b/gcc/config/sh/t-mlib-sh3e
deleted file mode 100644
index ca18b1bcf8b..00000000000
--- a/gcc/config/sh/t-mlib-sh3e
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh3e=m3e/
diff --git a/gcc/config/sh/t-mlib-sh4 b/gcc/config/sh/t-mlib-sh4
deleted file mode 100644
index be7f5c4febd..00000000000
--- a/gcc/config/sh/t-mlib-sh4
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh4=m4/
diff --git a/gcc/config/sh/t-mlib-sh4-nofpu b/gcc/config/sh/t-mlib-sh4-nofpu
deleted file mode 100644
index fa12433714b..00000000000
--- a/gcc/config/sh/t-mlib-sh4-nofpu
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh4_nofpu=m4-nofpu/
diff --git a/gcc/config/sh/t-mlib-sh4-single b/gcc/config/sh/t-mlib-sh4-single
deleted file mode 100644
index f81bddd1efe..00000000000
--- a/gcc/config/sh/t-mlib-sh4-single
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh4_single=m4-single/
diff --git a/gcc/config/sh/t-mlib-sh4-single-only b/gcc/config/sh/t-mlib-sh4-single-only
deleted file mode 100644
index 121d598d69f..00000000000
--- a/gcc/config/sh/t-mlib-sh4-single-only
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh4_single_only=m4-single-only/
diff --git a/gcc/config/sh/t-mlib-sh4a b/gcc/config/sh/t-mlib-sh4a
deleted file mode 100644
index 788b852962d..00000000000
--- a/gcc/config/sh/t-mlib-sh4a
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh4a=m4a/
diff --git a/gcc/config/sh/t-mlib-sh4a-nofpu b/gcc/config/sh/t-mlib-sh4a-nofpu
deleted file mode 100644
index c9dc28bb886..00000000000
--- a/gcc/config/sh/t-mlib-sh4a-nofpu
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh4a_nofpu=m4a-nofpu/
diff --git a/gcc/config/sh/t-mlib-sh4a-single b/gcc/config/sh/t-mlib-sh4a-single
deleted file mode 100644
index 036a4cc0a36..00000000000
--- a/gcc/config/sh/t-mlib-sh4a-single
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh4a_single=m4a-single/
diff --git a/gcc/config/sh/t-mlib-sh4a-single-only b/gcc/config/sh/t-mlib-sh4a-single-only
deleted file mode 100644
index 5709e8ef789..00000000000
--- a/gcc/config/sh/t-mlib-sh4a-single-only
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh4a_single_only=m4a-single-only/
diff --git a/gcc/config/sh/t-mlib-sh4al b/gcc/config/sh/t-mlib-sh4al
deleted file mode 100644
index e8e36ba5b86..00000000000
--- a/gcc/config/sh/t-mlib-sh4al
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh4al=m4al/
diff --git a/gcc/config/sh/t-mlib-sh5-32media b/gcc/config/sh/t-mlib-sh5-32media
deleted file mode 100644
index f03fd291153..00000000000
--- a/gcc/config/sh/t-mlib-sh5-32media
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh5_32media=m5-32media/
diff --git a/gcc/config/sh/t-mlib-sh5-32media-nofpu b/gcc/config/sh/t-mlib-sh5-32media-nofpu
deleted file mode 100644
index 0d84f0eed77..00000000000
--- a/gcc/config/sh/t-mlib-sh5-32media-nofpu
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh5_32media_nofpu=m5-32media-nofpu/
diff --git a/gcc/config/sh/t-mlib-sh5-64media b/gcc/config/sh/t-mlib-sh5-64media
deleted file mode 100644
index d324f62b5b8..00000000000
--- a/gcc/config/sh/t-mlib-sh5-64media
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh5_64media=m5-64media/
diff --git a/gcc/config/sh/t-mlib-sh5-64media-nofpu b/gcc/config/sh/t-mlib-sh5-64media-nofpu
deleted file mode 100644
index 127bc47e45e..00000000000
--- a/gcc/config/sh/t-mlib-sh5-64media-nofpu
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh5_64media_nofpu=m5-64media-nofpu/
diff --git a/gcc/config/sh/t-mlib-sh5-compact b/gcc/config/sh/t-mlib-sh5-compact
deleted file mode 100644
index e330c25e69e..00000000000
--- a/gcc/config/sh/t-mlib-sh5-compact
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh5_compact=m5-compact/
diff --git a/gcc/config/sh/t-mlib-sh5-compact-nofpu b/gcc/config/sh/t-mlib-sh5-compact-nofpu
deleted file mode 100644
index cf6afdc4d3c..00000000000
--- a/gcc/config/sh/t-mlib-sh5-compact-nofpu
+++ /dev/null
@@ -1 +0,0 @@
-ML_sh5_compact_nofpu=m5-compact-nofpu/
diff --git a/gcc/config/sh/t-sh b/gcc/config/sh/t-sh
index 5f1e8fb0e98..1511d2f68a1 100644
--- a/gcc/config/sh/t-sh
+++ b/gcc/config/sh/t-sh
@@ -27,10 +27,10 @@ fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#endif' >> fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-MULTILIB_ENDIAN = ml/mb
-MULTILIB_CPUS= $(ML_sh1)$(ML_sh2a)$(ML_sh2a_nofpu)$(ML_sh2a_single_only)$(ML_sh2a_single)$(ML_sh2e)$(ML_sh2)$(ML_sh3e)$(ML_sh3)$(ML_sh4_nofpu)$(ML_sh4_single_only)$(ML_sh4_single)$(ML_sh4)$(ML_sh4a_nofpu)$(ML_sh4a_single_only)$(ML_sh4a_single)$(ML_sh4a)$(ML_sh5_32media)$(ML_sh5_32media_nofpu)$(ML_sh5_compact)$(ML_sh5_compact_nofpu)$(ML_sh5_64media)$(ML_sh5_64media_nofpu)
+DEFAULT_ENDIAN = $(word 1,$(TM_ENDIAN_CONFIG))
+OTHER_ENDIAN = $(word 2,$(TM_ENDIAN_CONFIG))
-MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) $(MULTILIB_CPUS:/=)
+MULTILIB_OPTIONS= $(OTHER_ENDIAN) $(TM_MULTILIB_CONFIG)
MULTILIB_DIRNAMES=
# The separate entries for m2a-nofpu and m2a-single-only with
@@ -58,7 +58,34 @@ MULTILIB_MATCHES = $(shell \
done)
# SH1 only supports big endian.
-MULTILIB_EXCEPTIONS = ml/m1 ml/m2a*
+MULTILIB_EXCEPTIONS = ml/m1 ml/m2a* $(TM_MULTILIB_EXCEPTIONS_CONFIG)
+
+MULTILIB_OSDIRNAMES = \
+ $(OTHER_ENDIAN)=!$(OTHER_ENDIAN) \
+ m1=!m1 $(OTHER_ENDIAN)/m1=!$(OTHER_ENDIAN)/m1 \
+ m2a=!m2a $(OTHER_ENDIAN)/m2a=!$(OTHER_ENDIAN)/m2a \
+ m2a-nofpu=!m2a-nofpu $(OTHER_ENDIAN)/m2a-nofpu=!$(OTHER_ENDIAN)/m2a-nofpu \
+ m2a-single-only=!m2a-single-only $(OTHER_ENDIAN)/m2a-single-only=!$(OTHER_ENDIAN)/m2a-single-only \
+ m2a-single=!m2a-single $(OTHER_ENDIAN)/m2a-single=!$(OTHER_ENDIAN)/m2a-single \
+ m2e=!m2e $(OTHER_ENDIAN)/m2e=!$(OTHER_ENDIAN)/m2e \
+ m2=!m2 $(OTHER_ENDIAN)/m2=!$(OTHER_ENDIAN)/m2 \
+ m3e=!m3e $(OTHER_ENDIAN)/m3e=!$(OTHER_ENDIAN)/m3e \
+ m3=!m3 $(OTHER_ENDIAN)/m3=!$(OTHER_ENDIAN)/m3 \
+ m4-nofpu=!m4-nofpu $(OTHER_ENDIAN)/m4-nofpu=!$(OTHER_ENDIAN)/m4-nofpu \
+ m4-single-only=!m4-single-only $(OTHER_ENDIAN)/m4-single-only=!$(OTHER_ENDIAN)/m4-single-only \
+ m4-single=!m4-single $(OTHER_ENDIAN)/m4-single=!$(OTHER_ENDIAN)/m4-single \
+ m4=!m4 $(OTHER_ENDIAN)/m4=!$(OTHER_ENDIAN)/m4 \
+ m4a-nofpu=!m4a-nofpu $(OTHER_ENDIAN)/m4a-nofpu=!$(OTHER_ENDIAN)/m4a-nofpu \
+ m4a-single-only=!m4a-single-only $(OTHER_ENDIAN)/m4a-single-only=!$(OTHER_ENDIAN)/m4a-single-only \
+ m4a-single=!m4a-single $(OTHER_ENDIAN)/m4a-single=!$(OTHER_ENDIAN)/m4a-single \
+ m4a=!m4a $(OTHER_ENDIAN)/m4a=!$(OTHER_ENDIAN)/m4a \
+ m4al=!m4al $(OTHER_ENDIAN)/m4al=!$(OTHER_ENDIAN)/m4al \
+ m5-32media=!m5-32media $(OTHER_ENDIAN)/m5-32media=!$(OTHER_ENDIAN)/m5-32media \
+ m5-32media-nofpu=!m5-32media-nofpu $(OTHER_ENDIAN)/m5-32media-nofpu=!$(OTHER_ENDIAN)/m5-32media-nofpu \
+ m5-compact=!m5-compact $(OTHER_ENDIAN)/m5-compact=!$(OTHER_ENDIAN)/m5-compact \
+ m5-compact-nofpu=!m5-compact-nofpu $(OTHER_ENDIAN)/m5-compact-nofpu=!$(OTHER_ENDIAN)/m5-compact-nofpu \
+ m5-64media=!m5-64media $(OTHER_ENDIAN)/m5-64media=!$(OTHER_ENDIAN)/m5-64media \
+ m5-64media-nofpu=!m5-64media-nofpu $(OTHER_ENDIAN)/m5-64media-nofpu=!$(OTHER_ENDIAN)/m5-64media-nofpu
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
diff --git a/gcc/configure b/gcc/configure
index ae1605fcfcc..755b0b8b5e4 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -458,7 +458,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines use_gcc_stdint c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC pluginlibs enable_plugin LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file TM_ENDIAN_CONFIG TM_MULTILIB_CONFIG TM_MULTILIB_EXCEPTIONS_CONFIG extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines use_gcc_stdint c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC pluginlibs enable_plugin LIBOBJS LTLIBOBJS'
ac_subst_files='language_hooks'
ac_pwd=`pwd`
@@ -1107,8 +1107,9 @@ Optional Packages:
use sysroot as the system root during the build
--with-sysroot=DIR Search for usr/lib, usr/include, et al, within DIR.
--with-pkgversion=PKG Use PKG in the version string in place of "plugins
- merged with rev 146095"
+ merged with rev 146369"
--with-bugurl=URL Direct users to URL to report a bug
+ --with-multilib-list Select multilibs (SH only)
--with-gnu-ld assume the C compiler uses GNU ld default=no
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
@@ -8070,7 +8071,7 @@ echo "$as_me: error: package version not specified" >&2;}
*) PKGVERSION="($withval) " ;;
esac
else
- PKGVERSION="(plugins merged with rev 146095) "
+ PKGVERSION="(plugins merged with rev 146369) "
fi;
@@ -8139,6 +8140,15 @@ fi;
+
+# Check whether --with-multilib-list or --without-multilib-list was given.
+if test "${with_multilib_list+set}" = set; then
+ withval="$with_multilib_list"
+ :
+else
+ with_multilib_list=default
+fi;
+
# -------------------------
# Checks for other programs
# -------------------------
@@ -14350,13 +14360,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:14353: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:14363: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:14356: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:14366: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:14359: output\"" >&5)
+ (eval echo "\"\$as_me:14369: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -15513,7 +15523,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 15516 "configure"' > conftest.$ac_ext
+ echo '#line 15526 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -16812,11 +16822,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16815: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16825: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16819: \$? = $ac_status" >&5
+ echo "$as_me:16829: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17151,11 +17161,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17154: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17164: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:17158: \$? = $ac_status" >&5
+ echo "$as_me:17168: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17256,11 +17266,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17259: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17269: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:17263: \$? = $ac_status" >&5
+ echo "$as_me:17273: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -17311,11 +17321,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17314: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17324: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:17318: \$? = $ac_status" >&5
+ echo "$as_me:17328: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -20123,7 +20133,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 20126 "configure"
+#line 20136 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -20219,7 +20229,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 20222 "configure"
+#line 20232 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -24648,6 +24658,9 @@ fi;
+
+
+
# Echo link setup.
if test x${build} = x${host} ; then
if test x${host} = x${target} ; then
@@ -25697,6 +25710,9 @@ s,@check_languages@,$check_languages,;t t
s,@cpp_install_dir@,$cpp_install_dir,;t t
s,@xmake_file@,$xmake_file,;t t
s,@tmake_file@,$tmake_file,;t t
+s,@TM_ENDIAN_CONFIG@,$TM_ENDIAN_CONFIG,;t t
+s,@TM_MULTILIB_CONFIG@,$TM_MULTILIB_CONFIG,;t t
+s,@TM_MULTILIB_EXCEPTIONS_CONFIG@,$TM_MULTILIB_EXCEPTIONS_CONFIG,;t t
s,@extra_gcc_objs@,$extra_gcc_objs,;t t
s,@extra_headers_list@,$extra_headers_list,;t t
s,@extra_objs@,$extra_objs,;t t
diff --git a/gcc/configure.ac b/gcc/configure.ac
index d10b2beb80a..889bbeb9499 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -780,7 +780,7 @@ esac],
[onestep=""])
AC_SUBST(onestep)
-ACX_PKGVERSION([plugins merged with rev 146095])
+ACX_PKGVERSION([plugins merged with rev 146369])
ACX_BUGURL([http://gcc.gnu.org/bugs.html])
# Sanity check enable_languages in case someone does not run the toplevel
@@ -810,6 +810,11 @@ AC_SUBST(datarootdir)
AC_SUBST(docdir)
AC_SUBST(htmldir)
+AC_ARG_WITH(multilib-list,
+[ --with-multilib-list Select multilibs (SH only)],
+:,
+with_multilib_list=default)
+
# -------------------------
# Checks for other programs
# -------------------------
@@ -3879,6 +3884,9 @@ AC_SUBST(check_languages)
AC_SUBST(cpp_install_dir)
AC_SUBST(xmake_file)
AC_SUBST(tmake_file)
+AC_SUBST(TM_ENDIAN_CONFIG)
+AC_SUBST(TM_MULTILIB_CONFIG)
+AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
AC_SUBST(extra_gcc_objs)
AC_SUBST(extra_headers_list)
AC_SUBST(extra_objs)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index aa0ef54e603..259aa8e7a9d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,33 @@
+2009-04-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR c/32061
+ PR c++/36954
+ * call.c (build_new_op): Save the original codes of operands
+ before folding.
+
+2009-04-18 Kazu Hirata <kazu@codesourcery.com>
+
+ * cp-tree.h: Remove the prototype for insert_block.
+ * decl.c (insert_block): Remove.
+
+2009-04-16 Ian Lance Taylor <iant@google.com>
+
+ * cp-tree.h (enum tsubst_flags): Rename from enum tsubst_flags_t.
+ (tsubst_flags_t): Change typedef from enum type to int.
+
+2009-04-16 Le-Chun Wu <lcwu@google.com>
+
+ * decl.c (check_initializer): Use TYPE_VECTOR_OPAQUE
+ instead of targetm.vector_opaque_p.
+
+2009-04-15 Le-Chun Wu <lcwu@google.com>
+
+ PR c++/39551
+ * call.c (build_over_call): Set TREE_NO_WARNING on the
+ compiler-generated INDIRECT_REF expression.
+ * cvt.c (convert_to_void): Emit warning when stripping off
+ INDIRECT_REF.
+
2009-04-14 Diego Novillo <dnovillo@google.com>
* parser.c (cp_parser_type_specifier_seq): Move call to
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index ef7c045acab..feb3004517f 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -3897,11 +3897,12 @@ build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
tree result = NULL_TREE;
bool result_valid_p = false;
enum tree_code code2 = NOP_EXPR;
+ enum tree_code code_orig_arg1 = ERROR_MARK;
+ enum tree_code code_orig_arg2 = ERROR_MARK;
conversion *conv;
void *p;
bool strict_p;
bool any_viable_p;
- bool expl_eq_arg1 = false;
if (error_operand_p (arg1)
|| error_operand_p (arg2)
@@ -3935,8 +3936,10 @@ build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
case TRUTH_ANDIF_EXPR:
case TRUTH_AND_EXPR:
case TRUTH_OR_EXPR:
- if (COMPARISON_CLASS_P (arg1))
- expl_eq_arg1 = true;
+ /* These are saved for the sake of warn_logical_operator. */
+ code_orig_arg1 = TREE_CODE (arg1);
+ code_orig_arg2 = TREE_CODE (arg2);
+
default:
break;
}
@@ -4140,8 +4143,16 @@ build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
if (conv->kind == ck_ref_bind)
conv = conv->u.next;
arg1 = convert_like (conv, arg1, complain);
+
if (arg2)
{
+ /* We need to call warn_logical_operator before
+ converting arg2 to a boolean_type. */
+ if (complain & tf_warning)
+ warn_logical_operator (input_location, code,
+ code_orig_arg1, arg1,
+ code_orig_arg2, arg2);
+
conv = cand->convs[1];
if (conv->kind == ck_ref_bind)
conv = conv->u.next;
@@ -4155,12 +4166,6 @@ build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
arg3 = convert_like (conv, arg3, complain);
}
- if (!expl_eq_arg1)
- {
- if (complain & tf_warning)
- warn_logical_operator (code, arg1, arg2);
- expl_eq_arg1 = true;
- }
}
}
@@ -4185,8 +4190,9 @@ build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
case TRUTH_ORIF_EXPR:
case TRUTH_AND_EXPR:
case TRUTH_OR_EXPR:
- if (!expl_eq_arg1)
- warn_logical_operator (code, arg1, arg2);
+ warn_logical_operator (input_location, code,
+ code_orig_arg1, arg1, code_orig_arg2, arg2);
+ /* Fall through. */
case PLUS_EXPR:
case MINUS_EXPR:
case MULT_EXPR:
@@ -5419,6 +5425,7 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
if (test)
t = build3 (COND_EXPR, TREE_TYPE (t), test, arg0, t);
val = cp_build_indirect_ref (t, 0, complain);
+ TREE_NO_WARNING (val) = 1;
}
return val;
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 849fdc736e4..6637d4f32b8 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -3566,7 +3566,7 @@ typedef enum linkage_kind {
} linkage_kind;
/* Bitmask flags to control type substitution. */
-typedef enum tsubst_flags_t {
+enum tsubst_flags {
tf_none = 0, /* nothing special */
tf_error = 1 << 0, /* give error messages */
tf_warning = 1 << 1, /* give warnings too */
@@ -3585,7 +3585,11 @@ typedef enum tsubst_flags_t {
when issuing other errors. */
/* Convenient substitution flags combinations. */
tf_warning_or_error = tf_warning | tf_error
-} tsubst_flags_t;
+};
+
+/* This type is used for parameters and variables which hold
+ combinations of the flags in enum tsubst_flags. */
+typedef int tsubst_flags_t;
/* The kind of checking we can do looking in a class hierarchy. */
typedef enum base_access {
@@ -4303,7 +4307,6 @@ extern void adjust_clone_args (tree);
/* decl.c */
extern tree poplevel (int, int, int);
-extern void insert_block (tree);
extern tree pushdecl (tree);
extern tree pushdecl_maybe_friend (tree, bool);
extern void cxx_init_decl_processing (void);
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index fed4ab2910c..5032f1c0391 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -870,7 +870,20 @@ convert_to_void (tree expr, const char *implicit, tsubst_flags_t complain)
implicit ? implicit : "void context");
}
if (is_reference || !is_volatile || !is_complete || TREE_ADDRESSABLE (type))
- expr = TREE_OPERAND (expr, 0);
+ {
+ /* Emit a warning (if enabled) when the "effect-less" INDIRECT_REF
+ operation is stripped off. Note that we don't warn about
+ - an expression with TREE_NO_WARNING set. (For an example of
+ such expressions, see build_over_call in call.c.)
+ - automatic dereferencing of references, since the user cannot
+ control it. (See also warn_if_unused_value() in stmt.c.) */
+ if (warn_unused_value
+ && (complain & tf_warning)
+ && !TREE_NO_WARNING (expr)
+ && !is_reference)
+ warning (OPT_Wunused_value, "value computed is not used");
+ expr = TREE_OPERAND (expr, 0);
+ }
break;
}
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 5ab9392849b..cd550f224cb 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -783,18 +783,6 @@ poplevel (int keep, int reverse, int functionbody)
POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, block);
}
-/* Insert BLOCK at the end of the list of subblocks of the
- current binding level. This is used when a BIND_EXPR is expanded,
- to handle the BLOCK node inside the BIND_EXPR. */
-
-void
-insert_block (tree block)
-{
- TREE_USED (block) = 1;
- current_binding_level->blocks
- = chainon (current_binding_level->blocks, block);
-}
-
/* Walk all the namespaces contained NAMESPACE, including NAMESPACE
itself, calling F for each. The DATA is passed to F as well. */
@@ -5157,7 +5145,7 @@ check_initializer (tree decl, tree init, int flags, tree *cleanup)
decl);
init = build_tree_list (NULL_TREE, init);
}
- else if ((*targetm.vector_opaque_p) (type))
+ else if (TREE_CODE (type) == VECTOR_TYPE && TYPE_VECTOR_OPAQUE (type))
{
error ("opaque vector types cannot be initialized");
init = error_mark_node;
@@ -8828,8 +8816,13 @@ grokdeclarator (const cp_declarator *declarator,
/* Replace the anonymous name with the real name everywhere. */
for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
- if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
- TYPE_NAME (t) = decl;
+ {
+ if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
+ {
+ debug_hooks->set_name (t, decl);
+ TYPE_NAME (t) = decl;
+ }
+ }
if (TYPE_LANG_SPECIFIC (type))
TYPE_WAS_ANONYMOUS (type) = 1;
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index babba15f8a5..c8bf30d69d6 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -376,6 +376,7 @@ const struct gcc_debug_hooks dbx_debug_hooks =
dbxout_handle_pch, /* handle_pch */
debug_nothing_rtx, /* var_location */
debug_nothing_void, /* switch_text_section */
+ debug_nothing_tree_tree, /* set_name */
0 /* start_end_main_source_file */
};
#endif /* DBX_DEBUGGING_INFO */
@@ -408,6 +409,7 @@ const struct gcc_debug_hooks xcoff_debug_hooks =
dbxout_handle_pch, /* handle_pch */
debug_nothing_rtx, /* var_location */
debug_nothing_void, /* switch_text_section */
+ debug_nothing_tree_tree, /* set_name */
0 /* start_end_main_source_file */
};
#endif /* XCOFF_DEBUGGING_INFO */
@@ -3593,7 +3595,7 @@ dbxout_block (tree block, int depth, tree args)
while (block)
{
/* Ignore blocks never expanded or otherwise marked as real. */
- if (TREE_ASM_WRITTEN (block))
+ if (TREE_USED (block) && TREE_ASM_WRITTEN (block))
{
int did_output;
int blocknum = BLOCK_NUMBER (block);
diff --git a/gcc/debug.c b/gcc/debug.c
index e0beaa94b08..3946debc519 100644
--- a/gcc/debug.c
+++ b/gcc/debug.c
@@ -50,6 +50,7 @@ const struct gcc_debug_hooks do_nothing_debug_hooks =
debug_nothing_int, /* handle_pch */
debug_nothing_rtx, /* var_location */
debug_nothing_void, /* switch_text_section */
+ debug_nothing_tree_tree, /* set_name */
0 /* start_end_main_source_file */
};
@@ -67,6 +68,12 @@ debug_nothing_tree (tree decl ATTRIBUTE_UNUSED)
}
void
+debug_nothing_tree_tree (tree t1 ATTRIBUTE_UNUSED,
+ tree t2 ATTRIBUTE_UNUSED)
+{
+}
+
+void
debug_nothing_tree_tree_tree_bool (tree t1 ATTRIBUTE_UNUSED,
tree t2 ATTRIBUTE_UNUSED,
tree t3 ATTRIBUTE_UNUSED,
diff --git a/gcc/debug.h b/gcc/debug.h
index e1ee12e829d..1169c51a66b 100644
--- a/gcc/debug.h
+++ b/gcc/debug.h
@@ -126,6 +126,8 @@ struct gcc_debug_hooks
text sections. */
void (* switch_text_section) (void);
+ void (* set_name) (tree, tree);
+
/* This is 1 if the debug writer wants to see start and end commands for the
main source files, and 0 otherwise. */
int start_end_main_source_file;
@@ -140,6 +142,7 @@ extern void debug_nothing_int_charstar (unsigned int, const char *);
extern void debug_nothing_int (unsigned int);
extern void debug_nothing_int_int (unsigned int, unsigned int);
extern void debug_nothing_tree (tree);
+extern void debug_nothing_tree_tree (tree, tree);
extern void debug_nothing_tree_int (tree, int);
extern void debug_nothing_tree_tree_tree_bool (tree, tree, tree, bool);
extern bool debug_true_const_tree (const_tree);
diff --git a/gcc/df-core.c b/gcc/df-core.c
index 7b83dce53f6..88f761b679a 100644
--- a/gcc/df-core.c
+++ b/gcc/df-core.c
@@ -1,6 +1,6 @@
/* Allocation for dataflow support routines.
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008 Free Software Foundation, Inc.
+ 2008, 2009 Free Software Foundation, Inc.
Originally contributed by Michael P. Hayes
(m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
Major rewrite contributed by Danny Berlin (dberlin@dberlin.org)
@@ -766,7 +766,7 @@ struct rtl_opt_pass pass_df_initialize_opt =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -793,7 +793,7 @@ struct rtl_opt_pass pass_df_initialize_no_opt =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -842,7 +842,7 @@ struct rtl_opt_pass pass_df_finish =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/df.h b/gcc/df.h
index 639c52157b4..fd4b6089b41 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. If not see
#include "bitmap.h"
#include "basic-block.h"
#include "alloc-pool.h"
+#include "timevar.h"
struct dataflow;
struct df;
@@ -275,7 +276,7 @@ struct df_problem {
struct df_problem *dependent_problem;
/* The timevar id associated with this pass. */
- unsigned int tv_id;
+ timevar_id_t tv_id;
/* True if the df_set_blocks should null out the basic block info if
this block drops out of df->blocks_to_analyze. */
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index e8b5628c0f1..4a7db02c902 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -6758,7 +6758,7 @@ This is an acceptable initializer even if @var{EXPRESSION} is not a
constant expression, including the case where
@code{__builtin_constant_p} returns 1 because @var{EXPRESSION} can be
folded to a constant but @var{EXPRESSION} contains operands that would
-not otherwize be permitted in a static initializer (for example,
+not otherwise be permitted in a static initializer (for example,
@code{0 && foo ()}). GCC must be more conservative about evaluating the
built-in in this case, because it has no opportunity to perform
optimization.
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 07b807b0e5d..7cba4d3df0e 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -983,6 +983,57 @@ sysv, aix.
@end table
+@item --with-multilib-list=@var{list}
+@itemx --without-multilib-list
+Specify what multilibs to build.
+Currently only implemented for sh*-*-*.
+
+@var{list} is a comma separated list of CPU names. These must be of the
+form @code{sh*} or @code{m*} (in which case they match the compiler option
+for that processor). The list should not contain any endian options -
+these are handled by @option{--with-endian}.
+
+If @var{list} is empty, then there will be no multilibs for extra
+processors. The multilib for the secondary endian remains enabled.
+
+As a special case, if an entry in the list starts with a @code{!}
+(exclamation point), then it is added to the list of excluded multilibs.
+Entries of this sort should be compatible with @samp{MULTILIB_EXCLUDES}
+(once the leading @code{!} has been stripped).
+
+If @option{--with-multilib-list} is not given, then a default set of
+multilibs is selected based on the value of @option{--target}. This is
+usually the complete set of libraries, but some targets imply a more
+specialized subset.
+
+Example 1: to configure a compiler for SH4A only, but supporting both
+endians, with little endian being the default:
+@smallexample
+--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
+@end smallexample
+
+Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
+only little endian SH4AL:
+@smallexample
+--with-cpu=sh4a --with-endian=little,big --with-multilib-list=sh4al,!mb/m4al
+@end smallexample
+
+@item --with-endian=@var{endians}
+Specify what endians to use.
+Currently only implemented for sh*-*-*.
+
+@var{endians} may be one of the following:
+@table @code
+@item big
+Use big endian exclusively.
+@item little
+Use little endian exclusively.
+@item big,little
+Use big endian by default. Provide a multilib for little endian.
+@item little,big
+Use little endian by default. Provide a multilib for big endian.
+@end table
+
@item --enable-threads
Specify that the target
supports threads. This affects the Objective-C compiler and runtime
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 554b6d93cad..e1dd0e0ad46 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -2758,6 +2758,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
-Warray-bounds @r{(only with} @option{-O2}@r{)} @gol
-Wc++0x-compat @gol
-Wchar-subscripts @gol
+-Wenum-compare @r{(in C/Objc; this is on by default in C++)} @gol
-Wimplicit-int @gol
-Wimplicit-function-declaration @gol
-Wcomment @gol
@@ -2803,6 +2804,7 @@ name is still supported, but the newer name is more descriptive.)
@gccoptlist{-Wclobbered @gol
-Wempty-body @gol
-Wignored-qualifiers @gol
+-Wlogical-op @gol
-Wmissing-field-initializers @gol
-Wmissing-parameter-type @r{(C only)} @gol
-Wold-style-declaration @r{(C only)} @gol
@@ -3743,11 +3745,12 @@ integers are disabled by default in C++ unless
Warn if an empty body occurs in an @samp{if}, @samp{else} or @samp{do
while} statement. This warning is also enabled by @option{-Wextra}.
-@item -Wenum-compare @r{(C++ and Objective-C++ only)}
+@item -Wenum-compare
@opindex Wenum-compare
@opindex Wno-enum-compare
-Warn about a comparison between values of different enum types. This
-warning is enabled by default.
+Warn about a comparison between values of different enum types. In C++
+this warning is enabled by default. In C this warning is enabled by
+@option{-Wall}.
@item -Wsign-compare
@opindex Wsign-compare
@@ -3788,7 +3791,8 @@ programmer intended to use @code{strcmp}. This warning is enabled by
@opindex Wno-logical-op
Warn about suspicious uses of logical operators in expressions.
This includes using logical operators in contexts where a
-bit-wise operator is likely to be expected.
+bit-wise operator is likely to be expected. This warning is enabled by
+@option{-Wextra}.
@item -Waggregate-return
@opindex Waggregate-return
@@ -15566,14 +15570,14 @@ This option is available for Cygwin and MinGW targets. It
specifies that a console application is to be generated, by
instructing the linker to set the PE header subsystem type
required for console applications.
-This is the default behaviour for Cygwin and MinGW targets.
+This is the default behavior for Cygwin and MinGW targets.
@item -mcygwin
@opindex mcygwin
This option is available for Cygwin targets. It specifies that
the Cygwin internal interface is to be used for predefined
preprocessor macros, C runtime libraries and related linker
-paths and options. For Cygwin targets this is the default behaviour.
+paths and options. For Cygwin targets this is the default behavior.
This option is deprecated and will be removed in a future release.
@item -mno-cygwin
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 0396a706cf7..5718eb9be67 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -750,10 +750,10 @@ This variable is declared in @file{options.h}, which is included before
any target-specific headers.
@end deftypevar
-@deftypevar {Target Hook} int TARGET_DEFAULT_TARGET_FLAGS
+@deftypevr {Target Hook} int TARGET_DEFAULT_TARGET_FLAGS
This variable specifies the initial value of @code{target_flags}.
Its default setting is 0.
-@end deftypevar
+@end deftypevr
@cindex optional hardware or system features
@cindex features, optional, in system conventions
@@ -1424,14 +1424,6 @@ floating-point arithmetic.
The default definition of this macro returns false for all sizes.
@end defmac
-@deftypefn {Target Hook} bool TARGET_VECTOR_OPAQUE_P (tree @var{type})
-This target hook should return @code{true} a vector is opaque. That
-is, if no cast is needed when copying a vector value of type
-@var{type} into another vector lvalue of the same size. Vector opaque
-types cannot be initialized. The default is that there are no such
-types.
-@end deftypefn
-
@deftypefn {Target Hook} bool TARGET_MS_BITFIELD_LAYOUT_P (tree @var{record_type})
This target hook returns @code{true} if bit-fields in the given
@var{record_type} are to be laid out following the rules of Microsoft
@@ -5680,18 +5672,18 @@ in order to make effective use of section anchors. It won't use
section anchors at all unless either @code{TARGET_MIN_ANCHOR_OFFSET}
or @code{TARGET_MAX_ANCHOR_OFFSET} is set to a nonzero value.
-@deftypevar {Target Hook} HOST_WIDE_INT TARGET_MIN_ANCHOR_OFFSET
+@deftypevr {Target Hook} HOST_WIDE_INT TARGET_MIN_ANCHOR_OFFSET
The minimum offset that should be applied to a section anchor.
On most targets, it should be the smallest offset that can be
applied to a base register while still giving a legitimate address
for every mode. The default value is 0.
-@end deftypevar
+@end deftypevr
-@deftypevar {Target Hook} HOST_WIDE_INT TARGET_MAX_ANCHOR_OFFSET
+@deftypevr {Target Hook} HOST_WIDE_INT TARGET_MAX_ANCHOR_OFFSET
Like @code{TARGET_MIN_ANCHOR_OFFSET}, but the maximum (inclusive)
offset that should be applied to section anchors. The default
value is 0.
-@end deftypevar
+@end deftypevr
@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_ANCHOR (rtx @var{x})
Write the assembly code to define section anchor @var{x}, which is a
@@ -6839,10 +6831,10 @@ Returns true if @var{exp} should be placed into a ``small data'' section.
The default version of this hook always returns false.
@end deftypefn
-@deftypevar {Target Hook} bool TARGET_HAVE_SRODATA_SECTION
+@deftypevr {Target Hook} bool TARGET_HAVE_SRODATA_SECTION
Contains the value true if the target places read-only
``small data'' into a separate section. The default value is false.
-@end deftypevar
+@end deftypevr
@deftypefn {Target Hook} bool TARGET_BINDS_LOCAL_P (tree @var{exp})
Returns true if @var{exp} names an object for which name resolution
@@ -6854,10 +6846,10 @@ for ELF, which has a looser model of global name binding than other
currently supported object file formats.
@end deftypefn
-@deftypevar {Target Hook} bool TARGET_HAVE_TLS
+@deftypevr {Target Hook} bool TARGET_HAVE_TLS
Contains the value true if the target supports thread-local storage.
The default value is false.
-@end deftypevar
+@end deftypevr
@node PIC
@@ -8498,10 +8490,10 @@ Define this macro if your target has ABI specified unwind tables. Usually
these will be output by @code{TARGET_UNWIND_EMIT}.
@end defmac
-@deftypevar {Target Hook} bool TARGET_UNWIND_TABLES_DEFAULT
+@deftypevr {Target Hook} bool TARGET_UNWIND_TABLES_DEFAULT
This variable should be set to @code{true} if the target ABI requires unwinding
tables even when exceptions are not used.
-@end deftypevar
+@end deftypevr
@defmac MUST_USE_SJLJ_EXCEPTIONS
This macro need only be defined if @code{DWARF2_UNWIND_INFO} is
@@ -8525,12 +8517,12 @@ minimum alignment otherwise. @xref{SDB and DWARF}. Only applicable if
the target supports DWARF 2 frame unwind information.
@end defmac
-@deftypevar {Target Hook} bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
+@deftypevr {Target Hook} bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
Contains the value true if the target should add a zero word onto the
end of a Dwarf-2 frame info section when used for exception handling.
Default value is false if @code{EH_FRAME_SECTION_NAME} is defined, and
true otherwise.
-@end deftypevar
+@end deftypevr
@deftypefn {Target Hook} rtx TARGET_DWARF_REGISTER_SPAN (rtx @var{reg})
Given a register, this hook should return a parallel of registers to
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 7d82c47679a..d4799b163b5 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -4549,6 +4549,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_set_name (tree, tree);
/* The debug hooks structure. */
@@ -4582,6 +4583,7 @@ const struct gcc_debug_hooks dwarf2_debug_hooks =
debug_nothing_int, /* handle_pch */
dwarf2out_var_location,
dwarf2out_switch_text_section,
+ dwarf2out_set_name,
1 /* start_end_main_source_file */
};
#endif
@@ -5929,12 +5931,9 @@ debug_str_eq (const void *x1, const void *x2)
(const char *)x2) == 0;
}
-/* Add a string attribute value to a DIE. */
-
-static inline void
-add_AT_string (dw_die_ref die, enum dwarf_attribute attr_kind, const char *str)
+static struct indirect_string_node *
+find_AT_string (const char *str)
{
- dw_attr_node attr;
struct indirect_string_node *node;
void **slot;
@@ -5955,6 +5954,18 @@ add_AT_string (dw_die_ref die, enum dwarf_attribute attr_kind, const char *str)
node = (struct indirect_string_node *) *slot;
node->refcount++;
+ return node;
+}
+
+/* Add a string attribute value to a DIE. */
+
+static inline void
+add_AT_string (dw_die_ref die, enum dwarf_attribute attr_kind, const char *str)
+{
+ dw_attr_node attr;
+ struct indirect_string_node *node;
+
+ node = find_AT_string (str);
attr.dw_attr = attr_kind;
attr.dw_attr_val.val_class = dw_val_class_str;
@@ -10889,21 +10900,22 @@ field_byte_offset (const_tree decl)
unsigned HOST_WIDE_INT type_size_in_bits;
type = field_type (decl);
+ type_size_in_bits = simple_type_size_in_bits (type);
+ type_align_in_bits = simple_type_align_in_bits (type);
+
field_size_tree = DECL_SIZE (decl);
/* The size could be unspecified if there was an error, or for
a flexible array member. */
- if (! field_size_tree)
+ if (!field_size_tree)
field_size_tree = bitsize_zero_node;
- /* If we don't know the size of the field, pretend it's a full word. */
+ /* If the size of the field is not constant, use the type size. */
if (host_integerp (field_size_tree, 1))
field_size_in_bits = tree_low_cst (field_size_tree, 1);
else
- field_size_in_bits = BITS_PER_WORD;
+ field_size_in_bits = type_size_in_bits;
- type_size_in_bits = simple_type_size_in_bits (type);
- type_align_in_bits = simple_type_align_in_bits (type);
decl_align_in_bits = simple_decl_align_in_bits (decl);
/* The GCC front-end doesn't make any attempt to keep track of the
@@ -15763,6 +15775,31 @@ maybe_emit_file (struct dwarf_file_data * fd)
return fd->emitted_number;
}
+/* Replace DW_AT_name for the decl with name. */
+
+static void
+dwarf2out_set_name (tree decl, tree name)
+{
+ dw_die_ref die;
+ dw_attr_ref attr;
+
+ die = TYPE_SYMTAB_DIE (decl);
+ if (!die)
+ return;
+
+ attr = get_AT (die, DW_AT_name);
+ if (attr)
+ {
+ struct indirect_string_node *node;
+
+ node = find_AT_string (dwarf2_name (name, 0));
+ /* replace the string. */
+ attr->dw_attr_val.v.val_str = node;
+ }
+
+ else
+ add_name_attribute (die, dwarf2_name (name, 0));
+}
/* 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. */
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 1f51e125f35..ffb658738d1 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -1858,17 +1858,6 @@ set_mem_attributes (rtx ref, tree t, int objectp)
set_mem_attributes_minus_bitpos (ref, t, objectp, 0);
}
-/* Set MEM to the decl that REG refers to. */
-
-void
-set_mem_attrs_from_reg (rtx mem, rtx reg)
-{
- MEM_ATTRS (mem)
- = get_mem_attrs (MEM_ALIAS_SET (mem), REG_EXPR (reg),
- GEN_INT (REG_OFFSET (reg)),
- MEM_SIZE (mem), MEM_ALIGN (mem), GET_MODE (mem));
-}
-
/* Set the alias set of MEM to SET. */
void
@@ -2392,7 +2381,7 @@ struct rtl_opt_pass pass_unshare_all_rtl =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/except.c b/gcc/except.c
index 37bc5bbf13c..bc3b8c495a2 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -114,119 +114,15 @@ static int sjlj_fc_personality_ofs;
static int sjlj_fc_lsda_ofs;
static int sjlj_fc_jbuf_ofs;
-/* Describes one exception region. */
-struct eh_region GTY(())
-{
- /* The immediately surrounding region. */
- struct eh_region *outer;
-
- /* The list of immediately contained regions. */
- struct eh_region *inner;
- struct eh_region *next_peer;
-
- /* An identifier for this region. */
- int region_number;
-
- /* When a region is deleted, its parents inherit the REG_EH_REGION
- numbers already assigned. */
- bitmap aka;
-
- /* Each region does exactly one thing. */
- enum eh_region_type
- {
- ERT_UNKNOWN = 0,
- ERT_CLEANUP,
- ERT_TRY,
- ERT_CATCH,
- ERT_ALLOWED_EXCEPTIONS,
- ERT_MUST_NOT_THROW,
- ERT_THROW
- } type;
-
- /* Holds the action to perform based on the preceding type. */
- union eh_region_u {
- /* A list of catch blocks, a surrounding try block,
- and the label for continuing after a catch. */
- struct eh_region_u_try {
- struct eh_region *eh_catch;
- struct eh_region *last_catch;
- } GTY ((tag ("ERT_TRY"))) eh_try;
-
- /* The list through the catch handlers, the list of type objects
- matched, and the list of associated filters. */
- struct eh_region_u_catch {
- struct eh_region *next_catch;
- struct eh_region *prev_catch;
- tree type_list;
- tree filter_list;
- } GTY ((tag ("ERT_CATCH"))) eh_catch;
-
- /* A tree_list of allowed types. */
- struct eh_region_u_allowed {
- tree type_list;
- int filter;
- } GTY ((tag ("ERT_ALLOWED_EXCEPTIONS"))) allowed;
-
- /* The type given by a call to "throw foo();", or discovered
- for a throw. */
- struct eh_region_u_throw {
- tree type;
- } GTY ((tag ("ERT_THROW"))) eh_throw;
-
- /* Retain the cleanup expression even after expansion so that
- we can match up fixup regions. */
- struct eh_region_u_cleanup {
- struct eh_region *prev_try;
- } GTY ((tag ("ERT_CLEANUP"))) cleanup;
- } GTY ((desc ("%0.type"))) u;
-
- /* Entry point for this region's handler before landing pads are built. */
- rtx label;
- tree tree_label;
-
- /* Entry point for this region's handler from the runtime eh library. */
- rtx landing_pad;
-
- /* Entry point for this region's handler from an inner region. */
- rtx post_landing_pad;
-
- /* The RESX insn for handing off control to the next outermost handler,
- if appropriate. */
- rtx resume;
-
- /* True if something in this region may throw. */
- unsigned may_contain_throw : 1;
-};
-
-typedef struct eh_region *eh_region;
struct call_site_record GTY(())
{
rtx landing_pad;
int action;
};
-
-DEF_VEC_P(eh_region);
-DEF_VEC_ALLOC_P(eh_region, gc);
-DEF_VEC_ALLOC_P(eh_region, heap);
-
-/* Used to save exception status for each function. */
-struct eh_status GTY(())
-{
- /* The tree of all regions for this function. */
- struct eh_region *region_tree;
-
- /* The same information as an indexable array. */
- VEC(eh_region,gc) *region_array;
- int last_region_number;
-
- htab_t GTY((param_is (struct throw_stmt_node))) throw_stmt_table;
-};
static int t2r_eq (const void *, const void *);
static hashval_t t2r_hash (const void *);
-static void add_type_for_runtime (tree);
-static tree lookup_type_for_runtime (tree);
static int ttypes_filter_eq (const void *, const void *);
static hashval_t ttypes_filter_hash (const void *);
@@ -1224,32 +1120,6 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map,
return eh_offset;
}
-/* Return true if REGION_A is outer to REGION_B in IFUN. */
-
-bool
-eh_region_outer_p (struct function *ifun, int region_a, int region_b)
-{
- struct eh_region *rp_a, *rp_b;
-
- gcc_assert (ifun->eh->last_region_number > 0);
- gcc_assert (ifun->eh->region_tree);
-
- rp_a = VEC_index (eh_region, ifun->eh->region_array, region_a);
- rp_b = VEC_index (eh_region, ifun->eh->region_array, region_b);
- gcc_assert (rp_a != NULL);
- gcc_assert (rp_b != NULL);
-
- do
- {
- if (rp_a == rp_b)
- return true;
- rp_b = rp_b->outer;
- }
- while (rp_b);
-
- return false;
-}
-
/* Return region number of region that is outer to both if REGION_A and
REGION_B in IFUN. */
@@ -1308,7 +1178,7 @@ t2r_hash (const void *pentry)
return TREE_HASH (TREE_PURPOSE (entry));
}
-static void
+void
add_type_for_runtime (tree type)
{
tree *slot;
@@ -1322,7 +1192,7 @@ add_type_for_runtime (tree type)
}
}
-static tree
+tree
lookup_type_for_runtime (tree type)
{
tree *slot;
@@ -2976,6 +2846,10 @@ set_nothrow_function_flags (void)
(current_function_decl))
>= AVAIL_AVAILABLE))
{
+ struct cgraph_node *node = cgraph_node (current_function_decl);
+ struct cgraph_edge *e;
+ for (e = node->callers; e; e = e->next_caller)
+ e->can_throw_external = false;
TREE_NOTHROW (current_function_decl) = 1;
if (dump_file)
@@ -2995,7 +2869,7 @@ struct rtl_opt_pass pass_set_nothrow_function_flags =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -3517,7 +3391,7 @@ struct rtl_opt_pass pass_convert_to_eh_region_ranges =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -4092,6 +3966,15 @@ dump_eh_tree (FILE * out, struct function *fun)
}
}
+/* Dump the EH tree for FN on stderr. */
+
+void
+debug_eh_tree (struct function *fn)
+{
+ dump_eh_tree (stderr, fn);
+}
+
+
/* Verify EH region invariants. */
static bool
diff --git a/gcc/except.h b/gcc/except.h
index 24611a559c3..18c36b01987 100644
--- a/gcc/except.h
+++ b/gcc/except.h
@@ -24,12 +24,109 @@ along with GCC; see the file COPYING3. If not see
struct function;
-/* Per-function EH data. Used only in except.c, but GC and others
- manipulate pointers to the opaque type. */
-struct eh_status;
+/* Describes one exception region. */
+struct eh_region GTY(())
+{
+ /* The immediately surrounding region. */
+ struct eh_region *outer;
+
+ /* The list of immediately contained regions. */
+ struct eh_region *inner;
+ struct eh_region *next_peer;
+
+ /* An identifier for this region. */
+ int region_number;
+
+ /* When a region is deleted, its parents inherit the REG_EH_REGION
+ numbers already assigned. */
+ bitmap aka;
+
+ /* Each region does exactly one thing. */
+ enum eh_region_type
+ {
+ ERT_UNKNOWN = 0,
+ ERT_CLEANUP,
+ ERT_TRY,
+ ERT_CATCH,
+ ERT_ALLOWED_EXCEPTIONS,
+ ERT_MUST_NOT_THROW,
+ ERT_THROW
+ } type;
+
+ /* Holds the action to perform based on the preceding type. */
+ union eh_region_u {
+ /* A list of catch blocks, a surrounding try block,
+ and the label for continuing after a catch. */
+ struct eh_region_u_try {
+ struct eh_region *eh_catch;
+ struct eh_region *last_catch;
+ } GTY ((tag ("ERT_TRY"))) eh_try;
+
+ /* The list through the catch handlers, the list of type objects
+ matched, and the list of associated filters. */
+ struct eh_region_u_catch {
+ struct eh_region *next_catch;
+ struct eh_region *prev_catch;
+ tree type_list;
+ tree filter_list;
+ } GTY ((tag ("ERT_CATCH"))) eh_catch;
+
+ /* A tree_list of allowed types. */
+ struct eh_region_u_allowed {
+ tree type_list;
+ int filter;
+ } GTY ((tag ("ERT_ALLOWED_EXCEPTIONS"))) allowed;
+
+ /* The type given by a call to "throw foo();", or discovered
+ for a throw. */
+ struct eh_region_u_throw {
+ tree type;
+ } GTY ((tag ("ERT_THROW"))) eh_throw;
+
+ /* Retain the cleanup expression even after expansion so that
+ we can match up fixup regions. */
+ struct eh_region_u_cleanup {
+ struct eh_region *prev_try;
+ } GTY ((tag ("ERT_CLEANUP"))) cleanup;
+ } GTY ((desc ("%0.type"))) u;
+
+ /* Entry point for this region's handler before landing pads are built. */
+ rtx label;
+ tree tree_label;
+
+ /* Entry point for this region's handler from the runtime eh library. */
+ rtx landing_pad;
+
+ /* Entry point for this region's handler from an inner region. */
+ rtx post_landing_pad;
+
+ /* The RESX insn for handing off control to the next outermost handler,
+ if appropriate. */
+ rtx resume;
+
+ /* True if something in this region may throw. */
+ unsigned may_contain_throw : 1;
+};
+
+typedef struct eh_region *eh_region;
+DEF_VEC_P(eh_region);
+DEF_VEC_ALLOC_P(eh_region, gc);
+DEF_VEC_ALLOC_P(eh_region, heap);
+
+/* Per-function EH data. Used to save exception status for each
+ function. */
+struct eh_status GTY(())
+{
+ /* The tree of all regions for this function. */
+ struct eh_region *region_tree;
+
+ /* The same information as an indexable array. */
+ VEC(eh_region,gc) *region_array;
+ int last_region_number;
+
+ htab_t GTY((param_is (struct throw_stmt_node))) throw_stmt_table;
+};
-/* Internal structure describing a region. */
-struct eh_region;
/* Test: is exception handling turned on? */
extern int doing_eh (int);
@@ -108,8 +205,10 @@ extern void collect_eh_region_array (void);
extern void expand_resx_expr (tree);
extern void verify_eh_tree (struct function *);
extern void dump_eh_tree (FILE *, struct function *);
-extern bool eh_region_outer_p (struct function *, int, int);
+void debug_eh_tree (struct function *);
extern int eh_region_outermost (struct function *, int, int);
+extern void add_type_for_runtime (tree);
+extern tree lookup_type_for_runtime (tree);
/* If non-NULL, this is a function that returns an expression to be
executed if an unhandled exception is propagated out of a cleanup
diff --git a/gcc/final.c b/gcc/final.c
index 32d6b74e8f1..621bc28bcb1 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -1,6 +1,6 @@
/* Convert RTL to assembler code and output it, for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -801,7 +801,7 @@ struct rtl_opt_pass pass_compute_alignments =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -4356,4 +4356,3 @@ struct rtl_opt_pass pass_clean_state =
0 /* todo_flags_finish */
}
};
-
diff --git a/gcc/function.c b/gcc/function.c
index e8d99015e4d..3809770a0d3 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -1813,7 +1813,7 @@ struct rtl_opt_pass pass_instantiate_virtual_regs =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -4223,7 +4223,7 @@ struct rtl_opt_pass pass_init_function =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -5340,13 +5340,6 @@ current_function_name (void)
{
return lang_hooks.decl_printable_name (cfun->decl, 2);
}
-
-/* Returns the raw (mangled) name of the current function. */
-const char *
-current_function_assembler_name (void)
-{
- return IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (cfun->decl));
-}
static unsigned int
@@ -5397,7 +5390,7 @@ struct rtl_opt_pass pass_leaf_regs =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -5632,7 +5625,7 @@ struct rtl_opt_pass pass_match_asm_constraints =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/function.h b/gcc/function.h
index 5bee64b153f..77b1ae813c0 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -677,8 +677,6 @@ extern rtx get_arg_pointer_save_area (void);
/* Returns the name of the current function. */
extern const char *current_function_name (void);
-/* Returns the assembler name (raw, mangled) of the current function. */
-extern const char *current_function_assembler_name (void);
extern void do_warn_unused_parameter (tree);
diff --git a/gcc/gcc-plugin.h b/gcc/gcc-plugin.h
index 6865566472f..543dc933742 100644
--- a/gcc/gcc-plugin.h
+++ b/gcc/gcc-plugin.h
@@ -67,22 +67,42 @@ struct plugin_info
const char *help;
};
+/* Represents the gcc version. Used to avoid using an incompatible plugin. */
+
+struct plugin_gcc_version
+{
+ const char *basever;
+ const char *datestamp;
+ const char *devphase;
+ const char *revision;
+ const char *configuration_arguments;
+};
+
+extern struct plugin_gcc_version plugin_gcc_version;
+
+/* The default version check. Compares every field in VERSION. */
+
+extern bool plugin_default_version_check(struct plugin_gcc_version *version);
+
/* Function type for the plugin initialization routine. Each plugin module
should define this as an externally-visible function with name
"plugin_init."
PLUGIN_NAME - name of the plugin (useful for error reporting)
+ VERSION - the plugin_gcc_version symbol of the plugin itself.
ARGC - the size of the ARGV array
ARGV - an array of key-value argument pair
Returns 0 if initialization finishes successfully. */
typedef int (*plugin_init_func) (const char *plugin_name,
+ struct plugin_gcc_version *version,
int argc, struct plugin_argument *argv);
/* Declaration for "plugin_init" function so that it doesn't need to be
duplicated in every plugin. */
-extern int plugin_init (const char *, int, struct plugin_argument *);
+extern int plugin_init (const char *, struct plugin_gcc_version *version,
+ int, struct plugin_argument *);
/* Function type for a plugin callback routine.
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 03ea001f6be..53325b23f39 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -3662,9 +3662,9 @@ process_command (int argc, const char **argv)
/* CPP driver cannot obtain switch from cc1_options. */
if (is_cpp_driver)
- add_preprocessor_option ("--version", strlen("--version"));
- add_assembler_option ("--version", strlen("--version"));
- add_linker_option ("--version", strlen("--version"));
+ add_preprocessor_option ("--version", strlen ("--version"));
+ add_assembler_option ("--version", strlen ("--version"));
+ add_linker_option ("--version", strlen ("--version"));
}
else if (strcmp (argv[i], "-fhelp") == 0)
{
@@ -4741,6 +4741,49 @@ spec_path (char *path, void *data)
return NULL;
}
+/* Create a temporary FILE with the contents of ARGV. Add @FILE to the
+ argument list. */
+
+static void
+create_at_file (char **argv)
+{
+ char *temp_file = make_temp_file ("");
+ char *at_argument = concat ("@", temp_file, NULL);
+ FILE *f = fopen (temp_file, "w");
+ int status;
+
+ if (f == NULL)
+ fatal ("could not open temporary response file %s",
+ temp_file);
+
+ status = writeargv (argv, f);
+
+ if (status)
+ fatal ("could not write to temporary response file %s",
+ temp_file);
+
+ status = fclose (f);
+
+ if (EOF == status)
+ fatal ("could not close temporary response file %s",
+ temp_file);
+
+ store_arg (at_argument, 0, 0);
+
+ record_temp_file (temp_file, !save_temps_flag, !save_temps_flag);
+}
+
+/* True if we should compile INFILE. */
+
+static bool
+compile_input_file_p (struct infile *infile)
+{
+ if ((!infile->language) || (infile->language[0] != '*'))
+ if (infile->incompiler == input_file_compiler)
+ return true;
+ return false;
+}
+
/* Process the sub-spec SPEC as a portion of a larger spec.
This is like processing a whole spec except that we do
not initialize at the beginning and we do not supply a
@@ -5107,9 +5150,37 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
case 'i':
if (combine_inputs)
{
- for (i = 0; (int) i < n_infiles; i++)
- if ((!infiles[i].language) || (infiles[i].language[0] != '*'))
- if (infiles[i].incompiler == input_file_compiler)
+ if (at_file_supplied)
+ {
+ /* We are going to expand `%i' to `@FILE', where FILE
+ is a newly-created temporary filename. The filenames
+ that would usually be expanded in place of %o will be
+ written to the temporary file. */
+ char **argv;
+ int n_files = 0;
+ int j;
+
+ for (i = 0; i < n_infiles; i++)
+ if (compile_input_file_p (&infiles[i]))
+ n_files++;
+
+ argv = (char **) alloca (sizeof (char *) * (n_files + 1));
+
+ /* Copy the strings over. */
+ for (i = 0, j = 0; i < n_infiles; i++)
+ if (compile_input_file_p (&infiles[i]))
+ {
+ argv[j] = CONST_CAST (char *, infiles[i].name);
+ infiles[i].compiled = true;
+ j++;
+ }
+ argv[j] = NULL;
+
+ create_at_file (argv);
+ }
+ else
+ for (i = 0; (int) i < n_infiles; i++)
+ if (compile_input_file_p (&infiles[i]))
{
store_arg (infiles[i].name, 0, 0);
infiles[i].compiled = true;
@@ -5187,14 +5258,8 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
that would usually be expanded in place of %o will be
written to the temporary file. */
- char *temp_file = make_temp_file ("");
- char *at_argument;
char **argv;
- int n_files, j, status;
- FILE *f;
-
- at_argument = concat ("@", temp_file, NULL);
- store_arg (at_argument, 0, 0);
+ int n_files, j;
/* Convert OUTFILES into a form suitable for writeargv. */
@@ -5213,25 +5278,7 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
}
argv[j] = NULL;
- f = fopen (temp_file, "w");
-
- if (f == NULL)
- fatal ("could not open temporary response file %s",
- temp_file);
-
- status = writeargv (argv, f);
-
- if (status)
- fatal ("could not write to temporary response file %s",
- temp_file);
-
- status = fclose (f);
-
- if (EOF == status)
- fatal ("could not close temporary response file %s",
- temp_file);
-
- record_temp_file (temp_file, !save_temps_flag, !save_temps_flag);
+ create_at_file (argv);
}
else
for (i = 0; i < max; i++)
diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c
index fecc667f6b9..71ab1b1e44c 100644
--- a/gcc/gimple-low.c
+++ b/gcc/gimple-low.c
@@ -1,6 +1,6 @@
/* GIMPLE lowering pass. Converts High GIMPLE into Low GIMPLE.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -209,7 +209,7 @@ struct gimple_opt_pass pass_lower_cf =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_gimple_any, /* properties_required */
PROP_gimple_lcf, /* properties_provided */
0, /* properties_destroyed */
@@ -950,7 +950,7 @@ struct gimple_opt_pass pass_mark_used_blocks =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 4d05c983e9d..a91e83a99d4 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -2195,16 +2195,11 @@ gimple_copy (gimple stmt)
for (i = 0; i < num_ops; i++)
gimple_set_op (copy, i, unshare_expr (gimple_op (stmt, i)));
- /* Clear out SSA operand vectors on COPY. Note that we cannot
- call the API functions for setting addresses_taken, stores
- and loads. These functions free the previous values, and we
- cannot do that on COPY as it will affect the original
- statement. */
+ /* Clear out SSA operand vectors on COPY. */
if (gimple_has_ops (stmt))
{
gimple_set_def_ops (copy, NULL);
gimple_set_use_ops (copy, NULL);
- copy->gsops.opbase.addresses_taken = NULL;
}
if (gimple_has_mem_ops (stmt))
@@ -3194,4 +3189,230 @@ count_uses_and_derefs (tree ptr, gimple stmt, unsigned *num_uses_p,
gcc_assert (*num_uses_p >= *num_loads_p + *num_stores_p);
}
+/* From a tree operand OP return the base of a load or store operation
+ or NULL_TREE if OP is not a load or a store. */
+
+static tree
+get_base_loadstore (tree op)
+{
+ while (handled_component_p (op))
+ op = TREE_OPERAND (op, 0);
+ if (DECL_P (op)
+ || INDIRECT_REF_P (op)
+ || TREE_CODE (op) == TARGET_MEM_REF)
+ return op;
+ return NULL_TREE;
+}
+
+/* For the statement STMT call the callbacks VISIT_LOAD, VISIT_STORE and
+ VISIT_ADDR if non-NULL on loads, store and address-taken operands
+ passing the STMT, the base of the operand and DATA to it. The base
+ will be either a decl, an indirect reference (including TARGET_MEM_REF)
+ or the argument of an address expression.
+ Returns the results of these callbacks or'ed. */
+
+bool
+walk_stmt_load_store_addr_ops (gimple stmt, void *data,
+ bool (*visit_load)(gimple, tree, void *),
+ bool (*visit_store)(gimple, tree, void *),
+ bool (*visit_addr)(gimple, tree, void *))
+{
+ bool ret = false;
+ unsigned i;
+ if (gimple_assign_single_p (stmt))
+ {
+ tree lhs, rhs;
+ if (visit_store)
+ {
+ lhs = get_base_loadstore (gimple_assign_lhs (stmt));
+ if (lhs)
+ ret |= visit_store (stmt, lhs, data);
+ }
+ rhs = gimple_assign_rhs1 (stmt);
+ if (visit_addr)
+ {
+ if (TREE_CODE (rhs) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (rhs, 0), data);
+ else if (TREE_CODE (rhs) == TARGET_MEM_REF
+ && TREE_CODE (TMR_BASE (rhs)) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (TMR_BASE (rhs), 0), data);
+ else if (TREE_CODE (rhs) == OBJ_TYPE_REF
+ && TREE_CODE (OBJ_TYPE_REF_OBJECT (rhs)) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (OBJ_TYPE_REF_OBJECT (rhs),
+ 0), data);
+ }
+ if (visit_load)
+ {
+ rhs = get_base_loadstore (rhs);
+ if (rhs)
+ ret |= visit_load (stmt, rhs, data);
+ }
+ }
+ else if (visit_addr
+ && (is_gimple_assign (stmt)
+ || gimple_code (stmt) == GIMPLE_COND
+ || gimple_code (stmt) == GIMPLE_CHANGE_DYNAMIC_TYPE))
+ {
+ for (i = 0; i < gimple_num_ops (stmt); ++i)
+ if (gimple_op (stmt, i)
+ && TREE_CODE (gimple_op (stmt, i)) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (gimple_op (stmt, i), 0), data);
+ }
+ else if (is_gimple_call (stmt))
+ {
+ if (visit_store)
+ {
+ tree lhs = gimple_call_lhs (stmt);
+ if (lhs)
+ {
+ lhs = get_base_loadstore (lhs);
+ if (lhs)
+ ret |= visit_store (stmt, lhs, data);
+ }
+ }
+ if (visit_load || visit_addr)
+ for (i = 0; i < gimple_call_num_args (stmt); ++i)
+ {
+ tree rhs = gimple_call_arg (stmt, i);
+ if (visit_addr
+ && TREE_CODE (rhs) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (rhs, 0), data);
+ else if (visit_load)
+ {
+ rhs = get_base_loadstore (rhs);
+ if (rhs)
+ ret |= visit_load (stmt, rhs, data);
+ }
+ }
+ if (visit_addr
+ && gimple_call_chain (stmt)
+ && TREE_CODE (gimple_call_chain (stmt)) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (gimple_call_chain (stmt), 0),
+ data);
+ }
+ else if (gimple_code (stmt) == GIMPLE_ASM)
+ {
+ unsigned noutputs;
+ const char *constraint;
+ const char **oconstraints;
+ bool allows_mem, allows_reg, is_inout;
+ noutputs = gimple_asm_noutputs (stmt);
+ oconstraints = XALLOCAVEC (const char *, noutputs);
+ if (visit_store || visit_addr)
+ for (i = 0; i < gimple_asm_noutputs (stmt); ++i)
+ {
+ tree link = gimple_asm_output_op (stmt, i);
+ tree op = get_base_loadstore (TREE_VALUE (link));
+ if (op && visit_store)
+ ret |= visit_store (stmt, op, data);
+ if (visit_addr)
+ {
+ constraint = TREE_STRING_POINTER
+ (TREE_VALUE (TREE_PURPOSE (link)));
+ oconstraints[i] = constraint;
+ parse_output_constraint (&constraint, i, 0, 0, &allows_mem,
+ &allows_reg, &is_inout);
+ if (op && !allows_reg && allows_mem)
+ ret |= visit_addr (stmt, op, data);
+ }
+ }
+ if (visit_load || visit_addr)
+ for (i = 0; i < gimple_asm_ninputs (stmt); ++i)
+ {
+ tree link = gimple_asm_input_op (stmt, i);
+ tree op = TREE_VALUE (link);
+ if (visit_addr
+ && TREE_CODE (op) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
+ else if (visit_load || visit_addr)
+ {
+ op = get_base_loadstore (op);
+ if (op)
+ {
+ if (visit_load)
+ ret |= visit_load (stmt, op, data);
+ if (visit_addr)
+ {
+ constraint = TREE_STRING_POINTER
+ (TREE_VALUE (TREE_PURPOSE (link)));
+ parse_input_constraint (&constraint, 0, 0, noutputs,
+ 0, oconstraints,
+ &allows_mem, &allows_reg);
+ if (!allows_reg && allows_mem)
+ ret |= visit_addr (stmt, op, data);
+ }
+ }
+ }
+ }
+ }
+ else if (gimple_code (stmt) == GIMPLE_RETURN)
+ {
+ tree op = gimple_return_retval (stmt);
+ if (op)
+ {
+ if (visit_addr
+ && TREE_CODE (op) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
+ else if (visit_load)
+ {
+ op = get_base_loadstore (op);
+ if (op)
+ ret |= visit_load (stmt, op, data);
+ }
+ }
+ }
+ else if (visit_addr
+ && gimple_code (stmt) == GIMPLE_PHI)
+ {
+ for (i = 0; i < gimple_phi_num_args (stmt); ++i)
+ {
+ tree op = PHI_ARG_DEF (stmt, i);
+ if (TREE_CODE (op) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
+ }
+ }
+
+ return ret;
+}
+
+/* Like walk_stmt_load_store_addr_ops but with NULL visit_addr. IPA-CP
+ should make a faster clone for this case. */
+
+bool
+walk_stmt_load_store_ops (gimple stmt, void *data,
+ bool (*visit_load)(gimple, tree, void *),
+ bool (*visit_store)(gimple, tree, void *))
+{
+ return walk_stmt_load_store_addr_ops (stmt, data,
+ visit_load, visit_store, NULL);
+}
+
+/* Helper for gimple_ior_addresses_taken_1. */
+
+static bool
+gimple_ior_addresses_taken_1 (gimple stmt ATTRIBUTE_UNUSED,
+ tree addr, void *data)
+{
+ bitmap addresses_taken = (bitmap)data;
+ while (handled_component_p (addr))
+ addr = TREE_OPERAND (addr, 0);
+ if (DECL_P (addr))
+ {
+ bitmap_set_bit (addresses_taken, DECL_UID (addr));
+ return true;
+ }
+ return false;
+}
+
+/* Set the bit for the uid of all decls that have their address taken
+ in STMT in the ADDRESSES_TAKEN bitmap. Returns true if there
+ were any in this stmt. */
+
+bool
+gimple_ior_addresses_taken (bitmap addresses_taken, gimple stmt)
+{
+ return walk_stmt_load_store_addr_ops (stmt, addresses_taken, NULL, NULL,
+ gimple_ior_addresses_taken_1);
+}
+
#include "gt-gimple.h"
diff --git a/gcc/gimple.h b/gcc/gimple.h
index dde7f942e16..2d5ee0fd9b4 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -327,15 +327,10 @@ struct gimple_statement_base GTY(())
struct gimple_statement_with_ops_base GTY(())
{
- /* [ WORD 1-4 ] */
+ /* [ WORD 1-4 ] */
struct gimple_statement_base gsbase;
- /* [ WORD 5 ]
- Symbols whose addresses are taken by this statement (i.e., they
- appear inside ADDR_EXPR nodes). */
- bitmap GTY((skip (""))) addresses_taken;
-
- /* [ WORD 6-7 ]
+ /* [ WORD 5-6 ]
SSA operand vectors. NOTE: It should be possible to
amalgamate these vectors with the operand vector OP. However,
the SSA operand vectors are organized differently and contain
@@ -349,10 +344,10 @@ struct gimple_statement_with_ops_base GTY(())
struct gimple_statement_with_ops GTY(())
{
- /* [ WORD 1-7 ] */
+ /* [ WORD 1-6 ] */
struct gimple_statement_with_ops_base opbase;
- /* [ WORD 8 ]
+ /* [ WORD 7 ]
Operand vector. NOTE! This must always be the last field
of this structure. In particular, this means that this
structure cannot be embedded inside another one. */
@@ -364,10 +359,10 @@ struct gimple_statement_with_ops GTY(())
struct gimple_statement_with_memory_ops_base GTY(())
{
- /* [ WORD 1-7 ] */
+ /* [ WORD 1-6 ] */
struct gimple_statement_with_ops_base opbase;
- /* [ WORD 8-9 ]
+ /* [ WORD 7-8 ]
Virtual operands for this statement. The GC will pick them
up via the ssa_names array. */
tree GTY((skip (""))) vdef;
@@ -379,10 +374,10 @@ struct gimple_statement_with_memory_ops_base GTY(())
struct gimple_statement_with_memory_ops GTY(())
{
- /* [ WORD 1-9 ] */
+ /* [ WORD 1-8 ] */
struct gimple_statement_with_memory_ops_base membase;
- /* [ WORD 10 ]
+ /* [ WORD 9 ]
Operand vector. NOTE! This must always be the last field
of this structure. In particular, this means that this
structure cannot be embedded inside another one. */
@@ -545,20 +540,20 @@ struct gimple_statement_wce GTY(())
struct gimple_statement_asm GTY(())
{
- /* [ WORD 1-9 ] */
+ /* [ WORD 1-8 ] */
struct gimple_statement_with_memory_ops_base membase;
- /* [ WORD 10 ]
+ /* [ WORD 9 ]
__asm__ statement. */
const char *string;
- /* [ WORD 11 ]
+ /* [ WORD 10 ]
Number of inputs, outputs and clobbers. */
unsigned char ni;
unsigned char no;
unsigned short nc;
- /* [ WORD 12 ]
+ /* [ WORD 11 ]
Operand vector. NOTE! This must always be the last field
of this structure. In particular, this means that this
structure cannot be embedded inside another one. */
@@ -909,6 +904,14 @@ extern tree get_call_expr_in (tree t);
extern void recalculate_side_effects (tree);
extern void count_uses_and_derefs (tree, gimple, unsigned *, unsigned *,
unsigned *);
+extern bool walk_stmt_load_store_addr_ops (gimple, void *,
+ bool (*)(gimple, tree, void *),
+ bool (*)(gimple, tree, void *),
+ bool (*)(gimple, tree, void *));
+extern bool walk_stmt_load_store_ops (gimple, void *,
+ bool (*)(gimple, tree, void *),
+ bool (*)(gimple, tree, void *));
+extern bool gimple_ior_addresses_taken (bitmap, gimple);
/* In gimplify.c */
extern tree create_tmp_var_raw (tree, const char *);
@@ -1235,41 +1238,6 @@ gimple_has_mem_ops (const_gimple g)
return gimple_code (g) >= GIMPLE_ASSIGN && gimple_code (g) <= GIMPLE_RETURN;
}
-/* Return the set of addresses taken by statement G. */
-
-static inline bitmap
-gimple_addresses_taken (const_gimple g)
-{
- if (gimple_has_ops (g))
- return g->gsops.opbase.addresses_taken;
- else
- return NULL;
-}
-
-
-/* Return a pointer to the set of addresses taken by statement G. */
-
-static inline bitmap *
-gimple_addresses_taken_ptr (gimple g)
-{
- if (gimple_has_ops (g))
- return &g->gsops.opbase.addresses_taken;
- else
- return NULL;
-}
-
-
-/* Set B to be the set of addresses taken by statement G. The
- previous set is freed. */
-
-static inline void
-gimple_set_addresses_taken (gimple g, bitmap b)
-{
- gcc_assert (gimple_has_ops (g));
- BITMAP_FREE (g->gsops.opbase.addresses_taken);
- g->gsops.opbase.addresses_taken = b;
-}
-
/* Return the set of DEF operands for statement G. */
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 09dc233c253..60aeac3a55f 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -1,6 +1,6 @@
/* Instruction scheduling pass.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by,
and currently maintained by, Jim Wilson (wilson@cygnus.com)
@@ -3906,12 +3906,10 @@ sched_create_recovery_edges (basic_block first_bb, basic_block rec,
/* Rewritten from cfgrtl.c. */
if (flag_reorder_blocks_and_partition
&& targetm.have_named_sections)
- /* We don't need the same note for the check because
- any_condjump_p (check) == true. */
{
- REG_NOTES (jump) = gen_rtx_EXPR_LIST (REG_CROSSING_JUMP,
- NULL_RTX,
- REG_NOTES (jump));
+ /* We don't need the same note for the check because
+ any_condjump_p (check) == true. */
+ add_reg_note (jump, REG_CROSSING_JUMP, NULL_RTX);
}
edge_flags = EDGE_CROSSING;
}
diff --git a/gcc/init-regs.c b/gcc/init-regs.c
index 791b9266bec..273ab97b77f 100644
--- a/gcc/init-regs.c
+++ b/gcc/init-regs.c
@@ -1,5 +1,5 @@
/* Initialization of uninitialized regs.
- Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
@@ -148,7 +148,7 @@ struct rtl_opt_pass pass_initialize_regs =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 1fc0737c822..2d0b236a084 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1,6 +1,6 @@
/* Procedure integration for GCC.
Copyright (C) 1988, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
@@ -308,7 +308,7 @@ struct rtl_opt_pass pass_initial_value_sets =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index a8c4b1b310b..c938b0da1c6 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -209,36 +209,28 @@ check_decl (funct_state local,
variable T is legal in a function that is either pure or const. */
static inline void
-check_op (funct_state local,
- tree t, bool checking_write)
+check_op (funct_state local, tree t, bool checking_write)
{
- while (t && handled_component_p (t))
- t = TREE_OPERAND (t, 0);
- if (!t)
- return;
- if (INDIRECT_REF_P (t) || TREE_CODE (t) == TARGET_MEM_REF)
+ if (TREE_THIS_VOLATILE (t))
{
- if (TREE_THIS_VOLATILE (t))
- {
- local->pure_const_state = IPA_NEITHER;
- if (dump_file)
- fprintf (dump_file, " Volatile indirect ref is not const/pure\n");
- return;
- }
- else if (checking_write)
- {
- local->pure_const_state = IPA_NEITHER;
- if (dump_file)
- fprintf (dump_file, " Indirect ref write is not const/pure\n");
- return;
- }
- else
- {
- if (dump_file)
- fprintf (dump_file, " Indirect ref read is not const\n");
- if (local->pure_const_state == IPA_CONST)
- local->pure_const_state = IPA_PURE;
- }
+ local->pure_const_state = IPA_NEITHER;
+ if (dump_file)
+ fprintf (dump_file, " Volatile indirect ref is not const/pure\n");
+ return;
+ }
+ else if (checking_write)
+ {
+ local->pure_const_state = IPA_NEITHER;
+ if (dump_file)
+ fprintf (dump_file, " Indirect ref write is not const/pure\n");
+ return;
+ }
+ else
+ {
+ if (dump_file)
+ fprintf (dump_file, " Indirect ref read is not const\n");
+ if (local->pure_const_state == IPA_CONST)
+ local->pure_const_state = IPA_PURE;
}
}
@@ -375,6 +367,30 @@ check_call (funct_state local, gimple call, bool ipa)
/* Direct functions calls are handled by IPA propagation. */
}
+/* Wrapper around check_decl for loads. */
+
+static bool
+check_load (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
+{
+ if (DECL_P (op))
+ check_decl ((funct_state)data, op, false);
+ else
+ check_op ((funct_state)data, op, false);
+ return false;
+}
+
+/* Wrapper around check_decl for stores. */
+
+static bool
+check_store (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
+{
+ if (DECL_P (op))
+ check_decl ((funct_state)data, op, true);
+ else
+ check_op ((funct_state)data, op, true);
+ return false;
+}
+
/* Look into pointer pointed to by GSIP and figure out what interesting side
effects it has. */
static void
@@ -389,45 +405,8 @@ check_stmt (gimple_stmt_iterator *gsip, funct_state local, bool ipa)
print_gimple_stmt (dump_file, stmt, 0, 0);
}
- /* Look for direct loads and stores. */
- if (gimple_has_lhs (stmt))
- {
- tree lhs = get_base_address (gimple_get_lhs (stmt));
- if (lhs && DECL_P (lhs))
- check_decl (local, lhs, true);
- }
- if (gimple_assign_single_p (stmt))
- {
- tree rhs = get_base_address (gimple_assign_rhs1 (stmt));
- if (rhs && DECL_P (rhs))
- check_decl (local, rhs, false);
- }
- else if (is_gimple_call (stmt))
- {
- for (i = 0; i < gimple_call_num_args (stmt); ++i)
- {
- tree rhs = get_base_address (gimple_call_arg (stmt, i));
- if (rhs && DECL_P (rhs))
- check_decl (local, rhs, false);
- }
- }
- else if (gimple_code (stmt) == GIMPLE_ASM)
- {
- for (i = 0; i < gimple_asm_ninputs (stmt); ++i)
- {
- tree op = TREE_VALUE (gimple_asm_input_op (stmt, i));
- op = get_base_address (op);
- if (op && DECL_P (op))
- check_decl (local, op, false);
- }
- for (i = 0; i < gimple_asm_noutputs (stmt); ++i)
- {
- tree op = TREE_VALUE (gimple_asm_output_op (stmt, i));
- op = get_base_address (op);
- if (op && DECL_P (op))
- check_decl (local, op, true);
- }
- }
+ /* Look for loads and stores. */
+ walk_stmt_load_store_ops (stmt, local, check_load, check_store);
if (gimple_code (stmt) != GIMPLE_CALL
&& stmt_could_throw_p (stmt))
@@ -447,13 +426,7 @@ check_stmt (gimple_stmt_iterator *gsip, funct_state local, bool ipa)
}
switch (gimple_code (stmt))
{
- case GIMPLE_ASSIGN:
- check_op (local, gimple_assign_lhs (stmt), true);
- i = 1;
- break;
case GIMPLE_CALL:
- check_op (local, gimple_call_lhs (stmt), true);
- i = 1;
check_call (local, stmt, ipa);
break;
case GIMPLE_LABEL:
@@ -466,10 +439,6 @@ check_stmt (gimple_stmt_iterator *gsip, funct_state local, bool ipa)
}
break;
case GIMPLE_ASM:
- for (i = 0; i < gimple_asm_noutputs (stmt); i++)
- check_op (local, TREE_VALUE (gimple_asm_output_op (stmt, i)), true);
- for (i = 0; i < gimple_asm_ninputs (stmt); i++)
- check_op (local, TREE_VALUE (gimple_asm_input_op (stmt, i)), false);
for (i = 0; i < gimple_asm_nclobbers (stmt); i++)
{
tree op = gimple_asm_clobber_op (stmt, i);
@@ -493,9 +462,6 @@ check_stmt (gimple_stmt_iterator *gsip, funct_state local, bool ipa)
default:
break;
}
-
- for (; i < gimple_num_ops (stmt); i++)
- check_op (local, gimple_op (stmt, i), false);
}
@@ -671,6 +637,12 @@ generate_summary (void)
visited_nodes = NULL;
}
+static bool
+ignore_edge (struct cgraph_edge *e)
+{
+ return (!e->can_throw_external);
+}
+
/* Produce the global information by preforming a transitive closure
on the local information that was produced by generate_summary.
Note that there is no function_transform pass since this only
@@ -690,7 +662,7 @@ propagate (void)
cgraph_remove_function_insertion_hook (function_insertion_hook_holder);
cgraph_remove_node_duplication_hook (node_duplication_hook_holder);
cgraph_remove_node_removal_hook (node_removal_hook_holder);
- order_pos = ipa_utils_reduced_inorder (order, true, false);
+ order_pos = ipa_utils_reduced_inorder (order, true, false, NULL);
if (dump_file)
{
dump_cgraph (dump_file);
@@ -705,7 +677,6 @@ propagate (void)
{
enum pure_const_state_e pure_const_state = IPA_CONST;
bool looping = false;
- bool can_throw = false;
int count = 0;
node = order[i];
@@ -718,13 +689,10 @@ propagate (void)
if (pure_const_state < w_l->pure_const_state)
pure_const_state = w_l->pure_const_state;
- if (w_l->can_throw)
- can_throw = true;
if (w_l->looping)
looping = true;
- if (pure_const_state == IPA_NEITHER
- && can_throw)
+ if (pure_const_state == IPA_NEITHER)
break;
count++;
@@ -741,16 +709,10 @@ propagate (void)
funct_state y_l = get_function_state (y);
if (pure_const_state < y_l->pure_const_state)
pure_const_state = y_l->pure_const_state;
- if (pure_const_state == IPA_NEITHER
- && can_throw)
+ if (pure_const_state == IPA_NEITHER)
break;
if (y_l->looping)
looping = true;
- if (y_l->can_throw && !TREE_NOTHROW (w->decl)
- /* FIXME: We should check that the throw can get external.
- We also should handle only loops formed by can throw external
- edges. */)
- can_throw = true;
}
}
w_info = (struct ipa_dfs_info *) w->aux;
@@ -800,16 +762,87 @@ propagate (void)
default:
break;
}
+ w_info = (struct ipa_dfs_info *) w->aux;
+ w = w_info->next_cycle;
+ }
+ }
+
+ /* Cleanup. */
+ for (node = cgraph_nodes; node; node = node->next)
+ {
+ /* Get rid of the aux information. */
+ if (node->aux)
+ {
+ w_info = (struct ipa_dfs_info *) node->aux;
+ free (node->aux);
+ node->aux = NULL;
+ }
+ }
+ order_pos = ipa_utils_reduced_inorder (order, true, false, ignore_edge);
+ if (dump_file)
+ {
+ dump_cgraph (dump_file);
+ ipa_utils_print_order(dump_file, "reduced for nothrow", order, order_pos);
+ }
+ /* Propagate the local information thru the call graph to produce
+ the global information. All the nodes within a cycle will have
+ the same info so we collapse cycles first. Then we can do the
+ propagation in one pass from the leaves to the roots. */
+ for (i = 0; i < order_pos; i++ )
+ {
+ bool can_throw = false;
+ node = order[i];
+
+ /* Find the worst state for any node in the cycle. */
+ w = node;
+ while (w)
+ {
+ struct cgraph_edge *e;
+ funct_state w_l = get_function_state (w);
+
+ if (w_l->can_throw)
+ can_throw = true;
+
+ if (can_throw)
+ break;
+
+ for (e = w->callees; e; e = e->next_callee)
+ {
+ struct cgraph_node *y = e->callee;
+
+ if (cgraph_function_body_availability (y) > AVAIL_OVERWRITABLE)
+ {
+ funct_state y_l = get_function_state (y);
+
+ if (can_throw)
+ break;
+ if (y_l->can_throw && !TREE_NOTHROW (w->decl)
+ && e->can_throw_external)
+ can_throw = true;
+ }
+ }
+ w_info = (struct ipa_dfs_info *) w->aux;
+ w = w_info->next_cycle;
+ }
+
+ /* Copy back the region's pure_const_state which is shared by
+ all nodes in the region. */
+ w = node;
+ while (w)
+ {
+ funct_state w_l = get_function_state (w);
if (!can_throw && !TREE_NOTHROW (w->decl))
{
- /* FIXME: TREE_NOTHROW is not set because passmanager will execute
- verify_ssa and verify_cfg on every function. Before fixup_cfg is done,
- those functions are going to have NOTHROW calls in EH regions reulting
- in ICE. */
+ struct cgraph_edge *e;
+ TREE_NOTHROW (w->decl) = true;
+ for (e = w->callers; e; e = e->next_caller)
+ e->can_throw_external = false;
if (dump_file)
fprintf (dump_file, "Function found to be nothrow: %s\n",
cgraph_node_name (w));
}
+ else if (can_throw && !TREE_NOTHROW (w->decl))
+ w_l->can_throw = true;
w_info = (struct ipa_dfs_info *) w->aux;
w = w_info->next_cycle;
}
@@ -952,7 +985,12 @@ local_pure_const (void)
}
if (!l->can_throw && !TREE_NOTHROW (current_function_decl))
{
- TREE_NOTHROW (current_function_decl) = 1;
+ struct cgraph_edge *e;
+
+ TREE_NOTHROW (current_function_decl) = true;
+ for (e = cgraph_node (current_function_decl)->callers;
+ e; e = e->next_caller)
+ e->can_throw_external = false;
changed = true;
if (dump_file)
fprintf (dump_file, "Function found to be nothrow: %s\n",
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c
index 4bc49cf0a05..36cb5f3f5f9 100644
--- a/gcc/ipa-reference.c
+++ b/gcc/ipa-reference.c
@@ -334,23 +334,36 @@ mark_address_taken (tree x)
bitmap_set_bit (module_statics_escape, DECL_UID (x));
}
+/* Wrapper around mark_address_taken for the stmt walker. */
+
+static bool
+mark_address (gimple stmt ATTRIBUTE_UNUSED, tree addr,
+ void *data ATTRIBUTE_UNUSED)
+{
+ while (handled_component_p (addr))
+ addr = TREE_OPERAND (addr, 0);
+ mark_address_taken (addr);
+ return false;
+}
+
/* Mark load of T. */
-static void
-mark_load (ipa_reference_local_vars_info_t local,
- tree t)
+static bool
+mark_load (gimple stmt ATTRIBUTE_UNUSED, tree t, void *data)
{
+ ipa_reference_local_vars_info_t local = (ipa_reference_local_vars_info_t)data;
if (TREE_CODE (t) == VAR_DECL
&& has_proper_scope_for_analysis (t))
bitmap_set_bit (local->statics_read, DECL_UID (t));
+ return false;
}
/* Mark store of T. */
-static void
-mark_store (ipa_reference_local_vars_info_t local,
- tree t)
+static bool
+mark_store (gimple stmt ATTRIBUTE_UNUSED, tree t, void *data)
{
+ ipa_reference_local_vars_info_t local = (ipa_reference_local_vars_info_t)data;
if (TREE_CODE (t) == VAR_DECL
&& has_proper_scope_for_analysis (t))
{
@@ -361,6 +374,7 @@ mark_store (ipa_reference_local_vars_info_t local,
if (module_statics_written)
bitmap_set_bit (module_statics_written, DECL_UID (t));
}
+ return false;
}
/* Look for memory clobber and set read_all/write_all if present. */
@@ -427,57 +441,18 @@ scan_stmt_for_static_refs (gimple_stmt_iterator *gsip,
{
gimple stmt = gsi_stmt (*gsip);
ipa_reference_local_vars_info_t local = NULL;
- unsigned int i;
- bitmap_iterator bi;
if (fn)
local = get_reference_vars_info (fn)->local;
/* Look for direct loads and stores. */
- if (gimple_has_lhs (stmt))
- {
- tree lhs = get_base_address (gimple_get_lhs (stmt));
- if (lhs && DECL_P (lhs))
- mark_store (local, lhs);
- }
- if (gimple_assign_single_p (stmt))
- {
- tree rhs = get_base_address (gimple_assign_rhs1 (stmt));
- if (rhs && DECL_P (rhs))
- mark_load (local, rhs);
- }
- else if (is_gimple_call (stmt))
- {
- for (i = 0; i < gimple_call_num_args (stmt); ++i)
- {
- tree rhs = get_base_address (gimple_call_arg (stmt, i));
- if (rhs && DECL_P (rhs))
- mark_load (local, rhs);
- }
- check_call (local, stmt);
- }
- else if (gimple_code (stmt) == GIMPLE_ASM)
- {
- for (i = 0; i < gimple_asm_ninputs (stmt); ++i)
- {
- tree op = TREE_VALUE (gimple_asm_input_op (stmt, i));
- op = get_base_address (op);
- if (op && DECL_P (op))
- mark_load (local, op);
- }
- for (i = 0; i < gimple_asm_noutputs (stmt); ++i)
- {
- tree op = TREE_VALUE (gimple_asm_output_op (stmt, i));
- op = get_base_address (op);
- if (op && DECL_P (op))
- mark_store (local, op);
- }
- check_asm_memory_clobber (local, stmt);
- }
+ walk_stmt_load_store_addr_ops (stmt, local, mark_load, mark_store,
+ mark_address);
- if (gimple_addresses_taken (stmt))
- EXECUTE_IF_SET_IN_BITMAP (gimple_addresses_taken (stmt), 0, i, bi)
- mark_address_taken (referenced_var_lookup (i));
+ if (is_gimple_call (stmt))
+ check_call (local, stmt);
+ else if (gimple_code (stmt) == GIMPLE_ASM)
+ check_asm_memory_clobber (local, stmt);
return NULL;
}
@@ -1020,7 +995,7 @@ propagate (void)
struct cgraph_node *w;
struct cgraph_node **order =
XCNEWVEC (struct cgraph_node *, cgraph_n_nodes);
- int order_pos = ipa_utils_reduced_inorder (order, false, true);
+ int order_pos = ipa_utils_reduced_inorder (order, false, true, NULL);
int i;
cgraph_remove_function_insertion_hook (function_insertion_hook_holder);
@@ -1031,7 +1006,7 @@ propagate (void)
the global information. All the nodes within a cycle will have
the same info so we collapse cycles first. Then we can do the
propagation in one pass from the leaves to the roots. */
- order_pos = ipa_utils_reduced_inorder (order, true, true);
+ order_pos = ipa_utils_reduced_inorder (order, true, true, NULL);
if (dump_file)
ipa_utils_print_order(dump_file, "reduced", order, order_pos);
diff --git a/gcc/ipa-struct-reorg.c b/gcc/ipa-struct-reorg.c
index 9ca53645aa0..8b5360d00e9 100644
--- a/gcc/ipa-struct-reorg.c
+++ b/gcc/ipa-struct-reorg.c
@@ -606,13 +606,17 @@ gen_size (tree num, tree type, tree *res)
if (exact_log2 (struct_size_int) == -1)
{
tree size = build_int_cst (TREE_TYPE (num), struct_size_int);
- new_stmt = gimple_build_assign_with_ops (MULT_EXPR, *res, num, size);
+ new_stmt = gimple_build_assign (*res, fold_build2 (MULT_EXPR,
+ TREE_TYPE (num),
+ num, size));
}
else
{
tree C = build_int_cst (TREE_TYPE (num), exact_log2 (struct_size_int));
- new_stmt = gimple_build_assign_with_ops (LSHIFT_EXPR, *res, num, C);
+ new_stmt = gimple_build_assign (*res, fold_build2 (LSHIFT_EXPR,
+ TREE_TYPE (num),
+ num, C));
}
finalize_stmt (new_stmt);
@@ -1291,6 +1295,8 @@ create_general_new_stmt (struct access_site *acc, tree new_type)
{
pos = find_pos_in_stmt (new_stmt, var);
gcc_assert (pos);
+ /* ??? This misses adjustments to the type of the
+ INDIRECT_REF we possibly replace the operand of. */
*pos = new_var;
}
}
diff --git a/gcc/ipa-utils.c b/gcc/ipa-utils.c
index 3b5d128f60d..97a2b3c8237 100644
--- a/gcc/ipa-utils.c
+++ b/gcc/ipa-utils.c
@@ -81,7 +81,8 @@ struct searchc_env {
searching from. */
static void
-searchc (struct searchc_env* env, struct cgraph_node *v)
+searchc (struct searchc_env* env, struct cgraph_node *v,
+ bool (*ignore_edge) (struct cgraph_edge *))
{
struct cgraph_edge *edge;
struct ipa_dfs_info *v_info = (struct ipa_dfs_info *) v->aux;
@@ -101,12 +102,15 @@ searchc (struct searchc_env* env, struct cgraph_node *v)
struct ipa_dfs_info * w_info;
struct cgraph_node *w = edge->callee;
+ if (ignore_edge && ignore_edge (edge))
+ continue;
+
if (w->aux && cgraph_function_body_availability (edge->callee) > AVAIL_OVERWRITABLE)
{
w_info = (struct ipa_dfs_info *) w->aux;
if (w_info->new_node)
{
- searchc (env, w);
+ searchc (env, w, ignore_edge);
v_info->low_link =
(v_info->low_link < w_info->low_link) ?
v_info->low_link : w_info->low_link;
@@ -152,7 +156,8 @@ searchc (struct searchc_env* env, struct cgraph_node *v)
int
ipa_utils_reduced_inorder (struct cgraph_node **order,
- bool reduce, bool allow_overwritable)
+ bool reduce, bool allow_overwritable,
+ bool (*ignore_edge) (struct cgraph_edge *))
{
struct cgraph_node *node;
struct searchc_env env;
@@ -193,7 +198,7 @@ ipa_utils_reduced_inorder (struct cgraph_node **order,
while (result)
{
node = (struct cgraph_node *)result->value;
- searchc (&env, node);
+ searchc (&env, node, ignore_edge);
result = splay_tree_min (env.nodes_marked_new);
}
splay_tree_delete (env.nodes_marked_new);
@@ -217,7 +222,8 @@ get_base_var (tree t)
&& (!CONSTANT_CLASS_P (t))
&& TREE_CODE (t) != LABEL_DECL
&& TREE_CODE (t) != FUNCTION_DECL
- && TREE_CODE (t) != CONST_DECL)
+ && TREE_CODE (t) != CONST_DECL
+ && TREE_CODE (t) != CONSTRUCTOR)
{
t = TREE_OPERAND (t, 0);
}
diff --git a/gcc/ipa-utils.h b/gcc/ipa-utils.h
index 3ccdbafe909..31d78374ff6 100644
--- a/gcc/ipa-utils.h
+++ b/gcc/ipa-utils.h
@@ -39,7 +39,8 @@ struct ipa_dfs_info {
/* In ipa-utils.c */
void ipa_utils_print_order (FILE*, const char *, struct cgraph_node**, int);
-int ipa_utils_reduced_inorder (struct cgraph_node **, bool, bool);
+int ipa_utils_reduced_inorder (struct cgraph_node **, bool, bool,
+ bool (*ignore_edge) (struct cgraph_edge *));
tree get_base_var (tree);
diff --git a/gcc/ira-color.c b/gcc/ira-color.c
index 4f1d302b7c7..743ec3cd835 100644
--- a/gcc/ira-color.c
+++ b/gcc/ira-color.c
@@ -285,8 +285,8 @@ update_copy_costs (ira_allocno_t allocno, bool decr_p)
continue;
cost = (cp->second == allocno
- ? ira_register_move_cost[mode][rclass][cover_class]
- : ira_register_move_cost[mode][cover_class][rclass]);
+ ? ira_get_register_move_cost (mode, rclass, cover_class)
+ : ira_get_register_move_cost (mode, cover_class, rclass));
if (decr_p)
cost = -cost;
@@ -1071,7 +1071,7 @@ calculate_allocno_spill_cost (ira_allocno_t a)
* ira_loop_edge_freq (loop_node, regno, true)
+ ira_memory_move_cost[mode][rclass][0]
* ira_loop_edge_freq (loop_node, regno, false))
- - (ira_register_move_cost[mode][rclass][rclass]
+ - (ira_get_register_move_cost (mode, rclass, rclass)
* (ira_loop_edge_freq (loop_node, regno, false)
+ ira_loop_edge_freq (loop_node, regno, true))));
return cost;
@@ -2039,7 +2039,7 @@ color_pass (ira_loop_tree_node_t loop_tree_node)
else
{
cover_class = ALLOCNO_COVER_CLASS (subloop_allocno);
- cost = (ira_register_move_cost[mode][rclass][rclass]
+ cost = (ira_get_register_move_cost (mode, rclass, rclass)
* (exit_freq + enter_freq));
ira_allocate_and_set_or_copy_costs
(&ALLOCNO_UPDATED_HARD_REG_COSTS (subloop_allocno), cover_class,
@@ -2164,7 +2164,7 @@ move_spill_restore (void)
+= (ira_memory_move_cost[mode][rclass][0] * exit_freq
+ ira_memory_move_cost[mode][rclass][1] * enter_freq);
if (hard_regno2 != hard_regno)
- cost -= (ira_register_move_cost[mode][rclass][rclass]
+ cost -= (ira_get_register_move_cost (mode, rclass, rclass)
* (exit_freq + enter_freq));
}
}
@@ -2183,7 +2183,7 @@ move_spill_restore (void)
+= (ira_memory_move_cost[mode][rclass][1] * exit_freq
+ ira_memory_move_cost[mode][rclass][0] * enter_freq);
if (hard_regno2 != hard_regno)
- cost -= (ira_register_move_cost[mode][rclass][rclass]
+ cost -= (ira_get_register_move_cost (mode, rclass, rclass)
* (exit_freq + enter_freq));
}
}
@@ -2249,8 +2249,8 @@ update_curr_costs (ira_allocno_t a)
if (i < 0)
continue;
cost = (cp->first == a
- ? ira_register_move_cost[mode][rclass][cover_class]
- : ira_register_move_cost[mode][cover_class][rclass]);
+ ? ira_get_register_move_cost (mode, rclass, cover_class)
+ : ira_get_register_move_cost (mode, cover_class, rclass));
ira_allocate_and_set_or_copy_costs
(&ALLOCNO_UPDATED_HARD_REG_COSTS (a),
cover_class, ALLOCNO_COVER_CLASS_COST (a),
diff --git a/gcc/ira-conflicts.c b/gcc/ira-conflicts.c
index 05870ab4b16..399a28ae5cc 100644
--- a/gcc/ira-conflicts.c
+++ b/gcc/ira-conflicts.c
@@ -411,9 +411,9 @@ process_regs_for_copy (rtx reg1, rtx reg2, bool constraint_p,
/* Can not be tied. It is not in the cover class. */
return false;
if (HARD_REGISTER_P (reg1))
- cost = ira_register_move_cost[mode][cover_class][rclass] * freq;
+ cost = ira_get_register_move_cost (mode, cover_class, rclass) * freq;
else
- cost = ira_register_move_cost[mode][rclass][cover_class] * freq;
+ cost = ira_get_register_move_cost (mode, rclass, cover_class) * freq;
for (;;)
{
ira_allocate_and_set_costs
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 397affd4b1f..58700b75f14 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -138,9 +138,6 @@ copy_cost (rtx x, enum machine_mode mode, enum reg_class rclass, bool to_p,
sri.extra_cost = 0;
secondary_class = targetm.secondary_reload (to_p, x, rclass, mode, &sri);
- if (ira_register_move_cost[mode] == NULL)
- ira_init_register_move_cost (mode);
-
if (secondary_class != NO_REGS)
{
if (!move_cost[mode])
@@ -294,19 +291,17 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
needs to do a copy, which is one insn. */
struct costs *pp = this_op_costs[i];
- if (ira_register_move_cost[mode] == NULL)
- ira_init_register_move_cost (mode);
-
for (k = 0; k < cost_classes_num; k++)
{
rclass = cost_classes[k];
pp->cost[k]
- = ((recog_data.operand_type[i] != OP_OUT
- ? ira_may_move_in_cost[mode][rclass]
- [classes[i]] * frequency : 0)
- + (recog_data.operand_type[i] != OP_IN
- ? ira_may_move_out_cost[mode][classes[i]]
- [rclass] * frequency : 0));
+ = (((recog_data.operand_type[i] != OP_OUT
+ ? ira_get_may_move_cost (mode, rclass,
+ classes[i], true) : 0)
+ + (recog_data.operand_type[i] != OP_IN
+ ? ira_get_may_move_cost (mode, classes[i],
+ rclass, false) : 0))
+ * frequency);
}
/* If the alternative actually allows memory, make
@@ -342,8 +337,9 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
: 0));
else if (ira_reg_class_intersect
[pref_class][classes[i]] == NO_REGS)
- alt_cost += (ira_register_move_cost
- [mode][pref_class][classes[i]]);
+ alt_cost += ira_get_register_move_cost (mode,
+ pref_class,
+ classes[i]);
}
if (REGNO (ops[i]) != REGNO (ops[j])
&& ! find_reg_note (insn, REG_DEAD, op))
@@ -540,19 +536,17 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
{
struct costs *pp = this_op_costs[i];
- if (ira_register_move_cost[mode] == NULL)
- ira_init_register_move_cost (mode);
-
for (k = 0; k < cost_classes_num; k++)
{
rclass = cost_classes[k];
pp->cost[k]
- = ((recog_data.operand_type[i] != OP_OUT
- ? ira_may_move_in_cost[mode][rclass]
- [classes[i]] * frequency : 0)
- + (recog_data.operand_type[i] != OP_IN
- ? ira_may_move_out_cost[mode][classes[i]]
- [rclass] * frequency : 0));
+ = (((recog_data.operand_type[i] != OP_OUT
+ ? ira_get_may_move_cost (mode, rclass,
+ classes[i], true) : 0)
+ + (recog_data.operand_type[i] != OP_IN
+ ? ira_get_may_move_cost (mode, classes[i],
+ rclass, false) : 0))
+ * frequency);
}
/* If the alternative actually allows memory, make
@@ -587,8 +581,9 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
: 0));
else if (ira_reg_class_intersect[pref_class][classes[i]]
== NO_REGS)
- alt_cost += (ira_register_move_cost
- [mode][pref_class][classes[i]]);
+ alt_cost += ira_get_register_move_cost (mode,
+ pref_class,
+ classes[i]);
}
}
}
@@ -901,13 +896,11 @@ record_address_regs (enum machine_mode mode, rtx x, int context,
ALLOCNO_NUM (ira_curr_regno_allocno_map
[REGNO (x)]));
pp->mem_cost += (ira_memory_move_cost[Pmode][rclass][1] * scale) / 2;
- if (ira_register_move_cost[Pmode] == NULL)
- ira_init_register_move_cost (Pmode);
for (k = 0; k < cost_classes_num; k++)
{
i = cost_classes[k];
pp->cost[k]
- += (ira_may_move_in_cost[Pmode][i][rclass] * scale) / 2;
+ += (ira_get_may_move_cost (Pmode, i, rclass, true) * scale) / 2;
}
}
break;
@@ -1425,8 +1418,9 @@ process_bb_node_for_hard_reg_moves (ira_loop_tree_node_t loop_tree_node)
continue;
mode = ALLOCNO_MODE (a);
hard_reg_class = REGNO_REG_CLASS (hard_regno);
- cost = (to_p ? ira_register_move_cost[mode][hard_reg_class][rclass]
- : ira_register_move_cost[mode][rclass][hard_reg_class]) * freq;
+ cost
+ = (to_p ? ira_get_register_move_cost (mode, hard_reg_class, rclass)
+ : ira_get_register_move_cost (mode, rclass, hard_reg_class)) * freq;
ira_allocate_and_set_costs (&ALLOCNO_HARD_REG_COSTS (a), rclass,
ALLOCNO_COVER_CLASS_COST (a));
ira_allocate_and_set_costs (&ALLOCNO_CONFLICT_HARD_REG_COSTS (a),
@@ -1579,9 +1573,6 @@ ira_finish_costs_once (void)
void
ira_costs (void)
{
- ira_allocno_t a;
- ira_allocno_iterator ai;
-
allocno_costs = (struct costs *) ira_allocate (max_struct_costs_size
* ira_allocnos_num);
total_costs = (struct costs *) ira_allocate (max_struct_costs_size
@@ -1594,12 +1585,6 @@ ira_costs (void)
* max_reg_num ());
find_allocno_class_costs ();
setup_allocno_cover_class_and_costs ();
- /* Because we could process operands only as subregs, check mode of
- the registers themselves too. */
- FOR_EACH_ALLOCNO (a, ai)
- if (ira_register_move_cost[ALLOCNO_MODE (a)] == NULL
- && have_regs_of_mode[ALLOCNO_MODE (a)])
- ira_init_register_move_cost (ALLOCNO_MODE (a));
ira_free (common_classes);
ira_free (allocno_pref_buffer);
ira_free (total_costs);
diff --git a/gcc/ira-emit.c b/gcc/ira-emit.c
index df10ea45d62..1d4d8ea224f 100644
--- a/gcc/ira-emit.c
+++ b/gcc/ira-emit.c
@@ -812,7 +812,8 @@ emit_move_list (move_t list, int freq)
}
else
{
- cost = ira_register_move_cost[mode][cover_class][cover_class] * freq;
+ cost = (ira_get_register_move_cost (mode, cover_class, cover_class)
+ * freq);
ira_shuffle_cost += cost;
}
ira_overall_cost += cost;
diff --git a/gcc/ira-int.h b/gcc/ira-int.h
index 6e66cc49572..5b8c1ef0bae 100644
--- a/gcc/ira-int.h
+++ b/gcc/ira-int.h
@@ -730,21 +730,24 @@ ira_allocno_set_iter_next (ira_allocno_set_iterator *i)
extern HARD_REG_SET ira_reg_mode_hard_regset
[FIRST_PSEUDO_REGISTER][NUM_MACHINE_MODES];
-/* Arrays analogous to macros MEMORY_MOVE_COST and
- REGISTER_MOVE_COST. */
+/* Arrays analogous to macros MEMORY_MOVE_COST and REGISTER_MOVE_COST.
+ Don't use ira_register_move_cost directly. Use function of
+ ira_get_may_move_cost instead. */
extern short ira_memory_move_cost[MAX_MACHINE_MODE][N_REG_CLASSES][2];
extern move_table *ira_register_move_cost[MAX_MACHINE_MODE];
/* Similar to may_move_in_cost but it is calculated in IRA instead of
regclass. Another difference we take only available hard registers
into account to figure out that one register class is a subset of
- the another one. */
+ the another one. Don't use it directly. Use function of
+ ira_get_may_move_cost instead. */
extern move_table *ira_may_move_in_cost[MAX_MACHINE_MODE];
/* Similar to may_move_out_cost but it is calculated in IRA instead of
regclass. Another difference we take only available hard registers
into account to figure out that one register class is a subset of
- the another one. */
+ the another one. Don't use it directly. Use function of
+ ira_get_may_move_cost instead. */
extern move_table *ira_may_move_out_cost[MAX_MACHINE_MODE];
/* Register class subset relation: TRUE if the first class is a subset
@@ -941,6 +944,34 @@ extern void ira_emit (bool);
+/* Return cost of moving value of MODE from register of class FROM to
+ register of class TO. */
+static inline int
+ira_get_register_move_cost (enum machine_mode mode,
+ enum reg_class from, enum reg_class to)
+{
+ if (ira_register_move_cost[mode] == NULL)
+ ira_init_register_move_cost (mode);
+ return ira_register_move_cost[mode][from][to];
+}
+
+/* Return cost of moving value of MODE from register of class FROM to
+ register of class TO. Return zero if IN_P is true and FROM is
+ subset of TO or if IN_P is false and FROM is superset of TO. */
+static inline int
+ira_get_may_move_cost (enum machine_mode mode,
+ enum reg_class from, enum reg_class to,
+ bool in_p)
+{
+ if (ira_register_move_cost[mode] == NULL)
+ ira_init_register_move_cost (mode);
+ return (in_p
+ ? ira_may_move_in_cost[mode][from][to]
+ : ira_may_move_out_cost[mode][from][to]);
+}
+
+
+
/* The iterator for all allocnos. */
typedef struct {
/* The number of the current element in IRA_ALLOCNOS. */
diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c
index 7ad903d2e44..4390c6fdb8c 100644
--- a/gcc/ira-lives.c
+++ b/gcc/ira-lives.c
@@ -782,10 +782,11 @@ process_single_reg_class_operands (bool in_p, int freq)
[ira_class_hard_regs[cl][0]]) >= 0
&& reg_class_size[cl] <= (unsigned) CLASS_MAX_NREGS (cl, mode))
{
- /* ??? FREQ */
- cost = freq * (in_p
- ? ira_register_move_cost[mode][cover_class][cl]
- : ira_register_move_cost[mode][cl][cover_class]);
+ cost
+ = (freq
+ * (in_p
+ ? ira_get_register_move_cost (mode, cover_class, cl)
+ : ira_get_register_move_cost (mode, cl, cover_class)));
ira_allocate_and_set_costs
(&ALLOCNO_CONFLICT_HARD_REG_COSTS (operand_a), cover_class, 0);
ALLOCNO_CONFLICT_HARD_REG_COSTS (operand_a)
diff --git a/gcc/ira.c b/gcc/ira.c
index 3742f0f35c1..4dee400f3f8 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -3320,7 +3320,7 @@ struct rtl_opt_pass pass_ira =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/jump.c b/gcc/jump.c
index 1189f812fef..90359f8f997 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -132,7 +132,7 @@ struct rtl_opt_pass pass_cleanup_barriers =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/main.c b/gcc/main.c
index fc5a4db567f..3e6c41c39a1 100644
--- a/gcc/main.c
+++ b/gcc/main.c
@@ -32,5 +32,5 @@ int main (int argc, char **argv);
int
main (int argc, char **argv)
{
- return toplev_main (argc, (const char **) argv);
+ return toplev_main (argc, argv);
}
diff --git a/gcc/matrix-reorg.c b/gcc/matrix-reorg.c
index 26b04d63ebb..704dbe7ef82 100644
--- a/gcc/matrix-reorg.c
+++ b/gcc/matrix-reorg.c
@@ -2420,7 +2420,7 @@ struct simple_ipa_opt_pass pass_ipa_matrix_reorg =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -2428,4 +2428,3 @@ struct simple_ipa_opt_pass pass_ipa_matrix_reorg =
TODO_dump_cgraph | TODO_dump_func /* todo_flags_finish */
}
};
-
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index be0153fea42..3e6d91cc592 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -1577,6 +1577,7 @@ create_omp_child_function (omp_context *ctx, bool task_copy)
t = build_decl (RESULT_DECL, NULL_TREE, void_type_node);
DECL_ARTIFICIAL (t) = 1;
DECL_IGNORED_P (t) = 1;
+ DECL_CONTEXT (t) = decl;
DECL_RESULT (decl) = t;
t = build_decl (PARM_DECL, get_identifier (".omp_data_i"), ptr_type_node);
@@ -2318,14 +2319,14 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist,
name);
gimple_add_tmp_var (x);
TREE_ADDRESSABLE (x) = 1;
- x = build_fold_addr_expr_with_type (x, TREE_TYPE (new_var));
+ x = build_fold_addr_expr (x);
}
else
{
x = build_call_expr (built_in_decls[BUILT_IN_ALLOCA], 1, x);
- x = fold_convert (TREE_TYPE (new_var), x);
}
+ x = fold_convert (TREE_TYPE (new_var), x);
gimplify_assign (new_var, x, ilist);
new_var = build_fold_indirect_ref (new_var);
@@ -3812,21 +3813,25 @@ expand_omp_for_generic (struct omp_region *region,
/* Iteration setup for sequential loop goes in L0_BB. */
gsi = gsi_start_bb (l0_bb);
+ t = istart0;
if (bias)
- t = fold_convert (type, fold_build2 (MINUS_EXPR, fd->iter_type,
- istart0, bias));
- else
- t = fold_convert (type, istart0);
+ t = fold_build2 (MINUS_EXPR, fd->iter_type, t, bias);
+ if (POINTER_TYPE_P (type))
+ t = fold_convert (lang_hooks.types.type_for_size (TYPE_PRECISION (type),
+ 0), t);
+ t = fold_convert (type, t);
t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE,
false, GSI_CONTINUE_LINKING);
stmt = gimple_build_assign (fd->loop.v, t);
gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
+ t = iend0;
if (bias)
- t = fold_convert (type, fold_build2 (MINUS_EXPR, fd->iter_type,
- iend0, bias));
- else
- t = fold_convert (type, iend0);
+ t = fold_build2 (MINUS_EXPR, fd->iter_type, t, bias);
+ if (POINTER_TYPE_P (type))
+ t = fold_convert (lang_hooks.types.type_for_size (TYPE_PRECISION (type),
+ 0), t);
+ t = fold_convert (type, t);
iend = force_gimple_operand_gsi (&gsi, t, true, NULL_TREE,
false, GSI_CONTINUE_LINKING);
if (fd->collapse > 1)
@@ -3843,7 +3848,8 @@ expand_omp_for_generic (struct omp_region *region,
itype = lang_hooks.types.type_for_size (TYPE_PRECISION (vtype), 0);
t = fold_build2 (TRUNC_MOD_EXPR, type, tem, counts[i]);
t = fold_convert (itype, t);
- t = fold_build2 (MULT_EXPR, itype, t, fd->loops[i].step);
+ t = fold_build2 (MULT_EXPR, itype, t,
+ fold_convert (itype, fd->loops[i].step));
if (POINTER_TYPE_P (vtype))
t = fold_build2 (POINTER_PLUS_EXPR, vtype,
fd->loops[i].n1, fold_convert (sizetype, t));
@@ -5463,7 +5469,7 @@ struct gimple_opt_pass pass_expand_omp =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_gimple_any, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -6628,7 +6634,7 @@ struct gimple_opt_pass pass_lower_omp =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_gimple_any, /* properties_required */
PROP_gimple_lomp, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/passes.c b/gcc/passes.c
index 2814140ee15..1e7bab03983 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -319,7 +319,7 @@ struct rtl_opt_pass pass_postreload =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_rtl, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1207,14 +1207,14 @@ execute_one_ipa_transform_pass (struct cgraph_node *node,
execute_todo (ipa_pass->function_transform_todo_flags_start);
/* If a timevar is present, start it. */
- if (pass->tv_id)
+ if (pass->tv_id != TV_NONE)
timevar_push (pass->tv_id);
/* Do it! */
todo_after = ipa_pass->function_transform (node);
/* Stop timevar. */
- if (pass->tv_id)
+ if (pass->tv_id != TV_NONE)
timevar_pop (pass->tv_id);
/* Run post-pass cleanup and verification. */
@@ -1281,7 +1281,7 @@ execute_one_pass (struct opt_pass *pass)
#endif
/* If a timevar is present, start it. */
- if (pass->tv_id)
+ if (pass->tv_id != TV_NONE)
timevar_push (pass->tv_id);
/* Do it! */
@@ -1292,7 +1292,7 @@ execute_one_pass (struct opt_pass *pass)
}
/* Stop timevar. */
- if (pass->tv_id)
+ if (pass->tv_id != TV_NONE)
timevar_pop (pass->tv_id);
do_per_function (update_properties_after_pass, pass);
diff --git a/gcc/plugin-version.c b/gcc/plugin-version.c
new file mode 100644
index 00000000000..b6f35a9d18f
--- /dev/null
+++ b/gcc/plugin-version.c
@@ -0,0 +1,36 @@
+/* Version information for plugins.
+ Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "system.h"
+#include "gcc-plugin.h"
+#include "configargs.h"
+
+static char basever[] = BASEVER;
+static char datestamp[] = DATESTAMP;
+static char devphase[] = DEVPHASE;
+static char revision[] = REVISION;
+
+/* FIXME plugins: We should make the version information more precise.
+ One way to do is to add a checksum. */
+
+struct plugin_gcc_version plugin_gcc_version = {basever, datestamp, devphase,
+ revision,
+ configuration_arguments};
diff --git a/gcc/plugin.c b/gcc/plugin.c
index 166e1775dea..c406c38b5f3 100644
--- a/gcc/plugin.c
+++ b/gcc/plugin.c
@@ -99,6 +99,7 @@ static struct pass_list_node *prev_added_pass_node;
/* Each plugin should define an initialization function with exactly
this name. */
static const char *str_plugin_init_func_name = "plugin_init";
+static const char *str_plugin_gcc_version_name = "plugin_gcc_version";
#endif
/* Helper function for the hash table that compares the base_name of the
@@ -453,7 +454,8 @@ register_pass (const char *plugin_name, struct plugin_pass *pass_info)
}
-/* Register additional plugin information. */
+/* Register additional plugin information. NAME is the name passed to
+ plugin_init. INFO is the information that should be registered. */
static void
register_plugin_info (const char* name, struct plugin_info *info)
@@ -558,13 +560,17 @@ invoke_plugin_callbacks (enum plugin_event event, void *gcc_data)
#define PTR_UNION_AS_VOID_PTR(NAME) (NAME._q)
#define PTR_UNION_AS_CAST_PTR(NAME) (NAME._nq)
+/* Try to initialize PLUGIN. Return true if successful. */
+
static bool
try_init_one_plugin (struct plugin_name_args *plugin)
{
void *dl_handle;
plugin_init_func plugin_init;
+ struct plugin_gcc_version *version;
char *err;
PTR_UNION_TYPE (plugin_init_func) plugin_init_union;
+ PTR_UNION_TYPE (struct plugin_gcc_version*) version_union;
dl_handle = dlopen (plugin->full_name, RTLD_NOW);
if (!dl_handle)
@@ -587,8 +593,12 @@ try_init_one_plugin (struct plugin_name_args *plugin)
return false;
}
+ PTR_UNION_AS_VOID_PTR (version_union) =
+ dlsym (dl_handle, str_plugin_gcc_version_name);
+ version = PTR_UNION_AS_CAST_PTR (version_union);
+
/* Call the plugin-provided initialization routine with the arguments. */
- if ((*plugin_init) (plugin->base_name, plugin->argc, plugin->argv))
+ if ((*plugin_init) (plugin->base_name, version, plugin->argc, plugin->argv))
{
error ("Fail to initialize plugin %s", plugin->full_name);
return false;
@@ -707,7 +717,8 @@ print_plugins_versions (FILE *file, const char *indent)
htab_traverse_noresize (plugin_name_args_tab, print_version_one_plugin, &opt);
}
-/* Print help for one plugin. */
+/* Print help for one plugin. SLOT is the hash table slot. DATA is the
+ argument to htab_traverse_noresize. */
static int
print_help_one_plugin (void **slot, void *data)
@@ -735,7 +746,8 @@ print_help_one_plugin (void **slot, void *data)
return 1;
}
-/* Print help for each plugin. */
+/* Print help for each plugin. The output goes to FILE and every line starts
+ with INDENT. */
void
print_plugins_help (FILE *file, const char *indent)
@@ -800,3 +812,26 @@ debug_active_plugins (void)
{
dump_active_plugins (stderr);
}
+
+/* The default version check. Compares every field in VERSION. */
+
+bool
+plugin_default_version_check(struct plugin_gcc_version *version)
+{
+ /* version is NULL if the plugin was not linked with plugin-version.o */
+ if (!version)
+ return false;
+
+ if (strcmp (version->basever, plugin_gcc_version.basever))
+ return false;
+ if (strcmp (version->datestamp, plugin_gcc_version.datestamp))
+ return false;
+ if (strcmp (version->devphase, plugin_gcc_version.devphase))
+ return false;
+ if (strcmp (version->revision, plugin_gcc_version.revision))
+ return false;
+ if (strcmp (version->configuration_arguments,
+ plugin_gcc_version.configuration_arguments))
+ return false;
+ return true;
+}
diff --git a/gcc/recog.c b/gcc/recog.c
index 95f6e9a0965..baad154c448 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -3500,7 +3500,7 @@ struct rtl_opt_pass pass_split_all_insns =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -3530,7 +3530,7 @@ struct rtl_opt_pass pass_split_after_reload =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -3574,7 +3574,7 @@ struct rtl_opt_pass pass_split_before_regstack =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -3612,7 +3612,7 @@ struct rtl_opt_pass pass_split_before_sched2 =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -3644,7 +3644,7 @@ struct rtl_opt_pass pass_split_for_shorten_branches =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -3652,5 +3652,3 @@ struct rtl_opt_pass pass_split_for_shorten_branches =
TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
}
};
-
-
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index e579c281aa3..f31866602eb 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -948,7 +948,7 @@ struct rtl_opt_pass pass_reginfo_init =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1311,34 +1311,6 @@ init_subregs_of_mode (void)
return 0;
}
-/* Set bits in *USED which correspond to registers which can't change
- their mode from FROM to any mode in which REGNO was
- encountered. */
-void
-cannot_change_mode_set_regs (HARD_REG_SET *used, enum machine_mode from,
- unsigned int regno)
-{
- struct subregs_of_mode_node dummy, *node;
- enum machine_mode to;
- unsigned char mask;
- unsigned int i;
-
- gcc_assert (subregs_of_mode);
- dummy.block = regno & -8;
- node = (struct subregs_of_mode_node *)
- htab_find_with_hash (subregs_of_mode, &dummy, dummy.block);
- if (node == NULL)
- return;
-
- mask = 1 << (regno & 7);
- for (to = VOIDmode; to < NUM_MACHINE_MODES; to++)
- if (node->modes[to] & mask)
- for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
- if (!TEST_HARD_REG_BIT (*used, i)
- && REG_CANNOT_CHANGE_MODE_P (i, from, to))
- SET_HARD_REG_BIT (*used, i);
-}
-
/* Return 1 if REGNO has had an invalid mode change in CLASS from FROM
mode. */
bool
@@ -1407,7 +1379,7 @@ struct rtl_opt_pass pass_subregs_of_mode_init =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1426,7 +1398,7 @@ struct rtl_opt_pass pass_subregs_of_mode_finish =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 180c394b421..bb5a3a2bcd3 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -2686,7 +2686,7 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn,
? eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, true)
: NULL_RTX);
- x = gen_rtx_EXPR_LIST (REG_NOTE_KIND (x), new_rtx, XEXP (x, 1));
+ x = alloc_reg_note (REG_NOTE_KIND (x), new_rtx, XEXP (x, 1));
}
}
diff --git a/gcc/rtl.h b/gcc/rtl.h
index bdb41d62b55..ff09d2aedb5 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1493,7 +1493,6 @@ extern rtx copy_insn (rtx);
extern rtx gen_int_mode (HOST_WIDE_INT, enum machine_mode);
extern rtx emit_copy_of_insn_after (rtx, rtx);
extern void set_reg_attrs_from_value (rtx, rtx);
-extern void set_mem_attrs_from_reg (rtx, rtx);
extern void set_reg_attrs_for_parm (rtx, rtx);
extern void adjust_reg_mode (rtx, enum machine_mode);
extern int mem_expr_equal_p (const_tree, const_tree);
@@ -1759,6 +1758,7 @@ extern rtx find_reg_equal_equiv_note (const_rtx);
extern rtx find_constant_src (const_rtx);
extern int find_reg_fusage (const_rtx, enum rtx_code, const_rtx);
extern int find_regno_fusage (const_rtx, enum rtx_code, unsigned int);
+extern rtx alloc_reg_note (enum reg_note, rtx, rtx);
extern void add_reg_note (rtx, enum reg_note, rtx);
extern void remove_note (rtx, const_rtx);
extern void remove_reg_equal_equiv_notes (rtx);
@@ -2146,7 +2146,6 @@ extern void emit_insn_at_entry (rtx);
extern void delete_insn_chain (rtx, rtx, bool);
extern rtx unlink_insn_chain (rtx, rtx);
extern rtx delete_insn_and_edges (rtx);
-extern void delete_insn_chain_and_edges (rtx, rtx);
extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx);
extern rtx gen_const_mem (enum machine_mode, rtx);
extern rtx gen_frame_mem (enum machine_mode, rtx);
@@ -2246,10 +2245,6 @@ extern void init_reg_sets (void);
extern void regclass (rtx, int);
extern void reg_scan (rtx, unsigned int);
extern void fix_register (const char *, int, int);
-#ifdef HARD_CONST
-extern void cannot_change_mode_set_regs (HARD_REG_SET *,
- enum machine_mode, unsigned int);
-#endif
extern bool invalid_mode_change_p (unsigned int, enum reg_class,
enum machine_mode);
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 73d3b08d940..d15dbe22822 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -1865,10 +1865,11 @@ find_regno_fusage (const_rtx insn, enum rtx_code code, unsigned int regno)
}
-/* Add register note with kind KIND and datum DATUM to INSN. */
+/* Allocate a register note with kind KIND and datum DATUM. LIST is
+ stored as the pointer to the next register note. */
-void
-add_reg_note (rtx insn, enum reg_note kind, rtx datum)
+rtx
+alloc_reg_note (enum reg_note kind, rtx datum, rtx list)
{
rtx note;
@@ -1881,16 +1882,24 @@ add_reg_note (rtx insn, enum reg_note kind, rtx datum)
/* These types of register notes use an INSN_LIST rather than an
EXPR_LIST, so that copying is done right and dumps look
better. */
- note = alloc_INSN_LIST (datum, REG_NOTES (insn));
+ note = alloc_INSN_LIST (datum, list);
PUT_REG_NOTE_KIND (note, kind);
break;
default:
- note = alloc_EXPR_LIST (kind, datum, REG_NOTES (insn));
+ note = alloc_EXPR_LIST (kind, datum, list);
break;
}
- REG_NOTES (insn) = note;
+ return note;
+}
+
+/* Add register note with kind KIND and datum DATUM to INSN. */
+
+void
+add_reg_note (rtx insn, enum reg_note kind, rtx datum)
+{
+ REG_NOTES (insn) = alloc_reg_note (kind, datum, REG_NOTES (insn));
}
/* Remove register note NOTE from the REG_NOTES of INSN. */
@@ -5025,4 +5034,3 @@ constant_pool_constant_p (rtx x)
x = avoid_constant_pool_reference (x);
return GET_CODE (x) == CONST_DOUBLE;
}
-
diff --git a/gcc/sdbout.c b/gcc/sdbout.c
index 1b64a50f7ca..9874db7d0c0 100644
--- a/gcc/sdbout.c
+++ b/gcc/sdbout.c
@@ -337,6 +337,7 @@ const struct gcc_debug_hooks sdb_debug_hooks =
debug_nothing_int, /* handle_pch */
debug_nothing_rtx, /* var_location */
debug_nothing_void, /* switch_text_section */
+ debug_nothing_tree_tree, /* set_name */
0 /* start_end_main_source_file */
};
diff --git a/gcc/stack-ptr-mod.c b/gcc/stack-ptr-mod.c
index ea83875e17a..9800d9966ab 100644
--- a/gcc/stack-ptr-mod.c
+++ b/gcc/stack-ptr-mod.c
@@ -1,5 +1,5 @@
/* Discover if the stack pointer is modified in a function.
- Copyright (C) 2007, 2008
+ Copyright (C) 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -101,7 +101,7 @@ struct rtl_opt_pass pass_stack_ptr_mod =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/target-def.h b/gcc/target-def.h
index 9e6693bbb88..73e69434d20 100644
--- a/gcc/target-def.h
+++ b/gcc/target-def.h
@@ -478,10 +478,6 @@
#define TARGET_VECTOR_MODE_SUPPORTED_P hook_bool_mode_false
#endif
-#ifndef TARGET_VECTOR_OPAQUE_P
-#define TARGET_VECTOR_OPAQUE_P hook_bool_const_tree_false
-#endif
-
/* In hooks.c. */
#define TARGET_CANNOT_MODIFY_JUMPS_P hook_bool_void_false
#define TARGET_BRANCH_TARGET_REGISTER_CLASS hook_int_void_no_regs
@@ -886,7 +882,6 @@
TARGET_VALID_POINTER_MODE, \
TARGET_SCALAR_MODE_SUPPORTED_P, \
TARGET_VECTOR_MODE_SUPPORTED_P, \
- TARGET_VECTOR_OPAQUE_P, \
TARGET_RTX_COSTS, \
TARGET_ADDRESS_COST, \
TARGET_ALLOCATE_INITIAL_VALUE, \
diff --git a/gcc/target.h b/gcc/target.h
index a520e1c5765..608910a3ec4 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -674,9 +674,6 @@ struct gcc_target
for further details. */
bool (* vector_mode_supported_p) (enum machine_mode mode);
- /* True if a vector is opaque. */
- bool (* vector_opaque_p) (const_tree);
-
/* Compute a (partial) cost for rtx X. Return true if the complete
cost has been computed, and false if subexpressions should be
scanned. In either case, *TOTAL contains the cost result. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a6e9bf7329e..df0281d96c2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,184 @@
+2009-04-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/rep_clause3.adb: New test.
+
+2009-04-19 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/37481
+ * gcc.dg/c99-flex-array-7.c: New test.
+
+2009-04-19 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/19771
+ * gcc.c-torture/execute/vla-dealloc-1.c: New test.
+
+2009-04-19 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/38243
+ * gcc.dg/c99-restrict-3.c: New test.
+
+2009-04-19 Joseph Myers <joseph@codesourcery.com>
+
+ PR preprocessor/20078
+ * gcc.dg/cpp/paste16.c, gcc.dg/cpp/redef4.c: New tests.
+
+2009-04-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * lib/gnat.exp (local_find_gnatmake): Pass --LINK to gnatlink.
+ Do not pass -B$root after -margs.
+
+2009-04-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR c/32061
+ PR c++/36954
+ * gcc.dg/pr32061.c: New.
+ * gcc.dg/Wlogical-op-1.c: Update.
+ * g++.dg/warn/Wlogical-op-1.C: Update.
+ * g++.dg/warn/pr36954.C: New.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/27676
+ * gcc.dg/lvalue-5.c: New test.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/22367
+ * gcc.dg/lvalue-6.c, gcc.dg/lvalue-7.c: New tests.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/cpp/include5.c: New test.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/35210
+ * gcc.dg/call-diag-2.c: New test.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR preprocessor/39646
+ * gcc.dg/cpp/line8.c: New test.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR preprocessor/39647
+ * gcc.dg/cpp/line7.c: New test.
+
+2009-04-18 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/39804
+ * gcc.target/i386/pr39804.c: New testcase.
+
+2009-04-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.target/i386/pr39496.c: Compile with -mtune=i686.
+ * g++.dg/other/pr39496.C: Likewise.
+
+2009-04-18 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR middle-end/36902
+ * gcc.dg/pr36902.c: New.
+
+2009-04-17 Diego Novillo <dnovillo@google.com>
+
+ * gcc.c-torture/execute/builtins/strlen-3.c: Fix ODR
+ violation for variable 'inside_main'.
+
+2009-04-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * gfortran.fortran-torture/execute/getarg_1.x: New file.
+
+2009-04-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * gfortran.dg/vect/pr39318.f90: Guard with "target fopenmp".
+
+2009-04-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * gfortran.dg/chmod_1.f90: Disable on spu-*-* targets.
+ * gfortran.dg/chmod_2.f90: Likewise.
+ * gfortran.dg/chmod_3.f90: Likewise.
+ * gfortran.dg/open_errors.f90: Likewise.
+ * gfortran.dg/stat_1.f90: Likewise.
+ * gfortran.dg/stat_2.f90: Likewise.
+
+2009-04-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * gfortran.fortran-torture/execute/nan_inf_fmt.x: Skip on spu-*-*.
+ * gfortran.fortran-torture/execute/intrinsic_nearest.x: Likewise.
+ * gfortran.fortran-torture/execute/intrinsic_set_exponent.x: Likewise.
+ * gfortran.dg/nearest_1.f90: Likewise.
+ * gfortran.dg/nearest_3.f90: Likewise.
+ * gfortran.dg/isnan_1.f90: Likewise.
+ * gfortran.dg/isnan_2.f90: Likewise.
+ * gfortran.dg/nan_1.f90: Likewise.
+ * gfortran.dg/nan_2.f90: Likewise.
+ * gfortran.dg/nan_3.f90: Likewise.
+ * gfortran.dg/nan_4.f90: Likewise.
+ * gfortran.dg/module_nan.f90: Likewise.
+ * gfortran.dg/int_conv_2.f90: Likewise.
+ * gfortran.dg/init_flag_3.f90: Likewise.
+ * gfortran.dg/namelist_42.f90: Likewise.
+ * gfortran.dg/namelist_43.f90: Likewise.
+ * gfortran.dg/real_const_3.f90: Likewise.
+ * gfortran.dg/transfer_simplify_1.f90: Likewise.
+
+ * gfortran.dg/default_format_1.f90: XFAIL on spu-*-*.
+ * gfortran.dg/default_format_denormal_1.f90: XFAIL on spu-*-*.
+ * gfortran.dg/scalar_mask_2.f90: XFAIL on spu-*-*.
+ * gfortran.dg/integer_exponentiation_3.F90: XFAIL on spu-*-*.
+ * gfortran.dg/integer_exponentiation_5.F90: XFAIL on spu-*-*.
+
+ * gfortran.dg/elemental_subroutine_1.f90: Relax "epsilon" check.
+ * gfortran.dg/gamma_5.f90: Likewise.
+
+2009-04-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * lib/gcc-dg.exp (gcc-dg-prune): Make linker message check
+ less strict so it also works with auto-overlay support.
+ * lib/gcc-defs.exp (${tool}_check_unsupported_p): Add check
+ for "exceeds local store" linker errors on the SPU.
+
+ * lib/gfortran.exp: Include target-supports.exp.
+ (gfortran_init): On SPU targets where automatic overlay support
+ is available, use it to build all Fortran test cases.
+
+ * gfortran.dg/pr20257.f90: Skip on spu-*-* targets.
+
+2009-04-17 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat.dg/ref_type.ads, gnat.dg/ref_type.adb: Fix test after proper
+ rule enforced by gnat on taft types.
+
+2009-04-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/39792
+ * g++.dg/ext/complit11.C: Add empty dg-options.
+
+2009-04-16 Andrew Pinski <pinskia@gmail.com>
+
+ PR c++/17570
+ * g++.dg/template/defarg11.C: New test.
+
+2009-04-16 Andrew Pinski <pinskia@gmail.com>
+
+ PR c++/28766
+ * g++.dg/ext/complit11.C: New testcase.
+
+2009-04-15 Le-Chun Wu <lcwu@google.com>
+
+ PR c++/39551
+ * g++.dg/warn/Wunused-13.C: New testcase.
+
+2009-04-15 Ian Lance Taylor <iant@google.com>
+
+ * gcc.dg/Wenum-compare-1.c: New testcase.
+
+2009-04-15 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/39764
+ * g++.dg/torture/pr39764.C: New testcase.
+
2009-04-15 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/ext/altivec-17.C: New.
@@ -2023,7 +2204,7 @@
2009-02-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
- PR C++/36607
+ PR c++/36607
* g++.dg/expr/cast10.C: New test.
2009-02-03 Joseph Myers <joseph@codesourcery.com>
@@ -2466,7 +2647,7 @@
2009-01-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
- PR C++/29388
+ PR c++/29388
* g++.dg/template/error37.C: New testcase.
2009-01-15 Jason Merrill <jason@redhat.com>
diff --git a/gcc/testsuite/g++.dg/ext/complit11.C b/gcc/testsuite/g++.dg/ext/complit11.C
new file mode 100644
index 00000000000..7b41795ece3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/complit11.C
@@ -0,0 +1,16 @@
+// { dg-do compile }
+// { dg-options "" }
+
+struct A { int i; };
+
+template<int t>
+void foo()
+{
+ ((struct A) { 0 }).i += 1;
+}
+
+void g(void)
+{
+ foo<0>();
+}
+
diff --git a/gcc/testsuite/g++.dg/other/pr39496.C b/gcc/testsuite/g++.dg/other/pr39496.C
index 94e33abbe11..5b1e76c7576 100644
--- a/gcc/testsuite/g++.dg/other/pr39496.C
+++ b/gcc/testsuite/g++.dg/other/pr39496.C
@@ -1,6 +1,6 @@
// PR target/39496
// { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && ilp32 } } }
-// { dg-options "-O0 -fverbose-asm -fno-omit-frame-pointer -msse2 -mfpmath=sse" }
+// { dg-options "-O0 -fverbose-asm -fno-omit-frame-pointer -mtune=i686 -msse2 -mfpmath=sse" }
// Verify that {foo,bar}{,2}param are all passed on the stack, using
// normal calling conventions, when not optimizing.
// { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*fooparam," } }
diff --git a/gcc/testsuite/g++.dg/template/defarg11.C b/gcc/testsuite/g++.dg/template/defarg11.C
new file mode 100644
index 00000000000..00c4e658d9a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/defarg11.C
@@ -0,0 +1,18 @@
+// { dg-do compile }
+
+// We used to reject this code as the extension
+// for default arguments being accepted as less the
+// needed template arguments.
+
+
+template<typename> struct match { };
+
+template<template<typename> class t,typename T>
+struct match<t<T> > { typedef int type; };
+
+template<template<typename,typename> class t,typename T0,typename T1>
+struct match<t<T0,T1> > { typedef int type; };
+
+template<typename,typename =void> struct other { };
+
+typedef match<other<void,void> >::type type;
diff --git a/gcc/testsuite/g++.dg/torture/pr39764.C b/gcc/testsuite/g++.dg/torture/pr39764.C
new file mode 100644
index 00000000000..a8901331352
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr39764.C
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+
+class A;
+class B { };
+extern const double NaN;
+B foo(A* exec, double d);
+inline B baz(A* a) {
+ return foo(a, NaN);
+}
+B bar(A* a) {
+ return baz(a);
+}
+extern const double NaN = (__builtin_nanf(""));
+
diff --git a/gcc/testsuite/g++.dg/warn/Wlogical-op-1.C b/gcc/testsuite/g++.dg/warn/Wlogical-op-1.C
index f67ab89f867..61d4a9dae23 100644
--- a/gcc/testsuite/g++.dg/warn/Wlogical-op-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wlogical-op-1.C
@@ -28,20 +28,39 @@ extern testenum testa();
void foo()
{
- if ( f && b2 ) // { dg-warning "always evaluate as" }
+ if ( f && b2 ) // { dg-warning "logical" }
do_something(1);
- if ( c && b2 ) // { dg-warning "always evaluate as" }
+ if ( c && b2 ) // { dg-warning "logical" }
do_something(2);
- if ( b2 && c == a ) // { dg-bogus "always evaluate as" }
+ if ( b2 && c == a ) // { dg-bogus "logical" }
do_something(101);
if ( 1 && c )
- do_something(102); // { dg-bogus "always evaluate as" }
- if ( t2 && b2 ) // { dg-bogus "always evaluate as" }
+ do_something(102); // { dg-bogus "logical" }
+ if ( t2 && b2 ) // { dg-bogus "logical" }
do_something(103);
- if ( true && c == a ) // { dg-bogus "always evaluate as" }
+ if ( true && c == a ) // { dg-bogus "logical" }
do_something(104);
- if ( b2 && true ) // { dg-bogus "always evaluate as" }
+ if ( b2 && true ) // { dg-bogus "logical" }
do_something(105);
}
+
+void bar()
+{
+ if ( f || b2 ) // { dg-warning "logical" }
+ do_something(1);
+ if ( c || b2 ) // { dg-warning "logical" }
+ do_something(2);
+
+ if ( b2 || c == a ) // { dg-bogus "logical" }
+ do_something(101);
+ if ( 1 || c )
+ do_something(102); // { dg-bogus "logical" }
+ if ( t2 || b2 ) // { dg-bogus "logical" }
+ do_something(103);
+ if ( true || c == a ) // { dg-bogus "logical" }
+ do_something(104);
+ if ( b2 || true ) // { dg-bogus "logical" }
+ do_something(105);
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-13.C b/gcc/testsuite/g++.dg/warn/Wunused-13.C
new file mode 100644
index 00000000000..d0eae113e9e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-13.C
@@ -0,0 +1,7 @@
+// Test whether -Wunused handles effectless indirect_ref operation ('*').
+// { dg-do compile }
+// { dg-options "-Wunused" }
+
+void Foo(int* x) {
+ *x++; // { dg-warning "value computed is not used" }
+}
diff --git a/gcc/testsuite/g++.dg/warn/pr36954.C b/gcc/testsuite/g++.dg/warn/pr36954.C
new file mode 100644
index 00000000000..92cea2f3876
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/pr36954.C
@@ -0,0 +1,23 @@
+// PR c++/36954
+// { dg-do compile }
+// { dg-options "-Wlogical-op -Wextra -Wall" }
+
+template<class C> void Test()
+{
+ if ((1 == 2) || (true)) {
+ }
+
+ if ((1 == 2) || (!false)) {
+ }
+
+ if (false || true) {
+ }
+}
+
+
+
+int main() {
+ if ((1 == 2) || (true)) {
+ }
+}
+
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/strlen-3.c b/gcc/testsuite/gcc.c-torture/execute/builtins/strlen-3.c
index 221e306247a..666ca21b94f 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/strlen-3.c
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/strlen-3.c
@@ -10,7 +10,7 @@ extern char *strcpy (char *, const char *);
static const char bar[] = "Hello, World!";
static const char baz[] = "hello, world?";
static const char larger[20] = "short string";
-extern volatile int inside_main;
+extern int inside_main;
int l1 = 1;
int x = 6;
diff --git a/gcc/testsuite/gcc.c-torture/execute/vla-dealloc-1.c b/gcc/testsuite/gcc.c-torture/execute/vla-dealloc-1.c
new file mode 100644
index 00000000000..f2291ad66d4
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/vla-dealloc-1.c
@@ -0,0 +1,22 @@
+/* VLAs should be deallocated on a jump to before their definition,
+ including a jump to a label in an inner scope. PR 19771. */
+
+void *volatile p;
+
+int
+main (void)
+{
+ int n = 0;
+ if (0)
+ {
+ lab:;
+ }
+ int x[n % 1000 + 1];
+ x[0] = 1;
+ x[n % 1000] = 2;
+ p = x;
+ n++;
+ if (n < 1000000)
+ goto lab;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/Wenum-compare-1.c b/gcc/testsuite/gcc.dg/Wenum-compare-1.c
new file mode 100644
index 00000000000..dd321e0f643
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wenum-compare-1.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-options "-Wenum-compare" } */
+enum E1 { A, B, C };
+enum E2 { D, E, F };
+extern void f2 ();
+void
+f1 ()
+{
+ int a = A;
+ int d = D;
+ enum E1 e1 = A;
+ enum E2 e2 = D;
+ if (A > D) /* { dg-warning "comparison between .enum E1. and .enum E2." } */
+ f2 ();
+ if (e1 > e2) /* { dg-warning "comparison between .enum E1. and .enum E2." } */
+ f2 ();
+ if (e1 > e2 + 1)
+ f2 ();
+ if (A > 0)
+ f2 ();
+ if (e1 > 0)
+ f2 ();
+ if (A + D > 0)
+ f2 ();
+ if (e1 > 0)
+ f2 ();
+ if (A + D > 0)
+ f2 ();
+ if ((int) A > D)
+ f2 ();
+ if ((int) e1 > e2)
+ f2 ();
+}
diff --git a/gcc/testsuite/gcc.dg/Wlogical-op-1.c b/gcc/testsuite/gcc.dg/Wlogical-op-1.c
index d9687bf09a2..2cbb9806e03 100644
--- a/gcc/testsuite/gcc.dg/Wlogical-op-1.c
+++ b/gcc/testsuite/gcc.dg/Wlogical-op-1.c
@@ -14,34 +14,64 @@ extern int testa();
void foo()
{
- if ( testa() && b ) /* { dg-warning "always evaluate as" } */
+ if ( testa() && b ) /* { dg-warning "logical" } */
(void)testa();
- if ( c && b ) /* { dg-warning "always evaluate as" } */
+ if ( c && b ) /* { dg-warning "logical" } */
(void)testa();
- if ( c && 0x42 ) /* { dg-warning "always evaluate as" } */
+ if ( c && 0x42 ) /* { dg-warning "logical" } */
(void)testa();
- if ( c && 0x42 ) /* { dg-warning "always evaluate as" } */
+ if ( c && 0x80 >>6) /* { dg-warning "logical" } */
+ (void)testa();
+
+
+ if ( b && c == a ) /* { dg-bogus "logical" } */
+ (void)testa();
+
+ if ( 1 && c ) /* { dg-bogus "logical" } */
+ (void)testa();
+
+ if ( t2 && b ) /* { dg-bogus "logical" } */
+ (void)testa();
+
+ if ( 0 && c == a ) /* { dg-bogus "logical" } */
+ (void)testa();
+
+ if ( b && 1 ) /* { dg-bogus "logical" } */
+ (void)testa();
+}
+
+
+void bar()
+{
+ if ( testa() || b ) /* { dg-warning "logical" } */
+ (void)testa();
+
+ if ( c || b ) /* { dg-warning "logical" } */
+ (void)testa();
+
+ if ( c || 0x42 ) /* { dg-warning "logical" } */
(void) testa();
- if ( c && 0x80 >>6) /* { dg-warning "always evaluate as" } */
+ if ( c || 0x80 >>6) /* { dg-warning "logical" } */
(void)testa();
- if ( b && c == a ) /* { dg-bogus "always evaluate as" } */
+ if ( b || c == a ) /* { dg-bogus "logical" } */
(void)testa();
- if ( 1 && c ) /* { dg-bogus "always evaluate as" } */
+ if ( 1 || c ) /* { dg-bogus "logical" } */
(void)testa();
- if ( t2 && b ) /* { dg-bogus "always evaluate as" } */
+ if ( t2 || b ) /* { dg-bogus "logical" } */
(void)testa();
- if ( 0 && c == a ) /* { dg-bogus "always evaluate as" } */
+ if ( 0 || c == a ) /* { dg-bogus "logical" } */
(void)testa();
- if ( b && 1 ) /* { dg-bogus "always evaluate as" } */
+ if ( b || 1 ) /* { dg-bogus "logical" } */
(void)testa();
}
+
diff --git a/gcc/testsuite/gcc.dg/c99-flex-array-7.c b/gcc/testsuite/gcc.dg/c99-flex-array-7.c
new file mode 100644
index 00000000000..8966e6cccc0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/c99-flex-array-7.c
@@ -0,0 +1,17 @@
+/* Initialization of a flexible array member with a string constant
+ must be diagnosed. PR 37481. */
+/* { dg-do compile } */
+/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+
+struct s { int a; char b[]; };
+
+struct s a = { 0, "" }; /* { dg-error "initialization of a flexible array member" } */
+/* { dg-error "near init" "near init" { target *-*-* } 8 } */
+struct s b = { 0, { 0 } }; /* { dg-error "initialization of a flexible array member" } */
+/* { dg-error "near init" "near init" { target *-*-* } 10 } */
+struct s c = { 0, { } }; /* { dg-error "ISO C forbids empty initializer braces" } */
+struct s d = { .b = "" }; /* { dg-error "initialization of a flexible array member" } */
+/* { dg-error "near init" "near init" { target *-*-* } 13 } */
+struct s e = { .b = { 0 } }; /* { dg-error "initialization of a flexible array member" } */
+/* { dg-error "near init" "near init" { target *-*-* } 15 } */
+struct s f = { .b = { } }; /* { dg-error "ISO C forbids empty initializer braces" } */
diff --git a/gcc/testsuite/gcc.dg/c99-restrict-3.c b/gcc/testsuite/gcc.dg/c99-restrict-3.c
new file mode 100644
index 00000000000..e5200a57be9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/c99-restrict-3.c
@@ -0,0 +1,7 @@
+/* restrict qualifiers on non-pointers must be diagnosed even when
+ only a tag is being declared. PR 38243. */
+/* { dg-do compile } */
+/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+
+restrict struct s; /* { dg-error "restrict" } */
+restrict union u; /* { dg-error "restrict" } */
diff --git a/gcc/testsuite/gcc.dg/call-diag-2.c b/gcc/testsuite/gcc.dg/call-diag-2.c
new file mode 100644
index 00000000000..0d87e52e973
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/call-diag-2.c
@@ -0,0 +1,17 @@
+/* Test diagnostics for calling function returning qualified void or
+ other incomplete type other than void. PR 35210. */
+/* { dg-do compile } */
+/* { dg-options "-pedantic-errors" } */
+
+const void f_cv (void);
+struct s f_s (void);
+void f_v (void);
+
+void g1 (void) { f_cv (); } /* { dg-error "qualified void" } */
+void g2 (void) { f_s (); } /* { dg-error "invalid use of undefined type" } */
+void g3 (void) { ((const void (*) (void)) f_v) (); } /* { dg-error "qualified void" } */
+/* { dg-warning "function called through a non-compatible type" "cast" { target *-*-* } 12 } */
+/* { dg-message "will abort" "abort" { target *-*-* } 12 } */
+void g4 (void) { ((struct s (*) (void)) f_v) (), (void) 0; } /* { dg-error "invalid use of undefined type" } */
+/* { dg-warning "function called through a non-compatible type" "cast" { target *-*-* } 15 } */
+/* { dg-message "will abort" "abort" { target *-*-* } 15 } */
diff --git a/gcc/testsuite/gcc.dg/cpp/include5.c b/gcc/testsuite/gcc.dg/cpp/include5.c
new file mode 100644
index 00000000000..9bbc2878d05
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/include5.c
@@ -0,0 +1,9 @@
+/* Test #include directives with macros expanding to empty. */
+
+#define EMPTY_OBJ
+#define EMPTY_FUNC()
+
+#include <stddef.h> EMPTY_OBJ
+#include <stddef.h> EMPTY_FUNC()
+#include "stddef.h" EMPTY_OBJ
+#include "stddef.h" EMPTY_FUNC()
diff --git a/gcc/testsuite/gcc.dg/cpp/line7.c b/gcc/testsuite/gcc.dg/cpp/line7.c
new file mode 100644
index 00000000000..754727e885f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/line7.c
@@ -0,0 +1,19 @@
+/* Test #line syntax, including macro expansion and empty macros. PR
+ 39647. */
+
+/* { dg-do preprocess } */
+/* { dg-options "-std=c99 -pedantic-errors" } */
+
+#define EMPTY_OBJ
+#define EMPTY_FUNC()
+
+#define A 12 "line7.c"
+#line A
+
+#line EMPTY_OBJ /* { dg-error "unexpected end of file" } */
+#line X /* { dg-error "is not a positive integer" } */
+#line 16 16 /* { dg-error "is not a valid filename" } */
+
+#line 18 "line7.c" EMPTY_OBJ
+#line 19 "line7.c" EMPTY_FUNC()
+#line 20 "line7.c" foo /* { dg-error "extra tokens at end" } */
diff --git a/gcc/testsuite/gcc.dg/cpp/line8.c b/gcc/testsuite/gcc.dg/cpp/line8.c
new file mode 100644
index 00000000000..5aeb26ca325
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/line8.c
@@ -0,0 +1,10 @@
+/* Test that "" is not specially interpreted as "<stdin>" in a #line
+ directive. PR 39646. */
+
+/* { dg-do compile } */
+/* { dg-options "-pedantic-errors" } */
+
+extern int x;
+
+#line 24 ""
+extern char z[sizeof __FILE__ == 1];
diff --git a/gcc/testsuite/gcc.dg/cpp/paste16.c b/gcc/testsuite/gcc.dg/cpp/paste16.c
new file mode 100644
index 00000000000..11aca2b60d4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/paste16.c
@@ -0,0 +1,6 @@
+/* Test multiple consecutive ## tokens. */
+/* { dg-do compile } */
+/* { dg-options "" } */
+#define cat(x,y) x##########y
+int abcd;
+int *p = &cat(ab,cd);
diff --git a/gcc/testsuite/gcc.dg/cpp/redef4.c b/gcc/testsuite/gcc.dg/cpp/redef4.c
new file mode 100644
index 00000000000..b34635b2e42
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/redef4.c
@@ -0,0 +1,499 @@
+/* Test redefinitions differing only in the spelling of paste and
+ stringify tokens, whitespace around them, or the number of
+ consecutive paste tokens. */
+/* { dg-do preprocess } */
+/* { dg-options "" } */
+
+#define str(x) #x /* { dg-message "previous definition" } */
+#define str(x) %: x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) #x /* { dg-message "previous definition" } */
+#define str(x) # x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) #x /* { dg-message "previous definition" } */
+#define str(x) %: x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) %:x /* { dg-message "previous definition" } */
+#define str(x) #x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) %:x /* { dg-message "previous definition" } */
+#define str(x) %: x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) %:x /* { dg-message "previous definition" } */
+#define str(x) # x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) %:x /* { dg-message "previous definition" } */
+#define str(x) %: x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) # x /* { dg-message "previous definition" } */
+#define str(x) #x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) # x /* { dg-message "previous definition" } */
+#define str(x) %: x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) # x /* { dg-message "previous definition" } */
+#define str(x) %: x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) %: x /* { dg-message "previous definition" } */
+#define str(x) #x /* { dg-warning "redefined" } */
+#undef str
+#define str(x) %: x /* { dg-message "previous definition" } */
+#define str(x) # x /* { dg-warning "redefined" } */
+#undef str
+
+#define str(x) #x
+#define str(x) #x
+#undef str
+#define str(x) # x
+#define str(x) # x
+#undef str
+#define str(x) %: x
+#define str(x) %: x
+#undef str
+#define str(x) %: x
+#define str(x) %: x
+#undef str
+
+#define astr(x) a#x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a#x /* { dg-message "previous definition" } */
+#define astr(x) a# x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a#x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a#x /* { dg-message "previous definition" } */
+#define astr(x) a #x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a#x /* { dg-message "previous definition" } */
+#define astr(x) a %:x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a#x /* { dg-message "previous definition" } */
+#define astr(x) a # x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a#x /* { dg-message "previous definition" } */
+#define astr(x) a %: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%:x /* { dg-message "previous definition" } */
+#define astr(x) a#x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%:x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%:x /* { dg-message "previous definition" } */
+#define astr(x) a# x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%:x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%:x /* { dg-message "previous definition" } */
+#define astr(x) a #x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%:x /* { dg-message "previous definition" } */
+#define astr(x) a %:x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%:x /* { dg-message "previous definition" } */
+#define astr(x) a # x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%:x /* { dg-message "previous definition" } */
+#define astr(x) a %: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a# x /* { dg-message "previous definition" } */
+#define astr(x) a#x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a# x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a# x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a# x /* { dg-message "previous definition" } */
+#define astr(x) a #x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a# x /* { dg-message "previous definition" } */
+#define astr(x) a %:x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a# x /* { dg-message "previous definition" } */
+#define astr(x) a # x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a# x /* { dg-message "previous definition" } */
+#define astr(x) a %: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%: x /* { dg-message "previous definition" } */
+#define astr(x) a#x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%: x /* { dg-message "previous definition" } */
+#define astr(x) a# x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%: x /* { dg-message "previous definition" } */
+#define astr(x) a #x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%: x /* { dg-message "previous definition" } */
+#define astr(x) a %:x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%: x /* { dg-message "previous definition" } */
+#define astr(x) a # x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a%: x /* { dg-message "previous definition" } */
+#define astr(x) a %: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a #x /* { dg-message "previous definition" } */
+#define astr(x) a#x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a #x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a #x /* { dg-message "previous definition" } */
+#define astr(x) a# x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a #x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a #x /* { dg-message "previous definition" } */
+#define astr(x) a %:x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a #x /* { dg-message "previous definition" } */
+#define astr(x) a # x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a #x /* { dg-message "previous definition" } */
+#define astr(x) a %: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %:x /* { dg-message "previous definition" } */
+#define astr(x) a#x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %:x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %:x /* { dg-message "previous definition" } */
+#define astr(x) a# x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %:x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %:x /* { dg-message "previous definition" } */
+#define astr(x) a #x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %:x /* { dg-message "previous definition" } */
+#define astr(x) a # x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %:x /* { dg-message "previous definition" } */
+#define astr(x) a %: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a # x /* { dg-message "previous definition" } */
+#define astr(x) a#x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a # x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a # x /* { dg-message "previous definition" } */
+#define astr(x) a# x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a # x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a # x /* { dg-message "previous definition" } */
+#define astr(x) a #x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a # x /* { dg-message "previous definition" } */
+#define astr(x) a %:x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a # x /* { dg-message "previous definition" } */
+#define astr(x) a %: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %: x /* { dg-message "previous definition" } */
+#define astr(x) a#x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %: x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %: x /* { dg-message "previous definition" } */
+#define astr(x) a# x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %: x /* { dg-message "previous definition" } */
+#define astr(x) a%: x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %: x /* { dg-message "previous definition" } */
+#define astr(x) a #x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %: x /* { dg-message "previous definition" } */
+#define astr(x) a %:x /* { dg-warning "redefined" } */
+#undef astr
+#define astr(x) a %: x /* { dg-message "previous definition" } */
+#define astr(x) a # x /* { dg-warning "redefined" } */
+#undef astr
+
+#define astr(x) a#x
+#define astr(x) a#x
+#undef astr
+#define astr(x) a# x
+#define astr(x) a# x
+#undef astr
+#define astr(x) a%: x
+#define astr(x) a%: x
+#undef astr
+#define astr(x) a%: x
+#define astr(x) a%: x
+#undef astr
+#define astr(x) a #x
+#define astr(x) a #x
+#undef astr
+#define astr(x) a %:x
+#define astr(x) a %:x
+#undef astr
+#define astr(x) a # x
+#define astr(x) a # x
+#undef astr
+#define astr(x) a %: x
+#define astr(x) a %: x
+#undef astr
+
+#define cat(x,y) x##y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x##y /* { dg-message "previous definition" } */
+#define cat(x,y) x## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x##y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x##y /* { dg-message "previous definition" } */
+#define cat(x,y) x ##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x##y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x##y /* { dg-message "previous definition" } */
+#define cat(x,y) x ## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x##y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x ##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x ## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x## y /* { dg-message "previous definition" } */
+#define cat(x,y) x##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x## y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x## y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x## y /* { dg-message "previous definition" } */
+#define cat(x,y) x ##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x## y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x## y /* { dg-message "previous definition" } */
+#define cat(x,y) x ## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x## y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x ##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x ## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ##y /* { dg-message "previous definition" } */
+#define cat(x,y) x##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ##y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ##y /* { dg-message "previous definition" } */
+#define cat(x,y) x## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ##y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ##y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ##y /* { dg-message "previous definition" } */
+#define cat(x,y) x ## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ##y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x ##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x ## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ## y /* { dg-message "previous definition" } */
+#define cat(x,y) x##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ## y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ## y /* { dg-message "previous definition" } */
+#define cat(x,y) x## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ## y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ## y /* { dg-message "previous definition" } */
+#define cat(x,y) x ##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ## y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x ## y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x## y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x ##y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
+#undef cat
+#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
+#define cat(x,y) x ## y /* { dg-warning "redefined" } */
+#undef cat
+
+#define cat(x,y) x##y
+#define cat(x,y) x##y
+#undef cat
+#define cat(x,y) x## y
+#define cat(x,y) x## y
+#undef cat
+#define cat(x,y) x%:%: y
+#define cat(x,y) x%:%: y
+#undef cat
+#define cat(x,y) x%:%: y
+#define cat(x,y) x%:%: y
+#undef cat
+#define cat(x,y) x ##y
+#define cat(x,y) x ##y
+#undef cat
+#define cat(x,y) x %:%:y
+#define cat(x,y) x %:%:y
+#undef cat
+#define cat(x,y) x ## y
+#define cat(x,y) x ## y
+#undef cat
+#define cat(x,y) x %:%: y
+#define cat(x,y) x %:%: y
+#undef cat
+
+#define cat3(x,y,z) x##y##z /* { dg-message "previous definition" } */
+#define cat3(x,y,z) x##y####z /* { dg-warning "redefined" } */
+#undef cat3
+
+#define cat3(x,y,z) x##y####z /* { dg-message "previous definition" } */
+#define cat3(x,y,z) x####y##z /* { dg-warning "redefined" } */
+#undef cat3
+
+#define cat3(x,y,z) x##y####z /* { dg-message "previous definition" } */
+#define cat3(x,y,z) x##y## ##z /* { dg-warning "redefined" } */
+#undef cat3
+
+#define cat3(x,y,z) x##y####z /* { dg-message "previous definition" } */
+#define cat3(x,y,z) x##y##%:%:z /* { dg-warning "redefined" } */
+#undef cat3
+
+#define cat3(x,y,z) x##y######## ####z /* { dg-message "previous definition" } */
+#define cat3(x,y,z) x##y############z /* { dg-warning "redefined" } */
+#undef cat3
+
+#define cat3(x,y,z) x##y############z /* { dg-message "previous definition" } */
+#define cat3(x,y,z) x##y########%:%:##z /* { dg-warning "redefined" } */
+#undef cat3
+
+#define cat3(x,y,z) x##y##z
+#define cat3(x,y,z) x##y##z
+#undef cat3
+
+#define cat3(x,y,z) x##y####z
+#define cat3(x,y,z) x##y####z
+#undef cat3
+
+#define cat3(x,y,z) x####y##z
+#define cat3(x,y,z) x####y##z
+#undef cat3
+
+#define cat3(x,y,z) x##y## ##z
+#define cat3(x,y,z) x##y## ##z
+#undef cat3
+
+#define cat3(x,y,z) x##y##%:%:z
+#define cat3(x,y,z) x##y##%:%:z
+#undef cat3
+
+#define cat3(x,y,z) x##y######## ####z
+#define cat3(x,y,z) x##y######## ####z
+#undef cat3
+
+#define cat3(x,y,z) x##y############z
+#define cat3(x,y,z) x##y############z
+#undef cat3
+
+#define cat3(x,y,z) x##y########%:%:##z
+#define cat3(x,y,z) x##y########%:%:##z
+#undef cat3
diff --git a/gcc/testsuite/gcc.dg/lvalue-5.c b/gcc/testsuite/gcc.dg/lvalue-5.c
new file mode 100644
index 00000000000..514f35ed802
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lvalue-5.c
@@ -0,0 +1,14 @@
+/* Test assignment to elements of a string literal is a warning, not
+ an error. PR 27676. */
+/* { dg-do compile } */
+/* { dg-options "-pedantic-errors" } */
+
+void
+f (void)
+{
+ "foo"[0] = 0; /* { dg-warning "assignment of read-only location" } */
+ "foo"[0]++; /* { dg-warning "increment of read-only location" } */
+ "foo"[0]--; /* { dg-warning "decrement of read-only location" } */
+ ++"foo"[0]; /* { dg-warning "increment of read-only location" } */
+ --"foo"[0]; /* { dg-warning "decrement of read-only location" } */
+}
diff --git a/gcc/testsuite/gcc.dg/lvalue-6.c b/gcc/testsuite/gcc.dg/lvalue-6.c
new file mode 100644
index 00000000000..af69de4df4c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lvalue-6.c
@@ -0,0 +1,17 @@
+/* Test constraints on unary '&': PR 22367. */
+
+/* { dg-do compile } */
+/* { dg-options "-std=iso9899:1990 -pedantic-errors" } */
+
+extern void v;
+void f1 (void) { &v; } /* { dg-error "taking address of expression of type 'void'" } */
+
+extern void *pv;
+void f2 (void) { &*pv; } /* { dg-warning "dereferencing" } */
+/* { dg-error "taking address of expression of type 'void'" "C90 only error" { target *-*-* } 10 } */
+
+extern const void cv;
+void f3 (void) { &cv; }
+
+extern const void *pcv;
+void f4 (void) { &*pcv; } /* { dg-warning "dereferencing" } */
diff --git a/gcc/testsuite/gcc.dg/lvalue-7.c b/gcc/testsuite/gcc.dg/lvalue-7.c
new file mode 100644
index 00000000000..37964e1cd76
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lvalue-7.c
@@ -0,0 +1,16 @@
+/* Test constraints on unary '&': PR 22367. */
+
+/* { dg-do compile } */
+/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+
+extern void v;
+void f1 (void) { &v; } /* { dg-error "taking address of expression of type 'void'" } */
+
+extern void *pv;
+void f2 (void) { &*pv; } /* { dg-warning "dereferencing" } */
+
+extern const void cv;
+void f3 (void) { &cv; }
+
+extern const void *pcv;
+void f4 (void) { &*pcv; } /* { dg-warning "dereferencing" } */
diff --git a/gcc/testsuite/gcc.dg/pr32061.c b/gcc/testsuite/gcc.dg/pr32061.c
new file mode 100644
index 00000000000..dc1a916f1bb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr32061.c
@@ -0,0 +1,10 @@
+/* PR c/32061
+ { dg-do compile }
+ { dg-options "-Wlogical-op -Wall -Wextra" }
+*/
+#define FORCE 1
+#define FLAG 1
+int func (int resp, int flags)
+{
+ return (resp && (FORCE || (FLAG & flags)));
+}
diff --git a/gcc/testsuite/gcc.dg/pr36902.c b/gcc/testsuite/gcc.dg/pr36902.c
new file mode 100644
index 00000000000..43a2d14f981
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr36902.c
@@ -0,0 +1,61 @@
+/* PR middle-end/36902 Array bound warning with dead code after optimization */
+/* { dg-do compile } */
+/* { dg-options "-O2 -Warray-bounds -Wall -Wextra" } */
+typedef unsigned char __u8;
+typedef unsigned short __u16;
+
+static inline unsigned char *
+foo(unsigned char * to, const unsigned char * from, int n)
+{
+ switch ( n )
+ {
+ case 3:
+ *to = *from;
+ break;
+ case 5:
+ to[4] = from [4];
+ break;
+ }
+ return to;
+}
+
+struct {
+ int size_of_select;
+ unsigned char pcr_select[4];
+} sel;
+
+int bar(void)
+{
+ static unsigned char buf[64];
+
+ sel.size_of_select = 3;
+ foo(buf, sel.pcr_select, sel.size_of_select);
+
+ return 1;
+}
+
+
+static inline unsigned char *
+foo2(unsigned char * to, const unsigned char * from, int n)
+{
+ switch ( n )
+ {
+ case 3:
+ *to = *from;
+ break;
+ case 5:
+ to[4] = from [4]; /* { dg-warning "array subscript is above array bounds" } */
+ break;
+ }
+ return to;
+}
+
+int baz(void)
+{
+ static unsigned char buf[64];
+
+ sel.size_of_select = 5;
+ foo2(buf, sel.pcr_select, sel.size_of_select);
+
+ return 1;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr39496.c b/gcc/testsuite/gcc.target/i386/pr39496.c
index d90a2c7f3ea..e4132a1165b 100644
--- a/gcc/testsuite/gcc.target/i386/pr39496.c
+++ b/gcc/testsuite/gcc.target/i386/pr39496.c
@@ -1,6 +1,6 @@
/* PR target/39496 */
/* { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && ilp32 } } } */
-/* { dg-options "-O0 -fverbose-asm -fno-omit-frame-pointer -msse2 -mfpmath=sse" } */
+/* { dg-options "-O0 -fverbose-asm -fno-omit-frame-pointer -mtune=i686 -msse2 -mfpmath=sse" } */
/* Verify that {foo,bar}{,2}param are all passed on the stack, using
normal calling conventions, when not optimizing. */
/* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*fooparam," } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr39804.c b/gcc/testsuite/gcc.target/i386/pr39804.c
new file mode 100644
index 00000000000..3ff2479084f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr39804.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-O" } */
+
+typedef unsigned char u8;
+struct __large_struct { unsigned long buf[100]; };
+static inline __attribute__((always_inline)) unsigned long
+__copy_from_user_inatomic(void *to, const void *from, unsigned long n)
+{
+ unsigned long ret = 0;
+ asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n"
+ ".section .fixup,\"ax\"\n"
+ "3: mov %3,%0\n"
+ " xor""b"" %""b""1,%""b""1\n"
+ " jmp 2b\n"
+ ".previous\n"
+ " .section __ex_table,\"a\"\n"
+ " " ".balign 4" " " "\n"
+ " " ".long" " " "1b" "," "3b" "\n"
+ " .previous\n"
+ : "=r" (ret), "=q"(*(u8 *)to)
+ : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret));
+ return ret;
+}
+void romchecksum(const unsigned char *rom, unsigned char c)
+{
+ unsigned char sum;
+ for (sum = 0;
+ !__copy_from_user_inatomic(&(c), ( typeof(c) *)(rom++), sizeof(c));)
+ sum += c;
+}
diff --git a/gcc/testsuite/gfortran.dg/chmod_1.f90 b/gcc/testsuite/gfortran.dg/chmod_1.f90
index e83beccf84b..1c7907e8f35 100644
--- a/gcc/testsuite/gfortran.dg/chmod_1.f90
+++ b/gcc/testsuite/gfortran.dg/chmod_1.f90
@@ -1,4 +1,4 @@
-! { dg-do run { target { ! *-*-mingw* } } }
+! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } }
! { dg-options "-std=gnu" }
implicit none
character(len=*), parameter :: n = "foobar_file"
diff --git a/gcc/testsuite/gfortran.dg/chmod_2.f90 b/gcc/testsuite/gfortran.dg/chmod_2.f90
index f319cd1868e..b43c60f9b92 100644
--- a/gcc/testsuite/gfortran.dg/chmod_2.f90
+++ b/gcc/testsuite/gfortran.dg/chmod_2.f90
@@ -1,4 +1,4 @@
-! { dg-do run { target { ! *-*-mingw* } } }
+! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } }
! { dg-options "-std=gnu" }
implicit none
character(len=*), parameter :: n = "foobar_file"
diff --git a/gcc/testsuite/gfortran.dg/chmod_3.f90 b/gcc/testsuite/gfortran.dg/chmod_3.f90
index 63a4bbb564e..c97af6d4692 100644
--- a/gcc/testsuite/gfortran.dg/chmod_3.f90
+++ b/gcc/testsuite/gfortran.dg/chmod_3.f90
@@ -1,4 +1,4 @@
-! { dg-do run { target { ! *-*-mingw* } } }
+! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } }
! { dg-options "-std=gnu -fdefault-integer-8" }
implicit none
character(len=*), parameter :: n = "foobar_file"
diff --git a/gcc/testsuite/gfortran.dg/default_format_1.f90 b/gcc/testsuite/gfortran.dg/default_format_1.f90
index 9d3e3ad7635..1c6e71ebc71 100644
--- a/gcc/testsuite/gfortran.dg/default_format_1.f90
+++ b/gcc/testsuite/gfortran.dg/default_format_1.f90
@@ -1,4 +1,4 @@
-! { dg-do run }
+! { dg-do run { xfail spu-*-* } }
! Test XFAILed on Darwin because the system's printf() lacks
! proper support for denormals.
!
diff --git a/gcc/testsuite/gfortran.dg/default_format_denormal_1.f90 b/gcc/testsuite/gfortran.dg/default_format_denormal_1.f90
index c4d6086594d..adecd50c4d0 100644
--- a/gcc/testsuite/gfortran.dg/default_format_denormal_1.f90
+++ b/gcc/testsuite/gfortran.dg/default_format_denormal_1.f90
@@ -1,4 +1,4 @@
-! { dg-do run { xfail alpha*-*-* *-*-darwin[89]* *-*-freebsd* *-*-mingw* } }
+! { dg-do run { xfail alpha*-*-* *-*-darwin[89]* *-*-freebsd* *-*-mingw* spu-*-* } }
! Test XFAILed on these platforms because the system's printf() lacks
! proper support for denormals.
!
diff --git a/gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90 b/gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90
index 298b54eee3d..802d1ed20ff 100644
--- a/gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90
+++ b/gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90
@@ -48,7 +48,7 @@ end module pr22146
! Test an expression in the INTENT(IN) argument
x = (/1.0, 2.0/)
call foobar (cos (x) + u, y)
- if (any(abs (y + cos (x) + u) .gt. 2.0e-6)) call abort ()
+ if (any(abs (y + cos (x) + u) .gt. 4.0e-6)) call abort ()
contains
diff --git a/gcc/testsuite/gfortran.dg/gamma_5.f90 b/gcc/testsuite/gfortran.dg/gamma_5.f90
index d9cb3580a60..467c5796244 100644
--- a/gcc/testsuite/gfortran.dg/gamma_5.f90
+++ b/gcc/testsuite/gfortran.dg/gamma_5.f90
@@ -21,7 +21,7 @@ program main
xd = n + 0.5d0
td = c(n)*sqrt(pi)
ts = c(n)*sqrt(pi)
- if (abs(gamma(xs)-ts)/ts > 3e-6) call abort
+ if (abs(gamma(xs)-ts)/ts > 9e-6) call abort
if (abs(gamma(xd)-td)/td > 5e-14) call abort
end do
call tst_s(2.3, gamma(2.3))
diff --git a/gcc/testsuite/gfortran.dg/init_flag_3.f90 b/gcc/testsuite/gfortran.dg/init_flag_3.f90
index 9724d39c217..4a3fd1eb306 100644
--- a/gcc/testsuite/gfortran.dg/init_flag_3.f90
+++ b/gcc/testsuite/gfortran.dg/init_flag_3.f90
@@ -1,6 +1,7 @@
! { dg-do run }
! { dg-options "-finit-integer=-1 -finit-logical=false -finit-real=nan" }
! { dg-options "-finit-integer=-1 -finit-logical=false -finit-real=nan -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
program init_flag_3
call real_test
diff --git a/gcc/testsuite/gfortran.dg/int_conv_2.f90 b/gcc/testsuite/gfortran.dg/int_conv_2.f90
index ce5f5a21712..ed7a5f4cd60 100644
--- a/gcc/testsuite/gfortran.dg/int_conv_2.f90
+++ b/gcc/testsuite/gfortran.dg/int_conv_2.f90
@@ -1,4 +1,5 @@
! { dg-do compile }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
! PR fortran/37930
program test
implicit none
diff --git a/gcc/testsuite/gfortran.dg/integer_exponentiation_3.F90 b/gcc/testsuite/gfortran.dg/integer_exponentiation_3.F90
index 3d95fb102cc..e5c4052bacb 100644
--- a/gcc/testsuite/gfortran.dg/integer_exponentiation_3.F90
+++ b/gcc/testsuite/gfortran.dg/integer_exponentiation_3.F90
@@ -1,4 +1,5 @@
-! { dg-do run }
+! { dg-do run { xfail spu-*-* } }
+! FAILs on SPU because of wrong compile-time rounding mode
! { dg-options "" }
module mod_check
implicit none
diff --git a/gcc/testsuite/gfortran.dg/integer_exponentiation_5.F90 b/gcc/testsuite/gfortran.dg/integer_exponentiation_5.F90
index 2fc8df35c3f..fe431ba14e9 100644
--- a/gcc/testsuite/gfortran.dg/integer_exponentiation_5.F90
+++ b/gcc/testsuite/gfortran.dg/integer_exponentiation_5.F90
@@ -1,4 +1,5 @@
-! { dg-do run }
+! { dg-do run { xfail spu-*-* } }
+! FAILs on SPU because of invalid result of 1.0/0.0 inline code
! { dg-options "-fno-range-check" }
! { dg-options "-fno-range-check -mieee" { target alpha*-*-* } } */
module mod_check
diff --git a/gcc/testsuite/gfortran.dg/isnan_1.f90 b/gcc/testsuite/gfortran.dg/isnan_1.f90
index 3c0cce8d378..47187432bf2 100644
--- a/gcc/testsuite/gfortran.dg/isnan_1.f90
+++ b/gcc/testsuite/gfortran.dg/isnan_1.f90
@@ -2,6 +2,7 @@
!
! { dg-do run }
! { dg-options "-pedantic-errors -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
implicit none
real :: x
diff --git a/gcc/testsuite/gfortran.dg/isnan_2.f90 b/gcc/testsuite/gfortran.dg/isnan_2.f90
index 37b53633fa7..fe6e9314613 100644
--- a/gcc/testsuite/gfortran.dg/isnan_2.f90
+++ b/gcc/testsuite/gfortran.dg/isnan_2.f90
@@ -3,6 +3,7 @@
! { dg-do run }
! { dg-options "-fno-range-check" }
! { dg-options "-fno-range-check -pedantic-errors -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
implicit none
character(len=1) :: s
diff --git a/gcc/testsuite/gfortran.dg/module_nan.f90 b/gcc/testsuite/gfortran.dg/module_nan.f90
index 52fa8a9f77d..d6db6fb054b 100644
--- a/gcc/testsuite/gfortran.dg/module_nan.f90
+++ b/gcc/testsuite/gfortran.dg/module_nan.f90
@@ -1,6 +1,7 @@
! { dg-do run }
! { dg-options "-fno-range-check" }
! { dg-options "-fno-range-check -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34318
!
diff --git a/gcc/testsuite/gfortran.dg/namelist_42.f90 b/gcc/testsuite/gfortran.dg/namelist_42.f90
index 1aa75ab4b41..476c1196caa 100644
--- a/gcc/testsuite/gfortran.dg/namelist_42.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_42.f90
@@ -1,5 +1,6 @@
! { dg-do run { target fd_truncate } }
! { dg-options "-mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34427
!
diff --git a/gcc/testsuite/gfortran.dg/namelist_43.f90 b/gcc/testsuite/gfortran.dg/namelist_43.f90
index ad518dd126f..0dc8dac04ae 100644
--- a/gcc/testsuite/gfortran.dg/namelist_43.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_43.f90
@@ -1,5 +1,6 @@
! { dg-do run { target fd_truncate } }
! { dg-options "-mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34427
!
diff --git a/gcc/testsuite/gfortran.dg/nan_1.f90 b/gcc/testsuite/gfortran.dg/nan_1.f90
index 6b7e19f8060..938c04f004d 100644
--- a/gcc/testsuite/gfortran.dg/nan_1.f90
+++ b/gcc/testsuite/gfortran.dg/nan_1.f90
@@ -3,6 +3,7 @@
!
! { dg-do run }
! { dg-options "-pedantic-errors -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
module aux2
interface isnan
diff --git a/gcc/testsuite/gfortran.dg/nan_2.f90 b/gcc/testsuite/gfortran.dg/nan_2.f90
index 30987715f36..c26eebcb627 100644
--- a/gcc/testsuite/gfortran.dg/nan_2.f90
+++ b/gcc/testsuite/gfortran.dg/nan_2.f90
@@ -1,6 +1,7 @@
! { dg-do run }
! { dg-options "-fno-range-check -pedantic" }
! { dg-options "-fno-range-check -pedantic -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34333
!
diff --git a/gcc/testsuite/gfortran.dg/nan_3.f90 b/gcc/testsuite/gfortran.dg/nan_3.f90
index adc927674b9..018608b5003 100644
--- a/gcc/testsuite/gfortran.dg/nan_3.f90
+++ b/gcc/testsuite/gfortran.dg/nan_3.f90
@@ -1,6 +1,7 @@
! { dg-do run }
! { dg-options "-fno-range-check" }
! { dg-options "-fno-range-check -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34319
!
diff --git a/gcc/testsuite/gfortran.dg/nan_4.f90 b/gcc/testsuite/gfortran.dg/nan_4.f90
index 7c37671efef..09c887e17f2 100644
--- a/gcc/testsuite/gfortran.dg/nan_4.f90
+++ b/gcc/testsuite/gfortran.dg/nan_4.f90
@@ -1,6 +1,7 @@
! { dg-do compile }
! { dg-options "-std=gnu" }
! { dg-options "-std=gnu -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34398.
!
diff --git a/gcc/testsuite/gfortran.dg/nearest_1.f90 b/gcc/testsuite/gfortran.dg/nearest_1.f90
index 64e2b8524fc..a38f25985ca 100644
--- a/gcc/testsuite/gfortran.dg/nearest_1.f90
+++ b/gcc/testsuite/gfortran.dg/nearest_1.f90
@@ -1,6 +1,7 @@
! { dg-do run }
! { dg-options "-O0 -ffloat-store" }
! { dg-options "-O0 -ffloat-store -mieee" { target alpha*-*-* } }
+! { dg-skip-if "Denormals not supported" { spu-*-* } { "*" } { "" } }
! PR fortran/27021
! Original code submitted by Dominique d'Humieres
! Converted to Dejagnu for the testsuite by Steven G. Kargl
diff --git a/gcc/testsuite/gfortran.dg/nearest_3.f90 b/gcc/testsuite/gfortran.dg/nearest_3.f90
index 3af4cfc34d2..b2bb7e3e5b9 100644
--- a/gcc/testsuite/gfortran.dg/nearest_3.f90
+++ b/gcc/testsuite/gfortran.dg/nearest_3.f90
@@ -1,5 +1,6 @@
! { dg-do run }
! { dg-options "-pedantic-errors -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34209
!
diff --git a/gcc/testsuite/gfortran.dg/open_errors.f90 b/gcc/testsuite/gfortran.dg/open_errors.f90
index 0def37a6356..729cc6a4fef 100644
--- a/gcc/testsuite/gfortran.dg/open_errors.f90
+++ b/gcc/testsuite/gfortran.dg/open_errors.f90
@@ -1,4 +1,4 @@
-! { dg-do run { target { ! *-*-mingw* } } }
+! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } }
! PR30005 Enhanced error messages for OPEN
! Submitted by Jerry DeLisle <jvdelisle@gcc.gnu.org>
character(60) :: msg
diff --git a/gcc/testsuite/gfortran.dg/pr20257.f90 b/gcc/testsuite/gfortran.dg/pr20257.f90
index ca5a00bf882..77c885f48fc 100644
--- a/gcc/testsuite/gfortran.dg/pr20257.f90
+++ b/gcc/testsuite/gfortran.dg/pr20257.f90
@@ -1,4 +1,5 @@
! { dg-do run { target fd_truncate } }
+! { dg-skip-if "Too big for local store" { spu-*-* } { "*" } { "" } }
integer,parameter :: n = 10000
real(8) array(10000)
diff --git a/gcc/testsuite/gfortran.dg/real_const_3.f90 b/gcc/testsuite/gfortran.dg/real_const_3.f90
index 90e82087bb4..6567ac74f63 100644
--- a/gcc/testsuite/gfortran.dg/real_const_3.f90
+++ b/gcc/testsuite/gfortran.dg/real_const_3.f90
@@ -1,6 +1,7 @@
!{ dg-do run }
!{ dg-options "-fno-range-check" }
!{ dg-options "-fno-range-check -mieee" { target alpha*-*-* sh*-*-* } }
+!{ dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
! PR19310 and PR19904, allow disabling range check during compile.
! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org>
program main
diff --git a/gcc/testsuite/gfortran.dg/scalar_mask_2.f90 b/gcc/testsuite/gfortran.dg/scalar_mask_2.f90
index adc7bbd60d4..967ac5c22c2 100644
--- a/gcc/testsuite/gfortran.dg/scalar_mask_2.f90
+++ b/gcc/testsuite/gfortran.dg/scalar_mask_2.f90
@@ -1,4 +1,5 @@
-! { dg-do run }
+! { dg-do run { xfail spu-*-* } }
+! FAILs on SPU because of rounding error reading kinds.h
program main
! Test scalar masks for different intrinsics.
real, dimension(2,2) :: a
diff --git a/gcc/testsuite/gfortran.dg/stat_1.f90 b/gcc/testsuite/gfortran.dg/stat_1.f90
index df60c3948f2..2fceaab9f7e 100644
--- a/gcc/testsuite/gfortran.dg/stat_1.f90
+++ b/gcc/testsuite/gfortran.dg/stat_1.f90
@@ -1,5 +1,5 @@
! { dg-do run { target fd_truncate } }
-! { dg-skip-if "" { *-*-mingw* } { "*" } { "" } }
+! { dg-skip-if "" { *-*-mingw* spu-*-* } { "*" } { "" } }
! { dg-options "-std=gnu" }
character(len=*), parameter :: f = "testfile"
integer :: s1(13), r1, s2(13), r2, s3(13), r3
diff --git a/gcc/testsuite/gfortran.dg/stat_2.f90 b/gcc/testsuite/gfortran.dg/stat_2.f90
index 4622395c34d..72661aced41 100644
--- a/gcc/testsuite/gfortran.dg/stat_2.f90
+++ b/gcc/testsuite/gfortran.dg/stat_2.f90
@@ -1,5 +1,5 @@
! { dg-do run { target fd_truncate } }
-! { dg-skip-if "" { *-*-mingw* } { "*" } { "" } }
+! { dg-skip-if "" { *-*-mingw* spu-*-* } { "*" } { "" } }
! { dg-options "-std=gnu" }
character(len=*), parameter :: f = "testfile"
integer :: s1(13), r1, s2(13), r2, s3(13), r3
diff --git a/gcc/testsuite/gfortran.dg/transfer_simplify_1.f90 b/gcc/testsuite/gfortran.dg/transfer_simplify_1.f90
index c1b241fb99d..4f92121a572 100644
--- a/gcc/testsuite/gfortran.dg/transfer_simplify_1.f90
+++ b/gcc/testsuite/gfortran.dg/transfer_simplify_1.f90
@@ -1,5 +1,6 @@
! { dg-do run }
! { dg-options "-O2" }
+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
! Tests that the PRs caused by the lack of gfc_simplify_transfer are
! now fixed. These were brought together in the meta-bug PR31237
! (TRANSFER intrinsic).
diff --git a/gcc/testsuite/gfortran.dg/vect/pr39318.f90 b/gcc/testsuite/gfortran.dg/vect/pr39318.f90
index 9e58a17b526..c22e558e241 100644
--- a/gcc/testsuite/gfortran.dg/vect/pr39318.f90
+++ b/gcc/testsuite/gfortran.dg/vect/pr39318.f90
@@ -1,4 +1,4 @@
-! { dg-do compile }
+! { dg-do compile { target fopenmp } }
! { dg-options "-c -fopenmp -fexceptions -O2 -ftree-vectorize" }
subroutine adw_trajsp (F_u,i0,in,j0,jn)
diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/getarg_1.x b/gcc/testsuite/gfortran.fortran-torture/execute/getarg_1.x
new file mode 100644
index 00000000000..6356b439e5e
--- /dev/null
+++ b/gcc/testsuite/gfortran.fortran-torture/execute/getarg_1.x
@@ -0,0 +1,5 @@
+if [istarget "spu-*-*"] {
+ # We need -mstdmain to enable argument processing on SPU.
+ lappend additional_flags "-mstdmain"
+}
+return 0
diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.x b/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.x
index dad399dcb8d..2d2b6ee8e68 100644
--- a/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.x
+++ b/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_nearest.x
@@ -1,2 +1,6 @@
+if [istarget "spu-*-*"] {
+ # No Inf/NaN support on SPU.
+ return 1
+}
add-ieee-options
return 0
diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_set_exponent.x b/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_set_exponent.x
index dad399dcb8d..e49cd40f269 100644
--- a/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_set_exponent.x
+++ b/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_set_exponent.x
@@ -1,2 +1,6 @@
+if [istarget "spu-*-*"] {
+ # No denormal support on SPU.
+ return 1
+}
add-ieee-options
return 0
diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/nan_inf_fmt.x b/gcc/testsuite/gfortran.fortran-torture/execute/nan_inf_fmt.x
index dad399dcb8d..2d2b6ee8e68 100644
--- a/gcc/testsuite/gfortran.fortran-torture/execute/nan_inf_fmt.x
+++ b/gcc/testsuite/gfortran.fortran-torture/execute/nan_inf_fmt.x
@@ -1,2 +1,6 @@
+if [istarget "spu-*-*"] {
+ # No Inf/NaN support on SPU.
+ return 1
+}
add-ieee-options
return 0
diff --git a/gcc/testsuite/gnat.dg/ref_type.adb b/gcc/testsuite/gnat.dg/ref_type.adb
index 4cead9093c9..3d36b96ff96 100644
--- a/gcc/testsuite/gnat.dg/ref_type.adb
+++ b/gcc/testsuite/gnat.dg/ref_type.adb
@@ -2,7 +2,6 @@
-- { dg-do compile }
package body ref_type is
- type T is tagged null record;
procedure Print (X : T) is
begin
null;
diff --git a/gcc/testsuite/gnat.dg/ref_type.ads b/gcc/testsuite/gnat.dg/ref_type.ads
index 021ca72881d..550d5892ff2 100644
--- a/gcc/testsuite/gnat.dg/ref_type.ads
+++ b/gcc/testsuite/gnat.dg/ref_type.ads
@@ -1,5 +1,5 @@
package ref_type is
private
- type T is tagged;
+ type T is tagged null record;
procedure Print (X : T);
end ref_type;
diff --git a/gcc/testsuite/gnat.dg/rep_clause3.adb b/gcc/testsuite/gnat.dg/rep_clause3.adb
new file mode 100644
index 00000000000..f4adcc37bf6
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/rep_clause3.adb
@@ -0,0 +1,47 @@
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+procedure Rep_Clause3 is
+
+ subtype U_16 is integer range 0..2**16-1;
+
+ type TYPE1 is range 0 .. 135;
+ for TYPE1'size use 14;
+
+ type TYPE2 is range 0 .. 262_143;
+ for TYPE2'size use 18;
+
+ subtype TYPE3 is integer range 1 .. 21*6;
+
+ type ARR is array (TYPE3 range <>) of boolean;
+ pragma Pack(ARR);
+
+ subtype SUB_ARR is ARR(1 .. 5*6);
+
+ OBJ : SUB_ARR;
+
+ type R is
+ record
+ N : TYPE1;
+ L : TYPE2;
+ I : SUB_ARR;
+ CRC : U_16;
+ end record;
+ for R use
+ record at mod 4;
+ N at 0 range 0 .. 13;
+ L at 0 range 14 .. 31;
+ I at 4 range 2 .. 37;
+ CRC at 8 range 16 .. 31;
+ end record;
+ for R'size use 12*8;
+
+ type SUB_R is array (1..4) of R;
+
+ T : SUB_R;
+
+begin
+ if OBJ = T(1).I then
+ raise Program_Error;
+ end if;
+end;
diff --git a/gcc/testsuite/lib/gcc-defs.exp b/gcc/testsuite/lib/gcc-defs.exp
index 7bcbcabc087..53926a69a23 100644
--- a/gcc/testsuite/lib/gcc-defs.exp
+++ b/gcc/testsuite/lib/gcc-defs.exp
@@ -155,6 +155,10 @@ proc ${tool}_check_unsupported_p { output } {
if [regexp "(^|\n)\[^\n\]*: region \[^\n\]* is full" $output] {
return "memory full"
}
+ if {[istarget spu-*-*] && \
+ [string match "*exceeds local store*" $output]} {
+ return "memory full"
+ }
return ""
}
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 1944e83febc..7d00acf6d1a 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -186,7 +186,7 @@ proc gcc-dg-prune { system text } {
# Likewise, if we see ".text exceeds local store range" or
# similar.
if {[string match "spu-*" $system] && \
- [string match "*exceeds local store range*" $text]} {
+ [string match "*exceeds local store*" $text]} {
# The format here is important. See dg.exp.
return "::unsupported::memory full"
}
diff --git a/gcc/testsuite/lib/gfortran.exp b/gcc/testsuite/lib/gfortran.exp
index d001f657fbc..a4d6e2b5d38 100644
--- a/gcc/testsuite/lib/gfortran.exp
+++ b/gcc/testsuite/lib/gfortran.exp
@@ -27,6 +27,7 @@ load_lib prune.exp
load_lib gcc-defs.exp
load_lib timeout.exp
load_lib target-libpath.exp
+load_lib target-supports.exp
#
# GFORTRAN_UNDER_TEST is the compiler under test.
@@ -177,6 +178,13 @@ proc gfortran_init { args } {
lappend ALWAYS_GFORTRANFLAGS "additional_flags=$TOOL_OPTIONS"
}
+ # On the SPU, most of the fortran test cases exceed local store size.
+ # Use automatic overlay support to make them fit.
+ if { [check_effective_target_spu_auto_overlay] } {
+ lappend ALWAYS_GFORTRANFLAGS "ldflags=-Wl,--auto-overlay"
+ lappend ALWAYS_GFORTRANFLAGS "ldflags=-Wl,--reserved-space=131072"
+ }
+
verbose -log "ALWAYS_GFORTRANFLAGS set to $ALWAYS_GFORTRANFLAGS"
verbose "gfortran is initialized" 3
diff --git a/gcc/testsuite/lib/gnat.exp b/gcc/testsuite/lib/gnat.exp
index c14899fe914..35e18da93d2 100644
--- a/gcc/testsuite/lib/gnat.exp
+++ b/gcc/testsuite/lib/gnat.exp
@@ -255,7 +255,7 @@ proc prune_gnat_output { text } {
proc local_find_gnatmake {} {
global tool_root_dir
-
+
if ![is_remote host] {
set file [lookfor_file $tool_root_dir gnatmake]
if { $file == "" } {
@@ -263,7 +263,7 @@ proc local_find_gnatmake {} {
}
if { $file != "" } {
set root [file dirname $file]
- set CC "$file --GCC=$root/xgcc --GNATBIND=$root/gnatbind --GNATLINK=$root/gnatlink -cargs -B$root -largs -B$root -margs -B$root";
+ set CC "$file --GCC=$root/xgcc --GNATBIND=$root/gnatbind --GNATLINK=$root/gnatlink -cargs -B$root -largs --LINK=$root/xgcc -B$root -margs";
} else {
set CC [transform gnatmake]
}
diff --git a/gcc/timevar.h b/gcc/timevar.h
index d71ba3110c7..8b4caba2e35 100644
--- a/gcc/timevar.h
+++ b/gcc/timevar.h
@@ -1,5 +1,6 @@
/* Timing variables for measuring compiler performance.
- Copyright (C) 2000, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2003, 2004, 2005, 2007, 2009
+ Free Software Foundation, Inc.
Contributed by Alex Samuel <samuel@codesourcery.com>
This file is part of GCC.
@@ -72,6 +73,7 @@ struct timevar_time_def
identifier__,
typedef enum
{
+ TV_NONE,
#include "timevar.def"
TIMEVAR_LAST
}
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 0f3d30b3b63..95b5ba3d70d 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -993,11 +993,6 @@ compile_file (void)
varpool_assemble_pending_decls ();
finish_aliases_2 ();
- /* This must occur after the loop to output deferred functions.
- Else the coverage initializer would not be emitted if all the
- functions in this compilation unit were deferred. */
- coverage_finish ();
-
/* Likewise for mudflap static object registrations. */
if (flag_mudflap)
mudflap_finish_file ();
@@ -1508,6 +1503,15 @@ default_tree_printer (pretty_printer * pp, text_info *text, const char *spec,
switch (*spec)
{
+ case 'E':
+ t = va_arg (*text->args_ptr, tree);
+ if (TREE_CODE (t) == IDENTIFIER_NODE)
+ {
+ pp_string (pp, IDENTIFIER_POINTER (t));
+ return true;
+ }
+ break;
+
case 'D':
t = va_arg (*text->args_ptr, tree);
if (DECL_DEBUG_EXPR_IS_FROM (t) && DECL_DEBUG_EXPR (t))
@@ -2261,16 +2265,18 @@ do_compile (void)
It is not safe to call this function more than once. */
int
-toplev_main (unsigned int argc, const char **argv)
+toplev_main (int argc, char **argv)
{
- save_argv = argv;
+ expandargv (&argc, &argv);
+
+ save_argv = (const char **) argv;
/* Initialization of GCC's environment, and diagnostics. */
general_init (argv[0]);
/* Parse the options and do minimal processing; basically just
enough to default flags appropriately. */
- decode_options (argc, argv);
+ decode_options (argc, (const char **) argv);
init_local_tick ();
diff --git a/gcc/toplev.h b/gcc/toplev.h
index 2324b068f77..15180c36f95 100644
--- a/gcc/toplev.h
+++ b/gcc/toplev.h
@@ -27,7 +27,7 @@ along with GCC; see the file COPYING3. If not see
#define skip_leading_substring(whole, part) \
(strncmp (whole, part, strlen (part)) ? NULL : whole + strlen (part))
-extern int toplev_main (unsigned int, const char **);
+extern int toplev_main (int, char **);
extern int read_integral_parameter (const char *, const char *, const int);
extern void strip_off_ending (char *, int);
extern const char *trim_filename (const char *);
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 6c5eb87d644..9c701463784 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -375,7 +375,29 @@ make_blocks (gimple_seq seq)
/* If STMT is a basic block terminator, set START_NEW_BLOCK for the
next iteration. */
if (stmt_ends_bb_p (stmt))
- start_new_block = true;
+ {
+ /* If the stmt can make abnormal goto use a new temporary
+ for the assignment to the LHS. This makes sure the old value
+ of the LHS is available on the abnormal edge. Otherwise
+ we will end up with overlapping life-ranges for abnormal
+ SSA names. */
+ if (gimple_has_lhs (stmt)
+ && stmt_can_make_abnormal_goto (stmt)
+ && is_gimple_reg_type (TREE_TYPE (gimple_get_lhs (stmt))))
+ {
+ tree lhs = gimple_get_lhs (stmt);
+ tree tmp = create_tmp_var (TREE_TYPE (lhs), NULL);
+ gimple s = gimple_build_assign (lhs, tmp);
+ gimple_set_location (s, gimple_location (stmt));
+ gimple_set_block (s, gimple_block (stmt));
+ gimple_set_lhs (stmt, tmp);
+ if (TREE_CODE (TREE_TYPE (tmp)) == COMPLEX_TYPE
+ || TREE_CODE (TREE_TYPE (tmp)) == VECTOR_TYPE)
+ DECL_GIMPLE_REG_P (tmp) = 1;
+ gsi_insert_after (&i, s, GSI_SAME_STMT);
+ }
+ start_new_block = true;
+ }
gsi_next (&i);
first_stmt_of_seq = false;
@@ -1552,7 +1574,8 @@ remove_useless_stmts_cond (gimple_stmt_iterator *gsi, struct rus_data *data)
gimple stmt = gsi_stmt (*gsi);
/* The folded result must still be a conditional statement. */
- fold_stmt_inplace (stmt);
+ fold_stmt (gsi);
+ gcc_assert (gsi_stmt (*gsi) == stmt);
data->may_branch = true;
@@ -2075,7 +2098,7 @@ struct gimple_opt_pass pass_remove_useless_stmts =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_gimple_any, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -3546,8 +3569,52 @@ verify_gimple_assign_binary (gimple stmt)
return false;
}
+ case PLUS_EXPR:
+ {
+ /* We use regular PLUS_EXPR for vectors.
+ ??? This just makes the checker happy and may not be what is
+ intended. */
+ if (TREE_CODE (lhs_type) == VECTOR_TYPE
+ && POINTER_TYPE_P (TREE_TYPE (lhs_type)))
+ {
+ if (TREE_CODE (rhs1_type) != VECTOR_TYPE
+ || TREE_CODE (rhs2_type) != VECTOR_TYPE)
+ {
+ error ("invalid non-vector operands to vector valued plus");
+ return true;
+ }
+ lhs_type = TREE_TYPE (lhs_type);
+ rhs1_type = TREE_TYPE (rhs1_type);
+ rhs2_type = TREE_TYPE (rhs2_type);
+ /* PLUS_EXPR is commutative, so we might end up canonicalizing
+ the pointer to 2nd place. */
+ if (POINTER_TYPE_P (rhs2_type))
+ {
+ tree tem = rhs1_type;
+ rhs1_type = rhs2_type;
+ rhs2_type = tem;
+ }
+ goto do_pointer_plus_expr_check;
+ }
+ }
+ /* Fallthru. */
+ case MINUS_EXPR:
+ {
+ if (POINTER_TYPE_P (lhs_type)
+ || POINTER_TYPE_P (rhs1_type)
+ || POINTER_TYPE_P (rhs2_type))
+ {
+ error ("invalid (pointer) operands to plus/minus");
+ return true;
+ }
+
+ /* Continue with generic binary expression handling. */
+ break;
+ }
+
case POINTER_PLUS_EXPR:
{
+do_pointer_plus_expr_check:
if (!POINTER_TYPE_P (rhs1_type)
|| !useless_type_conversion_p (lhs_type, rhs1_type)
|| !useless_type_conversion_p (sizetype, rhs2_type))
@@ -3603,21 +3670,6 @@ verify_gimple_assign_binary (gimple stmt)
connected to the operand types. */
return verify_gimple_comparison (lhs_type, rhs1, rhs2);
- case PLUS_EXPR:
- case MINUS_EXPR:
- {
- if (POINTER_TYPE_P (lhs_type)
- || POINTER_TYPE_P (rhs1_type)
- || POINTER_TYPE_P (rhs2_type))
- {
- error ("invalid (pointer) operands to plus/minus");
- return true;
- }
-
- /* Continue with generic binary expression handling. */
- break;
- }
-
case WIDEN_SUM_EXPR:
case WIDEN_MULT_EXPR:
case VEC_WIDEN_MULT_HI_EXPR:
@@ -4104,7 +4156,10 @@ verify_stmt (gimple_stmt_iterator *gsi)
to match. */
if (lookup_stmt_eh_region (stmt) >= 0)
{
- if (!stmt_could_throw_p (stmt))
+ /* During IPA passes, ipa-pure-const sets nothrow flags on calls
+ and they are updated on statements only after fixup_cfg
+ is executed at beggining of expansion stage. */
+ if (!stmt_could_throw_p (stmt) && cgraph_state != CGRAPH_STATE_IPA_SSA)
{
error ("statement marked for throw, but doesn%'t");
goto fail;
@@ -7118,7 +7173,7 @@ struct gimple_opt_pass pass_warn_function_return =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -7152,7 +7207,7 @@ struct gimple_opt_pass pass_warn_function_noreturn =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c
index ac7748ed513..931d030ee32 100644
--- a/gcc/tree-complex.c
+++ b/gcc/tree-complex.c
@@ -1,5 +1,6 @@
/* Lower complex number operations to scalar operations.
- Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of GCC.
@@ -1605,7 +1606,7 @@ struct gimple_opt_pass pass_lower_complex =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1656,7 +1657,7 @@ struct gimple_opt_pass pass_lower_complex_O0 =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c
index 1738dd01266..1bd54cd99a3 100644
--- a/gcc/tree-dfa.c
+++ b/gcc/tree-dfa.c
@@ -88,26 +88,10 @@ find_referenced_vars (void)
FOR_EACH_BB (bb)
{
for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
- {
- size_t i;
- gimple stmt = gsi_stmt (si);
- for (i = 0; i < gimple_num_ops (stmt); i++)
- walk_tree (gimple_op_ptr (stmt, i), find_vars_r, NULL, NULL);
- }
+ find_referenced_vars_in (gsi_stmt (si));
for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
- {
- gimple phi = gsi_stmt (si);
- size_t i, len = gimple_phi_num_args (phi);
-
- walk_tree (gimple_phi_result_ptr (phi), find_vars_r, NULL, NULL);
-
- for (i = 0; i < len; i++)
- {
- tree arg = gimple_phi_arg_def (phi, i);
- walk_tree (&arg, find_vars_r, NULL, NULL);
- }
- }
+ find_referenced_vars_in (gsi_stmt (si));
}
return 0;
@@ -498,6 +482,33 @@ find_vars_r (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
return NULL_TREE;
}
+/* Find referenced variables in STMT. In contrast with
+ find_new_referenced_vars, this function will not mark newly found
+ variables for renaming. */
+
+void
+find_referenced_vars_in (gimple stmt)
+{
+ size_t i;
+
+ if (gimple_code (stmt) != GIMPLE_PHI)
+ {
+ for (i = 0; i < gimple_num_ops (stmt); i++)
+ walk_tree (gimple_op_ptr (stmt, i), find_vars_r, NULL, NULL);
+ }
+ else
+ {
+ walk_tree (gimple_phi_result_ptr (stmt), find_vars_r, NULL, NULL);
+
+ for (i = 0; i < gimple_phi_num_args (stmt); i++)
+ {
+ tree arg = gimple_phi_arg_def (stmt, i);
+ walk_tree (&arg, find_vars_r, NULL, NULL);
+ }
+ }
+}
+
+
/* Lookup UID in the referenced_vars hashtable and return the associated
variable. */
diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h
index 7de8db8d321..536a111bb44 100644
--- a/gcc/tree-flow-inline.h
+++ b/gcc/tree-flow-inline.h
@@ -234,7 +234,7 @@ get_lineno (const_gimple stmt)
return -1;
loc = gimple_location (stmt);
- if (loc != UNKNOWN_LOCATION)
+ if (loc == UNKNOWN_LOCATION)
return -1;
return LOCATION_LINE (loc);
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h
index f2d7c5f7f93..d78baf45923 100644
--- a/gcc/tree-flow.h
+++ b/gcc/tree-flow.h
@@ -616,6 +616,7 @@ extern tree gimple_default_def (struct function *, tree);
extern bool stmt_references_abnormal_ssa_name (gimple);
extern tree get_ref_base_and_extent (tree, HOST_WIDE_INT *,
HOST_WIDE_INT *, HOST_WIDE_INT *);
+extern void find_referenced_vars_in (gimple);
/* In tree-phinodes.c */
extern void reserve_phi_args_for_new_edge (basic_block);
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index 0e41d5fa679..f9b942a9520 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -1,5 +1,6 @@
/* If-conversion for vectorizer.
- Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
Contributed by Devang Patel <dpatel@apple.com>
This file is part of GCC.
@@ -1162,7 +1163,7 @@ struct gimple_opt_pass pass_if_conversion =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c
index 67f8fd87220..db1af2bd96b 100644
--- a/gcc/tree-into-ssa.c
+++ b/gcc/tree-into-ssa.c
@@ -1,5 +1,5 @@
/* Rewrite a program in Normal form into SSA.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Diego Novillo <dnovillo@redhat.com>
@@ -2272,7 +2272,7 @@ struct gimple_opt_pass pass_build_ssa =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg | PROP_referenced_vars, /* properties_required */
PROP_ssa, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-iterator.c b/gcc/tree-iterator.c
index 53495ebae2a..43218f6b754 100644
--- a/gcc/tree-iterator.c
+++ b/gcc/tree-iterator.c
@@ -238,64 +238,6 @@ tsi_delink (tree_stmt_iterator *i)
i->ptr = next;
}
-/* Move all statements in the statement list after I to a new
- statement list. I itself is unchanged. */
-
-tree
-tsi_split_statement_list_after (const tree_stmt_iterator *i)
-{
- struct tree_statement_list_node *cur, *next;
- tree old_sl, new_sl;
-
- cur = i->ptr;
- /* How can we possibly split after the end, or before the beginning? */
- gcc_assert (cur);
- next = cur->next;
-
- old_sl = i->container;
- new_sl = alloc_stmt_list ();
- TREE_SIDE_EFFECTS (new_sl) = 1;
-
- STATEMENT_LIST_HEAD (new_sl) = next;
- STATEMENT_LIST_TAIL (new_sl) = STATEMENT_LIST_TAIL (old_sl);
- STATEMENT_LIST_TAIL (old_sl) = cur;
- cur->next = NULL;
- next->prev = NULL;
-
- return new_sl;
-}
-
-/* Move all statements in the statement list before I to a new
- statement list. I is set to the head of the new list. */
-
-tree
-tsi_split_statement_list_before (tree_stmt_iterator *i)
-{
- struct tree_statement_list_node *cur, *prev;
- tree old_sl, new_sl;
-
- cur = i->ptr;
- /* How can we possibly split after the end, or before the beginning? */
- gcc_assert (cur);
- prev = cur->prev;
-
- old_sl = i->container;
- new_sl = alloc_stmt_list ();
- TREE_SIDE_EFFECTS (new_sl) = 1;
- i->container = new_sl;
-
- STATEMENT_LIST_HEAD (new_sl) = cur;
- STATEMENT_LIST_TAIL (new_sl) = STATEMENT_LIST_TAIL (old_sl);
- STATEMENT_LIST_TAIL (old_sl) = prev;
- cur->prev = NULL;
- if (prev)
- prev->next = NULL;
- else
- STATEMENT_LIST_HEAD (old_sl) = NULL;
-
- return new_sl;
-}
-
/* Return the first expression in a sequence of COMPOUND_EXPRs,
or in a STATEMENT_LIST. */
@@ -320,19 +262,6 @@ expr_first (tree expr)
/* Return the last expression in a sequence of COMPOUND_EXPRs,
or in a STATEMENT_LIST. */
-#define EXPR_LAST_BODY do { \
- if (expr == NULL_TREE) \
- return expr;\
- if (TREE_CODE (expr) == STATEMENT_LIST) \
- { \
- struct tree_statement_list_node *n = STATEMENT_LIST_TAIL (expr); \
- return n ? n->stmt : NULL_TREE; \
- } \
- while (TREE_CODE (expr) == COMPOUND_EXPR) \
- expr = TREE_OPERAND (expr, 1); \
- return expr; \
-} while (0)
-
tree
expr_last (tree expr)
{
@@ -351,29 +280,4 @@ expr_last (tree expr)
return expr;
}
-/* If EXPR is a single statement return it. If EXPR is a
- STATEMENT_LIST containing exactly one statement S, return S.
- Otherwise, return NULL. */
-
-tree
-expr_only (tree expr)
-{
- if (expr == NULL_TREE)
- return NULL_TREE;
-
- if (TREE_CODE (expr) == STATEMENT_LIST)
- {
- struct tree_statement_list_node *n = STATEMENT_LIST_TAIL (expr);
- if (n && STATEMENT_LIST_HEAD (expr) == n)
- return n->stmt;
- else
- return NULL_TREE;
- }
-
- if (TREE_CODE (expr) == COMPOUND_EXPR)
- return NULL_TREE;
-
- return expr;
-}
-
#include "gt-tree-iterator.h"
diff --git a/gcc/tree-iterator.h b/gcc/tree-iterator.h
index 98f0cf80c49..c765bb5575d 100644
--- a/gcc/tree-iterator.h
+++ b/gcc/tree-iterator.h
@@ -113,9 +113,6 @@ extern void tsi_link_after (tree_stmt_iterator *, tree,
void tsi_delink (tree_stmt_iterator *);
-tree tsi_split_statement_list_after (const tree_stmt_iterator *);
-tree tsi_split_statement_list_before (tree_stmt_iterator *);
-
void append_to_statement_list (tree, tree *);
void append_to_statement_list_force (tree, tree *);
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index 61762971c7c..a5c73165cb4 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -216,7 +216,7 @@ generate_loops_for_partition (struct loop *loop, bitmap partition, bool copy_p)
return true;
}
-/* Build size argument. */
+/* Build the size argument for a memset call. */
static inline tree
build_size_arg (tree nb_iter, tree op, gimple_seq* stmt_list)
@@ -224,8 +224,10 @@ build_size_arg (tree nb_iter, tree op, gimple_seq* stmt_list)
tree nb_bytes;
gimple_seq stmts = NULL;
- nb_bytes = fold_build2 (MULT_EXPR, TREE_TYPE (nb_iter),
- nb_iter, TYPE_SIZE_UNIT (TREE_TYPE (op)));
+ nb_bytes = fold_build2 (MULT_EXPR, size_type_node,
+ fold_convert (size_type_node, nb_iter),
+ fold_convert (size_type_node,
+ TYPE_SIZE_UNIT (TREE_TYPE (op))));
nb_bytes = force_gimple_operand (nb_bytes, &stmts, true, NULL);
gimple_seq_add_seq (stmt_list, stmts);
@@ -272,7 +274,8 @@ generate_memset_zero (gimple stmt, tree op0, tree nb_iter,
{
nb_bytes = build_size_arg (nb_iter, op0, &stmt_list);
addr_base = size_binop (PLUS_EXPR, DR_OFFSET (dr), DR_INIT (dr));
- addr_base = fold_build2 (MINUS_EXPR, sizetype, addr_base, nb_bytes);
+ addr_base = fold_build2 (MINUS_EXPR, sizetype, addr_base,
+ fold_convert (sizetype, nb_bytes));
addr_base = force_gimple_operand (addr_base, &stmts, true, NULL);
gimple_seq_add_seq (&stmt_list, stmts);
@@ -291,7 +294,7 @@ generate_memset_zero (gimple stmt, tree op0, tree nb_iter,
fn = build1 (ADDR_EXPR, build_pointer_type (fntype), fndecl);
if (!nb_bytes)
- nb_bytes = build_size_arg (nb_iter, op0, &stmt_list);
+ nb_bytes = build_size_arg (nb_iter, op0, &stmt_list);
fn_call = gimple_build_call (fn, 3, mem, integer_zero_node, nb_bytes);
gimple_seq_add_stmt (&stmt_list, fn_call);
diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c
index dae12874dad..23cd169ae09 100644
--- a/gcc/tree-mudflap.c
+++ b/gcc/tree-mudflap.c
@@ -1,5 +1,5 @@
/* Mudflap: narrow-pointer bounds-checking by tree rewriting.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Frank Ch. Eigler <fche@redhat.com>
and Graydon Hoare <graydon@redhat.com>
@@ -634,7 +634,7 @@ mf_build_check_statement_for (tree base, tree limit,
/* Build the conditional jump. 'cond' is just a temporary so we can
simply build a void COND_EXPR. We do need labels in both arms though. */
- g = gimple_build_cond (NE_EXPR, cond, integer_zero_node, NULL_TREE,
+ g = gimple_build_cond (NE_EXPR, cond, boolean_false_node, NULL_TREE,
NULL_TREE);
gimple_set_location (g, location);
gimple_seq_add_stmt (&seq, g);
@@ -664,9 +664,9 @@ mf_build_check_statement_for (tree base, tree limit,
/* u is a string, so it is already a gimple value. */
u = mf_file_function_line_tree (location);
/* NB: we pass the overall [base..limit] range to mf_check. */
- v = fold_build2 (PLUS_EXPR, integer_type_node,
+ v = fold_build2 (PLUS_EXPR, mf_uintptr_type,
fold_build2 (MINUS_EXPR, mf_uintptr_type, mf_limit, mf_base),
- integer_one_node);
+ build_int_cst (mf_uintptr_type, 1));
v = force_gimple_operand (v, &stmts, true, NULL_TREE);
gimple_seq_add_seq (&seq, stmts);
g = gimple_build_call (mf_check_fndecl, 4, mf_base, v, dirflag, u);
@@ -1346,7 +1346,7 @@ struct gimple_opt_pass pass_mudflap_1 =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_gimple_any, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1365,7 +1365,7 @@ struct gimple_opt_pass pass_mudflap_2 =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_gimple_leh, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-nomudflap.c b/gcc/tree-nomudflap.c
index 3d1c7eb1d6e..5429e289c35 100644
--- a/gcc/tree-nomudflap.c
+++ b/gcc/tree-nomudflap.c
@@ -100,7 +100,7 @@ struct gimple_opt_pass pass_mudflap_1 =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -119,7 +119,7 @@ struct gimple_opt_pass pass_mudflap_2 =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-nrv.c b/gcc/tree-nrv.c
index 7e811cf8c9d..a82a3b01c68 100644
--- a/gcc/tree-nrv.c
+++ b/gcc/tree-nrv.c
@@ -1,5 +1,5 @@
/* Language independent return value optimizations
- Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
@@ -349,7 +349,7 @@ struct gimple_opt_pass pass_return_slot =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa | PROP_alias, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c
index 7e346a9f55d..d99bc238576 100644
--- a/gcc/tree-object-size.c
+++ b/gcc/tree-object-size.c
@@ -1,5 +1,6 @@
/* __builtin_object_size (ptr, object_size_type) computation
- Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
Contributed by Jakub Jelinek <jakub@redhat.com>
This file is part of GCC.
@@ -1111,7 +1112,7 @@ struct gimple_opt_pass pass_object_sizes =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index d69fd2949df..666b31bd844 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -1,5 +1,5 @@
/* Top-level control of tree optimizations.
- Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2008
+ Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Diego Novillo <dnovillo@redhat.com>
@@ -72,7 +72,7 @@ struct gimple_opt_pass pass_all_optimizations =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -100,7 +100,7 @@ struct simple_ipa_opt_pass pass_early_local_passes =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -141,7 +141,7 @@ struct gimple_opt_pass pass_all_early_optimizations =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -172,7 +172,7 @@ struct gimple_opt_pass pass_cleanup_cfg =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -207,7 +207,7 @@ struct gimple_opt_pass pass_cleanup_cfg_post_optimizing =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -241,7 +241,7 @@ struct gimple_opt_pass pass_free_datastructures =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -270,7 +270,7 @@ struct gimple_opt_pass pass_free_cfg_annotations =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -341,7 +341,7 @@ struct gimple_opt_pass pass_fixup_cfg =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -371,7 +371,7 @@ struct gimple_opt_pass pass_init_datastructures =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index 07e4247ec8e..f0ae58a0414 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -23,7 +23,7 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_TREE_PASS_H
#define GCC_TREE_PASS_H 1
-/* In tree-dump.c */
+#include "timevar.h"
/* Different tree dump places. When you add new tree dump places,
extend the DUMP_FILES array in tree-dump.c. */
@@ -75,6 +75,7 @@ enum tree_dump_index
dumper to print stmts. */
#define TDF_RHS_ONLY (1 << 17) /* a flag to only print the RHS of
a gimple stmt. */
+/* In tree-dump.c */
extern char *get_dump_file_name (enum tree_dump_index);
extern int dump_enabled_p (enum tree_dump_index);
@@ -128,7 +129,7 @@ struct opt_pass
/* The timevar id associated with this pass. */
/* ??? Ideally would be dynamically assigned. */
- unsigned int tv_id;
+ timevar_id_t tv_id;
/* Sets of properties input and output from this pass. */
unsigned int properties_required;
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index a497ca794f5..c8cbe1d4351 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -488,6 +488,7 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
case TREE_BINFO:
dump_generic_node (buffer, BINFO_TYPE (node), spc, flags, false);
+ break;
case TREE_VEC:
{
@@ -551,8 +552,7 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
else if (TREE_CODE (node) == VECTOR_TYPE)
{
pp_string (buffer, "vector ");
- dump_generic_node (buffer, TREE_TYPE (node),
- spc, flags, false);
+ dump_generic_node (buffer, TREE_TYPE (node), spc, flags, false);
}
else if (TREE_CODE (node) == INTEGER_TYPE)
{
@@ -562,6 +562,24 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
pp_decimal_int (buffer, TYPE_PRECISION (node));
pp_string (buffer, ">");
}
+ else if (TREE_CODE (node) == COMPLEX_TYPE)
+ {
+ pp_string (buffer, "__complex__ ");
+ dump_generic_node (buffer, TREE_TYPE (node), spc, flags, false);
+ }
+ else if (TREE_CODE (node) == REAL_TYPE)
+ {
+ pp_string (buffer, "<float:");
+ pp_decimal_int (buffer, TYPE_PRECISION (node));
+ pp_string (buffer, ">");
+ }
+ else if (TREE_CODE (node) == FIXED_POINT_TYPE)
+ {
+ pp_string (buffer, "<fixed-point-");
+ pp_string (buffer, TYPE_SATURATING (node) ? "sat:" : "nonsat:");
+ pp_decimal_int (buffer, TYPE_PRECISION (node));
+ pp_string (buffer, ">");
+ }
else
pp_string (buffer, "<unnamed type>");
}
@@ -572,7 +590,12 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
case REFERENCE_TYPE:
str = (TREE_CODE (node) == POINTER_TYPE ? "*" : "&");
- if (TREE_CODE (TREE_TYPE (node)) == FUNCTION_TYPE)
+ if (TREE_TYPE (node) == NULL)
+ {
+ pp_string (buffer, str);
+ pp_string (buffer, "<null type>");
+ }
+ else if (TREE_CODE (TREE_TYPE (node)) == FUNCTION_TYPE)
{
tree fnode = TREE_TYPE (node);
@@ -612,11 +635,6 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
NIY;
break;
- case METHOD_TYPE:
- dump_decl_name (buffer, TYPE_NAME (TYPE_METHOD_BASETYPE (node)), flags);
- pp_string (buffer, "::");
- break;
-
case TARGET_MEM_REF:
{
const char *sep = "";
@@ -710,7 +728,12 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
if (TYPE_NAME (node))
dump_generic_node (buffer, TYPE_NAME (node), spc, flags, false);
- else
+ else if (!(flags & TDF_SLIM))
+ /* FIXME: If we eliminate the 'else' above and attempt
+ to show the fields for named types, we may get stuck
+ following a cycle of pointers to structs. The alleged
+ self-reference check in print_struct_decl will not detect
+ cycles involving more than one pointer or struct type. */
print_struct_decl (buffer, node, spc, flags);
break;
}
@@ -836,6 +859,23 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
break;
case FUNCTION_TYPE:
+ case METHOD_TYPE:
+ dump_generic_node (buffer, TREE_TYPE (node), spc, flags, false);
+ pp_space (buffer);
+ if (TREE_CODE (node) == METHOD_TYPE)
+ {
+ if (TYPE_METHOD_BASETYPE (node))
+ dump_decl_name (buffer, TYPE_NAME (TYPE_METHOD_BASETYPE (node)),
+ flags);
+ else
+ pp_string (buffer, "<null method basetype>");
+ pp_string (buffer, "::");
+ }
+ if (TYPE_NAME (node) && DECL_NAME (TYPE_NAME (node)))
+ dump_decl_name (buffer, TYPE_NAME (node), flags);
+ else
+ pp_printf (buffer, "<T%x>", TYPE_UID (node));
+ dump_function_declaration (buffer, node, spc, flags);
break;
case FUNCTION_DECL:
@@ -2206,8 +2246,8 @@ print_struct_decl (pretty_printer *buffer, const_tree node, int spc, int flags)
Maybe this could be solved by looking at the scope in which the
structure was declared. */
if (TREE_TYPE (tmp) != node
- || (TREE_CODE (TREE_TYPE (tmp)) == POINTER_TYPE
- && TREE_TYPE (TREE_TYPE (tmp)) != node))
+ && (TREE_CODE (TREE_TYPE (tmp)) != POINTER_TYPE
+ || TREE_TYPE (TREE_TYPE (tmp)) != node))
{
print_declaration (buffer, tmp, spc+2, flags);
pp_newline (buffer);
diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c
index 06f113bea09..8ffedf1823e 100644
--- a/gcc/tree-profile.c
+++ b/gcc/tree-profile.c
@@ -208,6 +208,8 @@ static tree
prepare_instrumented_value (gimple_stmt_iterator *gsi, histogram_value value)
{
tree val = value->hvalue.value;
+ if (POINTER_TYPE_P (TREE_TYPE (val)))
+ val = fold_convert (sizetype, val);
return force_gimple_operand_gsi (gsi, fold_convert (gcov_type_node, val),
true, NULL_TREE, true, GSI_SAME_STMT);
}
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index b9cd54732b9..8982280fb2c 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -670,16 +670,6 @@ refs_may_alias_p_1 (tree ref1, tree ref2)
|| INDIRECT_REF_P (ref2)
|| TREE_CODE (ref2) == TARGET_MEM_REF));
- /* Defer to TBAA if possible. */
- if (flag_strict_aliasing
- && !alias_sets_conflict_p (get_alias_set (ref1), get_alias_set (ref2)))
- return false;
-
- /* If one reference is a TARGET_MEM_REF weird things are allowed. */
- if (TREE_CODE (ref1) == TARGET_MEM_REF
- || TREE_CODE (ref2) == TARGET_MEM_REF)
- return true;
-
/* Decompose the references into their base objects and the access. */
base1 = get_ref_base_and_extent (ref1, &offset1, &size1, &max_size1);
base2 = get_ref_base_and_extent (ref2, &offset2, &size2, &max_size2);
@@ -693,14 +683,32 @@ refs_may_alias_p_1 (tree ref1, tree ref2)
|| is_gimple_min_invariant (base2))
return false;
+ /* Defer to simple offset based disambiguation if we have
+ references based on two decls. Do this before defering to
+ TBAA to handle must-alias cases in conformance with the
+ GCC extension of allowing type-punning through unions. */
var1_p = SSA_VAR_P (base1);
var2_p = SSA_VAR_P (base2);
- ind1_p = INDIRECT_REF_P (base1);
- ind2_p = INDIRECT_REF_P (base2);
if (var1_p && var2_p)
return decl_refs_may_alias_p (base1, offset1, max_size1,
base2, offset2, max_size2);
- else if (var1_p && ind2_p)
+
+ /* First defer to TBAA if possible. */
+ if (flag_strict_aliasing
+ && !alias_sets_conflict_p (get_alias_set (ref1), get_alias_set (ref2)))
+ return false;
+
+ /* If one reference is a TARGET_MEM_REF weird things are allowed. Still
+ TBAA disambiguation based on the access type is possible, so bail
+ out only after that check. */
+ if (TREE_CODE (ref1) == TARGET_MEM_REF
+ || TREE_CODE (ref2) == TARGET_MEM_REF)
+ return true;
+
+ /* Dispatch to the pointer-vs-decl or pointer-vs-pointer disambiguators. */
+ ind1_p = INDIRECT_REF_P (base1);
+ ind2_p = INDIRECT_REF_P (base2);
+ if (var1_p && ind2_p)
return indirect_ref_may_alias_decl_p (ref2, TREE_OPERAND (base2, 0),
offset2, max_size2, -1,
ref1, base1,
@@ -737,7 +745,7 @@ refs_may_alias_p (tree ref1, tree ref2)
static bool
ref_maybe_used_by_call_p_1 (gimple call, tree ref)
{
- tree base, fndecl;
+ tree base;
unsigned i;
int flags = gimple_call_flags (call);
@@ -758,14 +766,8 @@ ref_maybe_used_by_call_p_1 (gimple call, tree ref)
cannot possibly use it. */
if (DECL_P (base)
&& !may_be_aliased (base)
- /* But local statics can be used through recursion! */
- && (!is_global_var (base)
- /* But not via builtins.
- ??? We just assume that this is true if we are not a
- builtin function ourself. */
- || (!DECL_BUILT_IN (cfun->decl)
- && (fndecl = gimple_call_fndecl (call))
- && DECL_BUILT_IN (fndecl))))
+ /* But local statics can be used through recursion. */
+ && !is_global_var (base))
goto process_args;
/* Check if base is a global static variable that is not read
@@ -865,7 +867,7 @@ ref_maybe_used_by_stmt_p (gimple stmt, tree ref)
static bool
call_may_clobber_ref_p_1 (gimple call, tree ref)
{
- tree fndecl, base;
+ tree base;
/* If the call is pure or const it cannot clobber anything. */
if (gimple_call_flags (call)
@@ -884,15 +886,11 @@ call_may_clobber_ref_p_1 (gimple call, tree ref)
cannot possibly clobber it. */
if (DECL_P (base)
&& !may_be_aliased (base)
- /* But local non-readonly statics can be modified through recursion! */
+ /* But local non-readonly statics can be modified through recursion
+ or the call may implement a threading barrier which we must
+ treat as may-def. */
&& (TREE_READONLY (base)
- || !is_global_var (base)
- /* But not via builtins.
- ??? We just assume that this is true if we are not a
- builtin function ourself. */
- || (!DECL_BUILT_IN (cfun->decl)
- && (fndecl = gimple_call_fndecl (call))
- && DECL_BUILT_IN (fndecl))))
+ || !is_global_var (base)))
return false;
/* Check if base is a global static variable that is not written
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index 226fd3dbb27..9cf2f83546b 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -228,6 +228,8 @@ typedef enum
doing the store). */
static prop_value_t *const_val;
+static void canonicalize_float_value (prop_value_t *);
+
/* Dump constant propagation value VAL to file OUTF prefixed by PREFIX. */
static void
@@ -387,6 +389,8 @@ get_value (tree var)
if (val->lattice_val == UNINITIALIZED)
*val = get_default_value (var);
+ canonicalize_float_value (val);
+
return val;
}
@@ -1612,7 +1616,7 @@ struct gimple_opt_pass pass_ccp =
};
-/* A subroutine of fold_stmt_r. Attempts to fold *(A+O) to A[X].
+/* A subroutine of fold_stmt. Attempts to fold *(A+O) to A[X].
BASE is an array type. OFFSET is a byte displacement. ORIG_TYPE
is the desired result type. */
@@ -1997,7 +2001,7 @@ maybe_fold_offset_to_address (tree addr, tree offset, tree orig_type)
return NULL_TREE;
}
-/* A subroutine of fold_stmt_r. Attempt to simplify *(BASE+OFFSET).
+/* A subroutine of fold_stmt. Attempt to simplify *(BASE+OFFSET).
Return the simplified expression, or NULL if nothing could be done. */
static tree
@@ -2216,180 +2220,64 @@ maybe_fold_stmt_addition (tree res_type, tree op0, tree op1)
return t;
}
-/* For passing state through walk_tree into fold_stmt_r and its
- children. */
-
-struct fold_stmt_r_data
-{
- gimple stmt;
- bool *changed_p;
- bool *inside_addr_expr_p;
-};
-
-/* Subroutine of fold_stmt called via walk_tree. We perform several
- simplifications of EXPR_P, mostly having to do with pointer arithmetic. */
+/* Subroutine of fold_stmt. We perform several simplifications of the
+ memory reference tree EXPR and make sure to re-gimplify them properly
+ after propagation of constant addresses. IS_LHS is true if the
+ reference is supposed to be an lvalue. */
static tree
-fold_stmt_r (tree *expr_p, int *walk_subtrees, void *data)
+maybe_fold_reference (tree expr, bool is_lhs)
{
- struct walk_stmt_info *wi = (struct walk_stmt_info *) data;
- struct fold_stmt_r_data *fold_stmt_r_data;
- bool *inside_addr_expr_p;
- bool *changed_p;
- tree expr = *expr_p, t;
- bool volatile_p = TREE_THIS_VOLATILE (expr);
+ tree *t = &expr;
- fold_stmt_r_data = (struct fold_stmt_r_data *) wi->info;
- inside_addr_expr_p = fold_stmt_r_data->inside_addr_expr_p;
- changed_p = fold_stmt_r_data->changed_p;
+ if (TREE_CODE (expr) == ARRAY_REF
+ && !is_lhs)
+ {
+ tree tem = fold_read_from_constant_string (expr);
+ if (tem)
+ return tem;
+ }
- /* ??? It'd be nice if walk_tree had a pre-order option. */
- switch (TREE_CODE (expr))
+ /* ??? We might want to open-code the relevant remaining cases
+ to avoid using the generic fold. */
+ if (handled_component_p (*t)
+ && CONSTANT_CLASS_P (TREE_OPERAND (*t, 0)))
{
- case INDIRECT_REF:
- t = walk_tree (&TREE_OPERAND (expr, 0), fold_stmt_r, data, NULL);
- if (t)
- return t;
- *walk_subtrees = 0;
+ tree tem = fold (*t);
+ if (tem != *t)
+ return tem;
+ }
- t = maybe_fold_stmt_indirect (expr, TREE_OPERAND (expr, 0),
- integer_zero_node);
+ while (handled_component_p (*t))
+ t = &TREE_OPERAND (*t, 0);
+
+ if (TREE_CODE (*t) == INDIRECT_REF)
+ {
+ tree tem = maybe_fold_stmt_indirect (*t, TREE_OPERAND (*t, 0),
+ integer_zero_node);
/* Avoid folding *"abc" = 5 into 'a' = 5. */
- if (wi->is_lhs && t && TREE_CODE (t) == INTEGER_CST)
- t = NULL_TREE;
- if (!t
- && TREE_CODE (TREE_OPERAND (expr, 0)) == ADDR_EXPR)
+ if (is_lhs && tem && CONSTANT_CLASS_P (tem))
+ tem = NULL_TREE;
+ if (!tem
+ && TREE_CODE (TREE_OPERAND (*t, 0)) == ADDR_EXPR)
/* If we had a good reason for propagating the address here,
make sure we end up with valid gimple. See PR34989. */
- t = TREE_OPERAND (TREE_OPERAND (expr, 0), 0);
- break;
-
- case NOP_EXPR:
- t = walk_tree (&TREE_OPERAND (expr, 0), fold_stmt_r, data, NULL);
- if (t)
- return t;
- *walk_subtrees = 0;
-
- if (POINTER_TYPE_P (TREE_TYPE (expr))
- && POINTER_TYPE_P (TREE_TYPE (TREE_TYPE (expr)))
- && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (expr, 0)))
- && (t = maybe_fold_offset_to_address (TREE_OPERAND (expr, 0),
- integer_zero_node,
- TREE_TYPE (TREE_TYPE (expr)))))
- return t;
- break;
-
- /* ??? Could handle more ARRAY_REFs here, as a variant of INDIRECT_REF.
- We'd only want to bother decomposing an existing ARRAY_REF if
- the base array is found to have another offset contained within.
- Otherwise we'd be wasting time. */
- case ARRAY_REF:
- /* If we are not processing expressions found within an
- ADDR_EXPR, then we can fold constant array references.
- Don't fold on LHS either, to avoid folding "abc"[0] = 5
- into 'a' = 5. */
- if (!*inside_addr_expr_p && !wi->is_lhs)
- t = fold_read_from_constant_string (expr);
- else
- t = NULL;
- break;
-
- case ADDR_EXPR:
- *inside_addr_expr_p = true;
- t = walk_tree (&TREE_OPERAND (expr, 0), fold_stmt_r, data, NULL);
- *inside_addr_expr_p = false;
- if (t)
- return t;
- *walk_subtrees = 0;
-
- /* Make sure the value is properly considered constant, and so gets
- propagated as expected. */
- if (*changed_p)
- recompute_tree_invariant_for_addr_expr (expr);
- return NULL_TREE;
-
- case COMPONENT_REF:
- t = walk_tree (&TREE_OPERAND (expr, 0), fold_stmt_r, data, NULL);
- if (t)
- return t;
- *walk_subtrees = 0;
-
- /* Make sure the FIELD_DECL is actually a field in the type on the lhs.
- We've already checked that the records are compatible, so we should
- come up with a set of compatible fields. */
- {
- tree expr_record = TREE_TYPE (TREE_OPERAND (expr, 0));
- tree expr_field = TREE_OPERAND (expr, 1);
-
- if (DECL_FIELD_CONTEXT (expr_field) != TYPE_MAIN_VARIANT (expr_record))
- {
- expr_field = find_compatible_field (expr_record, expr_field);
- TREE_OPERAND (expr, 1) = expr_field;
- }
- }
- break;
+ tem = TREE_OPERAND (TREE_OPERAND (*t, 0), 0);
- case TARGET_MEM_REF:
- t = maybe_fold_tmr (expr);
- break;
-
- case POINTER_PLUS_EXPR:
- t = walk_tree (&TREE_OPERAND (expr, 0), fold_stmt_r, data, NULL);
- if (t)
- return t;
- t = walk_tree (&TREE_OPERAND (expr, 1), fold_stmt_r, data, NULL);
- if (t)
- return t;
- *walk_subtrees = 0;
-
- t = maybe_fold_stmt_addition (TREE_TYPE (expr),
- TREE_OPERAND (expr, 0),
- TREE_OPERAND (expr, 1));
- break;
-
- case COND_EXPR:
- if (COMPARISON_CLASS_P (TREE_OPERAND (expr, 0)))
- {
- tree op0 = TREE_OPERAND (expr, 0);
- tree tem;
- bool set;
-
- fold_defer_overflow_warnings ();
- tem = fold_binary (TREE_CODE (op0), TREE_TYPE (op0),
- TREE_OPERAND (op0, 0),
- TREE_OPERAND (op0, 1));
- /* This is actually a conditional expression, not a GIMPLE
- conditional statement, however, the valid_gimple_rhs_p
- test still applies. */
- set = tem && is_gimple_condexpr (tem) && valid_gimple_rhs_p (tem);
- fold_undefer_overflow_warnings (set, fold_stmt_r_data->stmt, 0);
- if (set)
- {
- COND_EXPR_COND (expr) = tem;
- t = expr;
- break;
- }
- }
- return NULL_TREE;
-
- default:
- return NULL_TREE;
- }
-
- if (t)
- {
- /* Preserve volatileness of the original expression.
- We can end up with a plain decl here which is shared
- and we shouldn't mess with its flags. */
- if (!SSA_VAR_P (t))
- TREE_THIS_VOLATILE (t) = volatile_p;
- *expr_p = t;
- *changed_p = true;
+ if (tem)
+ {
+ *t = tem;
+ tem = maybe_fold_reference (expr, is_lhs);
+ if (tem)
+ return tem;
+ return expr;
+ }
}
return NULL_TREE;
}
+
/* Return the string length, maximum string length or maximum value of
ARG in LENGTH.
If ARG is an SSA name variable, follow its use-def chains. If LENGTH
@@ -2709,23 +2597,61 @@ fold_gimple_assign (gimple_stmt_iterator *si)
gimple stmt = gsi_stmt (*si);
enum tree_code subcode = gimple_assign_rhs_code (stmt);
- tree result = NULL;
+ tree result = NULL_TREE;
switch (get_gimple_rhs_class (subcode))
{
case GIMPLE_SINGLE_RHS:
{
tree rhs = gimple_assign_rhs1 (stmt);
-
+
/* Try to fold a conditional expression. */
if (TREE_CODE (rhs) == COND_EXPR)
{
- tree temp = fold (COND_EXPR_COND (rhs));
- if (temp != COND_EXPR_COND (rhs))
- result = fold_build3 (COND_EXPR, TREE_TYPE (rhs), temp,
- COND_EXPR_THEN (rhs), COND_EXPR_ELSE (rhs));
+ tree op0 = COND_EXPR_COND (rhs);
+ tree tem;
+ bool set = false;
+
+ if (COMPARISON_CLASS_P (op0))
+ {
+ fold_defer_overflow_warnings ();
+ tem = fold_binary (TREE_CODE (op0), TREE_TYPE (op0),
+ TREE_OPERAND (op0, 0),
+ TREE_OPERAND (op0, 1));
+ /* This is actually a conditional expression, not a GIMPLE
+ conditional statement, however, the valid_gimple_rhs_p
+ test still applies. */
+ set = (tem && is_gimple_condexpr (tem)
+ && valid_gimple_rhs_p (tem));
+ fold_undefer_overflow_warnings (set, stmt, 0);
+ }
+ else if (is_gimple_min_invariant (op0))
+ {
+ tem = op0;
+ set = true;
+ }
+ else
+ return NULL_TREE;
+
+ if (set)
+ result = fold_build3 (COND_EXPR, TREE_TYPE (rhs), tem,
+ COND_EXPR_THEN (rhs), COND_EXPR_ELSE (rhs));
}
+ else if (TREE_CODE (rhs) == TARGET_MEM_REF)
+ return maybe_fold_tmr (rhs);
+
+ else if (REFERENCE_CLASS_P (rhs))
+ return maybe_fold_reference (rhs, false);
+
+ else if (TREE_CODE (rhs) == ADDR_EXPR)
+ {
+ tree tem = maybe_fold_reference (TREE_OPERAND (rhs, 0), true);
+ if (tem)
+ result = fold_convert (TREE_TYPE (rhs),
+ build_fold_addr_expr (tem));
+ }
+
/* If we couldn't fold the RHS, hand over to the generic
fold routines. */
if (result == NULL_TREE)
@@ -2738,11 +2664,8 @@ fold_gimple_assign (gimple_stmt_iterator *si)
if (result != rhs && valid_gimple_rhs_p (result))
return result;
- else
- /* It is possible that fold_stmt_r simplified the RHS.
- Make sure that the subcode of this statement still
- reflects the principal operator of the rhs operand. */
- return rhs;
+
+ return NULL_TREE;
}
break;
@@ -2913,125 +2836,130 @@ fold_gimple_call (gimple_stmt_iterator *gsi)
return false;
}
-/* Fold the statement pointed to by GSI. In some cases, this function may
- replace the whole statement with a new one. Returns true iff folding
- makes any changes. */
+/* Worker for both fold_stmt and fold_stmt_inplace. The INPLACE argument
+ distinguishes both cases. */
-bool
-fold_stmt (gimple_stmt_iterator *gsi)
+static bool
+fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace)
{
- tree res;
- struct fold_stmt_r_data fold_stmt_r_data;
- struct walk_stmt_info wi;
-
bool changed = false;
- bool inside_addr_expr = false;
-
gimple stmt = gsi_stmt (*gsi);
-
- fold_stmt_r_data.stmt = stmt;
- fold_stmt_r_data.changed_p = &changed;
- fold_stmt_r_data.inside_addr_expr_p = &inside_addr_expr;
-
- memset (&wi, 0, sizeof (wi));
- wi.info = &fold_stmt_r_data;
-
- /* Fold the individual operands.
- For example, fold instances of *&VAR into VAR, etc. */
- res = walk_gimple_op (stmt, fold_stmt_r, &wi);
- gcc_assert (!res);
+ unsigned i;
/* Fold the main computation performed by the statement. */
switch (gimple_code (stmt))
{
case GIMPLE_ASSIGN:
{
+ unsigned old_num_ops = gimple_num_ops (stmt);
tree new_rhs = fold_gimple_assign (gsi);
- if (new_rhs != NULL_TREE)
+ if (new_rhs != NULL_TREE
+ && (!inplace
+ || get_gimple_rhs_num_ops (TREE_CODE (new_rhs)) < old_num_ops))
{
gimple_assign_set_rhs_from_tree (gsi, new_rhs);
changed = true;
}
- stmt = gsi_stmt (*gsi);
break;
}
+
case GIMPLE_COND:
changed |= fold_gimple_cond (stmt);
break;
+
case GIMPLE_CALL:
+ /* Fold *& in call arguments. */
+ for (i = 0; i < gimple_call_num_args (stmt); ++i)
+ if (REFERENCE_CLASS_P (gimple_call_arg (stmt, i)))
+ {
+ tree tmp = maybe_fold_reference (gimple_call_arg (stmt, i), false);
+ if (tmp)
+ {
+ gimple_call_set_arg (stmt, i, tmp);
+ changed = true;
+ }
+ }
/* The entire statement may be replaced in this case. */
- changed |= fold_gimple_call (gsi);
+ if (!inplace)
+ changed |= fold_gimple_call (gsi);
break;
- default:
- return changed;
+ case GIMPLE_ASM:
+ /* Fold *& in asm operands. */
+ for (i = 0; i < gimple_asm_noutputs (stmt); ++i)
+ {
+ tree link = gimple_asm_output_op (stmt, i);
+ tree op = TREE_VALUE (link);
+ if (REFERENCE_CLASS_P (op)
+ && (op = maybe_fold_reference (op, true)) != NULL_TREE)
+ {
+ TREE_VALUE (link) = op;
+ changed = true;
+ }
+ }
+ for (i = 0; i < gimple_asm_ninputs (stmt); ++i)
+ {
+ tree link = gimple_asm_input_op (stmt, i);
+ tree op = TREE_VALUE (link);
+ if (REFERENCE_CLASS_P (op)
+ && (op = maybe_fold_reference (op, false)) != NULL_TREE)
+ {
+ TREE_VALUE (link) = op;
+ changed = true;
+ }
+ }
break;
+
+ default:;
+ }
+
+ stmt = gsi_stmt (*gsi);
+
+ /* Fold *& on the lhs. */
+ if (gimple_has_lhs (stmt))
+ {
+ tree lhs = gimple_get_lhs (stmt);
+ if (lhs && REFERENCE_CLASS_P (lhs))
+ {
+ tree new_lhs = maybe_fold_reference (lhs, true);
+ if (new_lhs)
+ {
+ gimple_set_lhs (stmt, new_lhs);
+ changed = true;
+ }
+ }
}
return changed;
}
+/* Fold the statement pointed to by GSI. In some cases, this function may
+ replace the whole statement with a new one. Returns true iff folding
+ makes any changes.
+ The statement pointed to by GSI should be in valid gimple form but may
+ be in unfolded state as resulting from for example constant propagation
+ which can produce *&x = 0. */
+
+bool
+fold_stmt (gimple_stmt_iterator *gsi)
+{
+ return fold_stmt_1 (gsi, false);
+}
+
/* Perform the minimal folding on statement STMT. Only operations like
*&x created by constant propagation are handled. The statement cannot
be replaced with a new one. Return true if the statement was
- changed, false otherwise. */
+ changed, false otherwise.
+ The statement STMT should be in valid gimple form but may
+ be in unfolded state as resulting from for example constant propagation
+ which can produce *&x = 0. */
bool
fold_stmt_inplace (gimple stmt)
{
- tree res;
- struct fold_stmt_r_data fold_stmt_r_data;
- struct walk_stmt_info wi;
- gimple_stmt_iterator si;
-
- bool changed = false;
- bool inside_addr_expr = false;
-
- fold_stmt_r_data.stmt = stmt;
- fold_stmt_r_data.changed_p = &changed;
- fold_stmt_r_data.inside_addr_expr_p = &inside_addr_expr;
-
- memset (&wi, 0, sizeof (wi));
- wi.info = &fold_stmt_r_data;
-
- /* Fold the individual operands.
- For example, fold instances of *&VAR into VAR, etc.
-
- It appears that, at one time, maybe_fold_stmt_indirect
- would cause the walk to return non-null in order to
- signal that the entire statement should be replaced with
- a call to _builtin_trap. This functionality is currently
- disabled, as noted in a FIXME, and cannot be supported here. */
- res = walk_gimple_op (stmt, fold_stmt_r, &wi);
- gcc_assert (!res);
-
- /* Fold the main computation performed by the statement. */
- switch (gimple_code (stmt))
- {
- case GIMPLE_ASSIGN:
- {
- unsigned old_num_ops;
- tree new_rhs;
- old_num_ops = gimple_num_ops (stmt);
- si = gsi_for_stmt (stmt);
- new_rhs = fold_gimple_assign (&si);
- if (new_rhs != NULL_TREE
- && get_gimple_rhs_num_ops (TREE_CODE (new_rhs)) < old_num_ops)
- {
- gimple_assign_set_rhs_from_tree (&si, new_rhs);
- changed = true;
- }
- gcc_assert (gsi_stmt (si) == stmt);
- break;
- }
- case GIMPLE_COND:
- changed |= fold_gimple_cond (stmt);
- break;
-
- default:
- break;
- }
-
+ gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+ bool changed = fold_stmt_1 (&gsi, true);
+ gcc_assert (gsi_stmt (gsi) == stmt);
return changed;
}
@@ -3377,7 +3305,7 @@ struct gimple_opt_pass pass_fold_builtins =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg | PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index e2909e8033f..1a851fa6770 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -1915,26 +1915,6 @@ eliminate_redundant_computations (gimple_stmt_iterator* gsi)
return retval;
}
-/* Return true if statement GS is an assignment that peforms a useless
- type conversion. It is is intended to be a tuples analog of function
- tree_ssa_useless_type_conversion. */
-
-static bool
-gimple_assign_unary_useless_conversion_p (gimple gs)
-{
- if (is_gimple_assign (gs)
- && (CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (gs))
- || gimple_assign_rhs_code (gs) == VIEW_CONVERT_EXPR
- || gimple_assign_rhs_code (gs) == NON_LVALUE_EXPR))
- {
- tree lhs_type = TREE_TYPE (gimple_assign_lhs (gs));
- tree rhs_type = TREE_TYPE (gimple_assign_rhs1 (gs));
- return useless_type_conversion_p (lhs_type, rhs_type);
- }
-
- return false;
-}
-
/* STMT, a GIMPLE_ASSIGN, may create certain equivalences, in either
the available expressions table or the const_and_copies table.
Detect and record those equivalences. */
@@ -1953,14 +1933,10 @@ record_equivalences_from_stmt (gimple stmt, int may_optimize_p)
lhs_code = TREE_CODE (lhs);
if (lhs_code == SSA_NAME
- && (gimple_assign_single_p (stmt)
- || gimple_assign_unary_useless_conversion_p (stmt)))
+ && gimple_assign_single_p (stmt))
{
tree rhs = gimple_assign_rhs1 (stmt);
- /* Strip away any useless type conversions. */
- STRIP_USELESS_TYPE_CONVERSION (rhs);
-
/* If the RHS of the assignment is a constant or another variable that
may be propagated, register it in the CONST_AND_COPIES table. We
do not need to record unwind data for this, since this is a true
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index f75e0afa73f..c596e8b7541 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -186,8 +186,7 @@ get_prop_dest_stmt (tree name, tree *final_name_p)
return NULL;
/* If this is not a trivial copy, we found it. */
- if (!gimple_assign_copy_p (use_stmt)
- || TREE_CODE (gimple_assign_lhs (use_stmt)) != SSA_NAME
+ if (!gimple_assign_ssa_name_copy_p (use_stmt)
|| gimple_assign_rhs1 (use_stmt) != name)
break;
@@ -225,12 +224,11 @@ get_prop_source_stmt (tree name, bool single_use_only, bool *single_use_p)
}
/* If name is defined by a PHI node or is the default def, bail out. */
- if (gimple_code (def_stmt) != GIMPLE_ASSIGN)
+ if (!is_gimple_assign (def_stmt))
return NULL;
- /* If name is not a simple copy destination, we found it. */
- if (!gimple_assign_copy_p (def_stmt)
- || TREE_CODE (gimple_assign_rhs1 (def_stmt)) != SSA_NAME)
+ /* If def_stmt is not a simple copy, we possibly found it. */
+ if (!gimple_assign_ssa_name_copy_p (def_stmt))
{
tree rhs;
@@ -266,6 +264,7 @@ can_propagate_from (gimple def_stmt)
ssa_op_iter iter;
gcc_assert (is_gimple_assign (def_stmt));
+
/* If the rhs has side-effects we cannot propagate from it. */
if (gimple_has_volatile_ops (def_stmt))
return false;
@@ -276,8 +275,8 @@ can_propagate_from (gimple def_stmt)
return false;
/* Constants can be always propagated. */
- if (is_gimple_min_invariant
- (rhs_to_tree (TREE_TYPE (gimple_assign_lhs (def_stmt)), def_stmt)))
+ if (gimple_assign_single_p (def_stmt)
+ && is_gimple_min_invariant (gimple_assign_rhs1 (def_stmt)))
return true;
/* We cannot propagate ssa names that occur in abnormal phi nodes. */
@@ -289,14 +288,14 @@ can_propagate_from (gimple def_stmt)
then we can not apply optimizations as some targets require
function pointers to be canonicalized and in this case this
optimization could eliminate a necessary canonicalization. */
- if (is_gimple_assign (def_stmt)
- && (CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def_stmt))))
+ if (CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def_stmt)))
{
tree rhs = gimple_assign_rhs1 (def_stmt);
if (POINTER_TYPE_P (TREE_TYPE (rhs))
&& TREE_CODE (TREE_TYPE (TREE_TYPE (rhs))) == FUNCTION_TYPE)
return false;
}
+
return true;
}
diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c
index fa247458e92..5f3b9d86cc5 100644
--- a/gcc/tree-ssa-live.c
+++ b/gcc/tree-ssa-live.c
@@ -595,6 +595,8 @@ remove_unused_scope_block_p (tree scope)
/* Verfify that only blocks with source location set
are entry points to the inlined functions. */
gcc_assert (BLOCK_SOURCE_LOCATION (scope) == UNKNOWN_LOCATION);
+
+ TREE_USED (scope) = !unused;
return unused;
}
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c
index c568cf0e53a..8d08aa7709f 100644
--- a/gcc/tree-ssa-math-opts.c
+++ b/gcc/tree-ssa-math-opts.c
@@ -1,5 +1,5 @@
/* Global, SSA-based optimizations using mathematical identities.
- Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
@@ -564,7 +564,7 @@ struct gimple_opt_pass pass_cse_reciprocals =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -778,7 +778,7 @@ struct gimple_opt_pass pass_cse_sincos =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -870,7 +870,7 @@ struct gimple_opt_pass pass_convert_to_rsqrt =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index c9473a8f9b1..7d588f8eb96 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -686,10 +686,13 @@ add_stmt_operand (tree *var_p, gimple stmt, int flags)
add_virtual_operand (stmt, flags);
}
-/* Add the base address of REF to SET. */
+/* Mark the base address of REF as having its address taken.
+ REF may be a single variable whose address has been taken or any
+ other valid GIMPLE memory reference (structure reference, array,
+ etc). */
static void
-add_to_addressable_set (tree ref, bitmap *set)
+mark_address_taken (tree ref)
{
tree var;
@@ -699,27 +702,8 @@ add_to_addressable_set (tree ref, bitmap *set)
be referenced using pointer arithmetic. See PR 21407 and the
ensuing mailing list discussion. */
var = get_base_address (ref);
- if (var && SSA_VAR_P (var))
- {
- if (*set == NULL)
- *set = BITMAP_ALLOC (&operands_bitmap_obstack);
-
- bitmap_set_bit (*set, DECL_UID (var));
- TREE_ADDRESSABLE (var) = 1;
- }
-}
-
-/* Add the base address of REF to the set of addresses taken by STMT.
- REF may be a single variable whose address has been taken or any
- other valid GIMPLE memory reference (structure reference, array,
- etc). If the base address of REF is a decl that has sub-variables,
- also add all of its sub-variables. */
-
-static void
-gimple_add_to_addresses_taken (gimple stmt, tree ref)
-{
- gcc_assert (gimple_has_ops (stmt));
- add_to_addressable_set (ref, gimple_addresses_taken_ptr (stmt));
+ if (var && DECL_P (var))
+ TREE_ADDRESSABLE (var) = 1;
}
@@ -763,7 +747,7 @@ get_tmr_operands (gimple stmt, tree expr, int flags)
get_expr_operands (stmt, &TMR_INDEX (expr), opf_use);
if (TMR_SYMBOL (expr))
- gimple_add_to_addresses_taken (stmt, TMR_SYMBOL (expr));
+ mark_address_taken (TMR_SYMBOL (expr));
add_virtual_operand (stmt, flags);
}
@@ -824,7 +808,7 @@ get_asm_expr_operands (gimple stmt)
{
tree t = get_base_address (TREE_VALUE (link));
if (t && DECL_P (t))
- gimple_add_to_addresses_taken (stmt, t);
+ mark_address_taken (t);
}
get_expr_operands (stmt, &TREE_VALUE (link), opf_def);
@@ -844,7 +828,7 @@ get_asm_expr_operands (gimple stmt)
{
tree t = get_base_address (TREE_VALUE (link));
if (t && DECL_P (t))
- gimple_add_to_addresses_taken (stmt, t);
+ mark_address_taken (t);
}
get_expr_operands (stmt, &TREE_VALUE (link), 0);
@@ -887,7 +871,7 @@ get_expr_operands (gimple stmt, tree *expr_p, int flags)
reference to it, but the fact that the statement takes its
address will be of interest to some passes (e.g. alias
resolution). */
- gimple_add_to_addresses_taken (stmt, TREE_OPERAND (expr, 0));
+ mark_address_taken (TREE_OPERAND (expr, 0));
/* If the address is invariant, there may be no interesting
variable references inside. */
@@ -1091,14 +1075,9 @@ parse_ssa_operands (gimple stmt)
static void
build_ssa_operands (gimple stmt)
{
- /* Initially assume that the statement has no volatile operands and
- makes no memory references. */
+ /* Initially assume that the statement has no volatile operands. */
gimple_set_has_volatile_ops (stmt, false);
- /* Just clear the bitmap so we don't end up reallocating it over and over. */
- if (gimple_addresses_taken (stmt))
- bitmap_clear (gimple_addresses_taken (stmt));
-
start_ssa_stmt_operands ();
parse_ssa_operands (stmt);
finalize_ssa_stmt_operands (stmt);
@@ -1133,9 +1112,6 @@ free_stmt_operands (gimple stmt)
gimple_set_use_ops (stmt, NULL);
}
- if (gimple_has_ops (stmt))
- gimple_set_addresses_taken (stmt, NULL);
-
if (gimple_has_mem_ops (stmt))
{
gimple_set_vuse (stmt, NULL_TREE);
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 54770c8eea9..61207b2f849 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -3981,8 +3981,10 @@ eliminate (void)
value is constant, use that constant. */
if (!sprime && is_gimple_min_invariant (VN_INFO (lhs)->valnum))
{
- sprime = fold_convert (TREE_TYPE (lhs),
- VN_INFO (lhs)->valnum);
+ sprime = VN_INFO (lhs)->valnum;
+ if (!useless_type_conversion_p (TREE_TYPE (lhs),
+ TREE_TYPE (sprime)))
+ sprime = fold_convert (TREE_TYPE (lhs), sprime);
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -4181,6 +4183,8 @@ eliminate (void)
remove_phi_node (&gsi, false);
+ if (!useless_type_conversion_p (TREE_TYPE (res), TREE_TYPE (sprime)))
+ sprime = fold_convert (TREE_TYPE (res), sprime);
stmt = gimple_build_assign (res, sprime);
SSA_NAME_DEF_STMT (res) = stmt;
if (TREE_CODE (sprime) == SSA_NAME)
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c
index ad6858891e6..76aec2ab0f6 100644
--- a/gcc/tree-ssa-propagate.c
+++ b/gcc/tree-ssa-propagate.c
@@ -828,36 +828,6 @@ ssa_propagate (ssa_prop_visit_stmt_fn visit_stmt,
}
-/* Return true if STMT is of the form 'LHS = mem_ref', where 'mem_ref'
- is a non-volatile pointer dereference, a structure reference or a
- reference to a single _DECL. Ignore volatile memory references
- because they are not interesting for the optimizers. */
-
-bool
-stmt_makes_single_load (gimple stmt)
-{
- tree rhs;
-
- if (gimple_code (stmt) != GIMPLE_ASSIGN)
- return false;
-
- /* Only a GIMPLE_SINGLE_RHS assignment may have a
- declaration or reference as its RHS. */
- if (get_gimple_rhs_class (gimple_assign_rhs_code (stmt))
- != GIMPLE_SINGLE_RHS)
- return false;
-
- if (!gimple_vuse (stmt))
- return false;
-
- rhs = gimple_assign_rhs1 (stmt);
-
- return (!TREE_THIS_VOLATILE (rhs)
- && (DECL_P (rhs)
- || REFERENCE_CLASS_P (rhs)));
-}
-
-
/* Return true if STMT is of the form 'mem_ref = RHS', where 'mem_ref'
is a non-volatile pointer dereference, a structure reference or a
reference to a single _DECL. Ignore volatile memory references
diff --git a/gcc/tree-ssa-propagate.h b/gcc/tree-ssa-propagate.h
index b965890c0a8..3c267247717 100644
--- a/gcc/tree-ssa-propagate.h
+++ b/gcc/tree-ssa-propagate.h
@@ -118,7 +118,6 @@ bool valid_gimple_rhs_p (tree);
bool valid_gimple_call_p (tree);
void move_ssa_defining_stmt_for_defs (gimple, gimple);
bool update_call_from_tree (gimple_stmt_iterator *, tree);
-bool stmt_makes_single_load (gimple);
bool stmt_makes_single_store (gimple);
bool substitute_and_fold (prop_value_t *, bool);
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index f3b00e99b48..b101aebd9e4 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -2886,7 +2886,8 @@ run_scc_vn (bool may_insert_arg)
if (!name)
continue;
info = VN_INFO (name);
- if (info->valnum == name)
+ if (info->valnum == name
+ || info->valnum == VN_TOP)
info->value_id = get_next_value_id ();
else if (is_gimple_min_invariant (info->valnum))
info->value_id = get_or_alloc_constant_value_id (info->valnum);
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 7ac27c06ad6..b0768d0c20b 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -3052,6 +3052,14 @@ get_constraint_for_component_ref (tree t, VEC(ce_s, heap) **results,
else
result->offset = bitpos;
}
+ else if (result->type == ADDRESSOF)
+ {
+ /* We can end up here for component references on a
+ VIEW_CONVERT_EXPR <>(&foobar). */
+ result->type = SCALAR;
+ result->var = anything_id;
+ result->offset = 0;
+ }
else
gcc_unreachable ();
}
@@ -5745,7 +5753,7 @@ struct gimple_opt_pass pass_build_alias =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg | PROP_ssa, /* properties_required */
PROP_alias, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index ba0c6ab720d..ca00e04f784 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -834,7 +834,6 @@ delete_tree_ssa (void)
{
gimple_set_def_ops (stmt, NULL);
gimple_set_use_ops (stmt, NULL);
- gimple_set_addresses_taken (stmt, NULL);
}
if (gimple_has_mem_ops (stmt))
@@ -1457,7 +1456,7 @@ struct gimple_opt_pass pass_early_warn_uninitialized =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1476,7 +1475,7 @@ struct gimple_opt_pass pass_late_warn_uninitialized =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1504,13 +1503,12 @@ execute_update_addresses_taken (bool do_optimize)
{
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
- const_gimple stmt = gsi_stmt (gsi);
+ gimple stmt = gsi_stmt (gsi);
enum gimple_code code = gimple_code (stmt);
- bitmap taken = gimple_addresses_taken (stmt);
-
- if (taken)
- bitmap_ior_into (addresses_taken, taken);
-
+
+ /* Note all addresses taken by the stmt. */
+ gimple_ior_addresses_taken (addresses_taken, stmt);
+
/* If we have a call or an assignment, see if the lhs contains
a local decl that requires not to be a gimple register. */
if (code == GIMPLE_ASSIGN || code == GIMPLE_CALL)
@@ -1619,7 +1617,7 @@ struct gimple_opt_pass pass_update_address_taken =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index 19032d52448..c019074cfae 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -1,6 +1,7 @@
/* Generic routines for manipulating SSA_NAME expressions
- Copyright (C) 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-
+ Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009
+ Free Software Foundation, Inc.
+
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
@@ -349,7 +350,7 @@ struct gimple_opt_pass pass_release_ssa_names =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c
index 00fce82e750..f9a2110095c 100644
--- a/gcc/tree-stdarg.c
+++ b/gcc/tree-stdarg.c
@@ -1,5 +1,5 @@
/* Pass computing data for optimizing stdarg functions.
- Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by Jakub Jelinek <jakub@redhat.com>
This file is part of GCC.
@@ -905,7 +905,7 @@ struct gimple_opt_pass pass_stdarg =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c
index 59a7694f095..6b03eaaac89 100644
--- a/gcc/tree-tailcall.c
+++ b/gcc/tree-tailcall.c
@@ -1,5 +1,5 @@
/* Tail call optimization on trees.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -999,7 +999,7 @@ struct gimple_opt_pass pass_tail_recursion =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg | PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -1018,7 +1018,7 @@ struct gimple_opt_pass pass_tail_calls =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index 13138ddd464..d99d713fd31 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -1,5 +1,6 @@
/* Lower vector operations to scalar operations.
- Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of GCC.
@@ -555,7 +556,7 @@ struct gimple_opt_pass pass_lower_vector =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -575,7 +576,7 @@ struct gimple_opt_pass pass_lower_vector_ssa =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index ae578f099fc..56f9bba513d 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -1593,7 +1593,8 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters,
tree access_fn = NULL;
tree evolution_part;
tree init_expr;
- tree step_expr;
+ tree step_expr, off;
+ tree type;
tree var, ni, ni_name;
gimple_stmt_iterator last_gsi;
@@ -1623,6 +1624,11 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters,
access_fn = analyze_scalar_evolution (loop, PHI_RESULT (phi));
gcc_assert (access_fn);
+ /* We can end up with an access_fn like
+ (short int) {(short unsigned int) i_49, +, 1}_1
+ for further analysis we need to strip the outer cast but we
+ need to preserve the original type. */
+ type = TREE_TYPE (access_fn);
STRIP_NOPS (access_fn);
evolution_part =
unshare_expr (evolution_part_in_loop_num (access_fn, loop->num));
@@ -1635,22 +1641,19 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters,
step_expr = evolution_part;
init_expr = unshare_expr (initial_condition_in_loop_num (access_fn,
loop->num));
+ init_expr = fold_convert (type, init_expr);
+ off = fold_build2 (MULT_EXPR, TREE_TYPE (step_expr),
+ fold_convert (TREE_TYPE (step_expr), niters),
+ step_expr);
if (POINTER_TYPE_P (TREE_TYPE (init_expr)))
ni = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (init_expr),
- init_expr,
- fold_build2 (MULT_EXPR, sizetype,
- fold_convert (sizetype, niters),
- step_expr));
+ init_expr,
+ fold_convert (sizetype, off));
else
ni = fold_build2 (PLUS_EXPR, TREE_TYPE (init_expr),
- fold_build2 (MULT_EXPR, TREE_TYPE (init_expr),
- fold_convert (TREE_TYPE (init_expr),
- niters),
- step_expr),
- init_expr);
-
-
+ init_expr,
+ fold_convert (TREE_TYPE (init_expr), off));
var = create_tmp_var (TREE_TYPE (init_expr), "tmp");
add_referenced_var (var);
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 9ae4403f38c..d78fa99ff8b 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -2267,33 +2267,33 @@ get_initial_def_for_reduction (gimple stmt, tree init_val, tree *adjustment_def)
stmt_vec_info stmt_vinfo = vinfo_for_stmt (stmt);
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
- tree vectype = STMT_VINFO_VECTYPE (stmt_vinfo);
- int nunits = TYPE_VECTOR_SUBPARTS (vectype);
- tree scalar_type = TREE_TYPE (vectype);
+ tree scalar_type = TREE_TYPE (init_val);
+ tree vectype = get_vectype_for_scalar_type (scalar_type);
+ int nunits;
enum tree_code code = gimple_assign_rhs_code (stmt);
- tree type = TREE_TYPE (init_val);
- tree vecdef;
tree def_for_init;
tree init_def;
tree t = NULL_TREE;
int i;
bool nested_in_vect_loop = false;
- gcc_assert (POINTER_TYPE_P (type) || INTEGRAL_TYPE_P (type) || SCALAR_FLOAT_TYPE_P (type));
+ gcc_assert (vectype);
+ nunits = TYPE_VECTOR_SUBPARTS (vectype);
+
+ gcc_assert (POINTER_TYPE_P (scalar_type) || INTEGRAL_TYPE_P (scalar_type)
+ || SCALAR_FLOAT_TYPE_P (scalar_type));
if (nested_in_vect_loop_p (loop, stmt))
nested_in_vect_loop = true;
else
gcc_assert (loop == (gimple_bb (stmt))->loop_father);
- vecdef = vect_get_vec_def_for_operand (init_val, stmt, NULL);
-
switch (code)
{
case WIDEN_SUM_EXPR:
case DOT_PROD_EXPR:
case PLUS_EXPR:
if (nested_in_vect_loop)
- *adjustment_def = vecdef;
+ *adjustment_def = vect_get_vec_def_for_operand (init_val, stmt, NULL);
else
*adjustment_def = init_val;
/* Create a vector of zeros for init_def. */
@@ -2310,7 +2310,7 @@ get_initial_def_for_reduction (gimple stmt, tree init_val, tree *adjustment_def)
case MIN_EXPR:
case MAX_EXPR:
*adjustment_def = NULL_TREE;
- init_def = vecdef;
+ init_def = vect_get_vec_def_for_operand (init_val, stmt, NULL);
break;
default:
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 0636c6adbc6..2ac6a8b87a6 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -305,7 +305,7 @@ struct simple_ipa_opt_pass pass_ipa_increase_alignment =
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- 0, /* tv_id */
+ TV_NONE, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
@@ -313,5 +313,3 @@ struct simple_ipa_opt_pass pass_ipa_increase_alignment =
0 /* todo_flags_finish */
}
};
-
-
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index cceea2549a3..e3d14b29182 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -1368,28 +1368,6 @@ ssa_name_nonnegative_p (const_tree t)
return false;
}
-/* Return true if T, an SSA_NAME, is known to be nonzero. Return
- false otherwise or if no value range information is available. */
-
-bool
-ssa_name_nonzero_p (const_tree t)
-{
- value_range_t *vr = get_value_range (t);
-
- if (!vr)
- return false;
-
- /* A VR_RANGE which does not include zero is a nonzero value. */
- if (vr->type == VR_RANGE && !symbolic_range_p (vr))
- return ! range_includes_zero_p (vr);
-
- /* A VR_ANTI_RANGE which does include zero is a nonzero value. */
- if (vr->type == VR_ANTI_RANGE && !symbolic_range_p (vr))
- return range_includes_zero_p (vr);
-
- return false;
-}
-
/* If OP has a value range with a single constant value return that,
otherwise return NULL_TREE. This returns OP itself if OP is a
constant. */
@@ -4996,7 +4974,7 @@ insert_range_assertions (void)
IGNORE_OFF_BY_ONE is true if the ARRAY_REF is inside a ADDR_EXPR. */
static void
-check_array_ref (tree ref, const location_t *location, bool ignore_off_by_one)
+check_array_ref (tree ref, location_t location, bool ignore_off_by_one)
{
value_range_t* vr = NULL;
tree low_sub, up_sub;
@@ -5035,8 +5013,8 @@ check_array_ref (tree ref, const location_t *location, bool ignore_off_by_one)
&& TREE_CODE (low_sub) == INTEGER_CST
&& tree_int_cst_lt (low_sub, low_bound))
{
- warning (OPT_Warray_bounds,
- "%Harray subscript is outside array bounds", location);
+ warning_at (location, OPT_Warray_bounds,
+ "array subscript is outside array bounds");
TREE_NO_WARNING (ref) = 1;
}
}
@@ -5050,15 +5028,15 @@ check_array_ref (tree ref, const location_t *location, bool ignore_off_by_one)
0),
up_sub)))
{
- warning (OPT_Warray_bounds, "%Harray subscript is above array bounds",
- location);
+ warning_at (location, OPT_Warray_bounds,
+ "array subscript is above array bounds");
TREE_NO_WARNING (ref) = 1;
}
else if (TREE_CODE (low_sub) == INTEGER_CST
&& tree_int_cst_lt (low_sub, low_bound))
{
- warning (OPT_Warray_bounds, "%Harray subscript is below array bounds",
- location);
+ warning_at (location, OPT_Warray_bounds,
+ "array subscript is below array bounds");
TREE_NO_WARNING (ref) = 1;
}
}
@@ -5067,7 +5045,7 @@ check_array_ref (tree ref, const location_t *location, bool ignore_off_by_one)
address of an ARRAY_REF, and call check_array_ref on it. */
static void
-search_for_addr_array (tree t, const location_t *location)
+search_for_addr_array (tree t, location_t location)
{
while (TREE_CODE (t) == SSA_NAME)
{
@@ -5115,11 +5093,11 @@ check_array_bounds (tree *tp, int *walk_subtree, void *data)
*walk_subtree = TRUE;
if (TREE_CODE (t) == ARRAY_REF)
- check_array_ref (t, location, false /*ignore_off_by_one*/);
+ check_array_ref (t, *location, false /*ignore_off_by_one*/);
if (TREE_CODE (t) == INDIRECT_REF
|| (TREE_CODE (t) == RETURN_EXPR && TREE_OPERAND (t, 0)))
- search_for_addr_array (TREE_OPERAND (t, 0), location);
+ search_for_addr_array (TREE_OPERAND (t, 0), *location);
if (TREE_CODE (t) == ADDR_EXPR)
*walk_subtree = FALSE;
@@ -5141,9 +5119,23 @@ check_all_array_refs (void)
/* Skip bb's that are clearly unreachable. */
if (single_pred_p (bb))
{
- basic_block pred_bb = EDGE_PRED (bb, 0)->src;
+ int i;
+ bool reachable = true;
+ edge e2;
+ edge e = EDGE_PRED (bb, 0);
+ basic_block pred_bb = e->src;
gimple ls = NULL;
+ for (i = 0; VEC_iterate (edge, to_remove_edges, i, e2); ++i)
+ if (e == e2)
+ {
+ reachable = false;
+ break;
+ }
+
+ if (!reachable)
+ continue;
+
if (!gsi_end_p (gsi_last_bb (pred_bb)))
ls = gsi_stmt (gsi_last_bb (pred_bb));
@@ -5157,7 +5149,6 @@ check_all_array_refs (void)
for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
{
gimple stmt = gsi_stmt (si);
- const location_t *location = gimple_location_ptr (stmt);
struct walk_stmt_info wi;
if (!gimple_has_location (stmt))
continue;
@@ -5169,13 +5160,14 @@ check_all_array_refs (void)
for (i = 0; i < n; i++)
{
tree arg = gimple_call_arg (stmt, i);
- search_for_addr_array (arg, location);
+ search_for_addr_array (arg, gimple_location (stmt));
}
}
else
{
memset (&wi, 0, sizeof (wi));
- wi.info = CONST_CAST (void *, (const void *) location);
+ wi.info = CONST_CAST (void *, (const void *)
+ gimple_location_ptr (stmt));
walk_gimple_op (gsi_stmt (si),
check_array_bounds,
@@ -5875,7 +5867,7 @@ vrp_visit_cond_stmt (gimple stmt, edge *taken_edge_p)
If there is a CASE_LABEL for VAL, its index is placed in IDX and true is
returned.
- If there is no CASE_LABEL for VAL and the is one that is larger than VAL,
+ If there is no CASE_LABEL for VAL and there is one that is larger than VAL,
it is placed in IDX and false is returned.
If VAL is larger than any CASE_LABEL, n is placed on IDX and false is
@@ -6860,19 +6852,35 @@ simplify_switch_using_ranges (gimple stmt)
tree vec2;
switch_update su;
- if (TREE_CODE (op) != SSA_NAME)
- return false;
+ if (TREE_CODE (op) == SSA_NAME)
+ {
+ vr = get_value_range (op);
- vr = get_value_range (op);
+ /* We can only handle integer ranges. */
+ if (vr->type != VR_RANGE
+ || symbolic_range_p (vr))
+ return false;
- /* We can only handle integer ranges. */
- if (vr->type != VR_RANGE
- || symbolic_range_p (vr))
+ /* Find case label for min/max of the value range. */
+ take_default = !find_case_label_range (stmt, vr->min, vr->max, &i, &j);
+ }
+ else if (TREE_CODE (op) == INTEGER_CST)
+ {
+ take_default = !find_case_label_index (stmt, 1, op, &i);
+ if (take_default)
+ {
+ i = 1;
+ j = 0;
+ }
+ else
+ {
+ j = i;
+ }
+ }
+ else
return false;
- /* Find case label for min/max of the value range. */
n = gimple_switch_num_labels (stmt);
- take_default = !find_case_label_range (stmt, vr->min, vr->max, &i, &j);
/* Bail out if this is just all edges taken. */
if (i == 1
diff --git a/gcc/tree.c b/gcc/tree.c
index a66479d5e5a..ca81a510bf7 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -3584,7 +3584,8 @@ set_expr_locus (tree node, source_location *loc)
LOC is the location to use in tree T. */
-void protected_set_expr_location (tree t, location_t loc)
+void
+protected_set_expr_location (tree t, location_t loc)
{
if (t && CAN_HAVE_LOCATION_P (t))
SET_EXPR_LOCATION (t, loc);
@@ -7970,6 +7971,19 @@ build_vector_type (tree innertype, int nunits)
return make_vector_type (innertype, nunits, VOIDmode);
}
+/* Similarly, but takes the inner type and number of units, which must be
+ a power of two. */
+
+tree
+build_opaque_vector_type (tree innertype, int nunits)
+{
+ tree t;
+ innertype = build_distinct_type_copy (innertype);
+ t = make_vector_type (innertype, nunits, VOIDmode);
+ TYPE_VECTOR_OPAQUE (t) = true;
+ return t;
+}
+
/* Build RESX_EXPR with given REGION_NUMBER. */
tree
@@ -9058,26 +9072,6 @@ prototype_p (tree fntype)
return (t != NULL_TREE);
}
-/* Return the number of arguments that a function has. */
-
-int
-function_args_count (tree fntype)
-{
- function_args_iterator args_iter;
- tree t;
- int num = 0;
-
- if (fntype)
- {
- FOREACH_FUNCTION_ARGS(fntype, t, args_iter)
- {
- num++;
- }
- }
-
- return num;
-}
-
/* If BLOCK is inlined from an __attribute__((__artificial__))
routine, return pointer to location from where it has been
called. */
diff --git a/gcc/tree.h b/gcc/tree.h
index b191d43d046..c5c855fad23 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -586,6 +586,9 @@ struct tree_common GTY(())
STMT_IN_SSA_EDGE_WORKLIST in
all expressions (tree-ssa-propagate.c)
+ TYPE_VECTOR_OPAQUE in
+ VECTOR_TYPE
+
visited:
TREE_VISITED in
@@ -2221,6 +2224,11 @@ extern enum machine_mode vector_type_mode (const_tree);
#define SET_TYPE_VECTOR_SUBPARTS(VECTOR_TYPE, X) \
(VECTOR_TYPE_CHECK (VECTOR_TYPE)->type.precision = exact_log2 (X))
+/* Nonzero in an IDENTIFIER_NODE if the name is a local alias, whose
+ uses are to be substituted for uses of the TREE_CHAINed identifier. */
+#define TYPE_VECTOR_OPAQUE(NODE) \
+ (VECTOR_TYPE_CHECK (NODE)->base.deprecated_flag)
+
/* Indicates that objects of this type must be initialized by calling a
function when they are created. */
#define TYPE_NEEDS_CONSTRUCTING(NODE) \
@@ -3938,6 +3946,7 @@ extern tree build_reference_type_for_mode (tree, enum machine_mode, bool);
extern tree build_reference_type (tree);
extern tree build_vector_type_for_mode (tree, enum machine_mode);
extern tree build_vector_type (tree innertype, int nunits);
+extern tree build_opaque_vector_type (tree innertype, int nunits);
extern tree build_type_no_quals (tree);
extern tree build_index_type (tree);
extern tree build_index_2_type (tree, tree);
@@ -4252,7 +4261,6 @@ extern tree convert (tree, tree);
extern unsigned int expr_align (const_tree);
extern tree expr_first (tree);
extern tree expr_last (tree);
-extern tree expr_only (tree);
extern tree size_in_bytes (const_tree);
extern HOST_WIDE_INT int_size_in_bytes (const_tree);
extern HOST_WIDE_INT max_int_size_in_bytes (const_tree);
@@ -4647,7 +4655,6 @@ extern tree create_artificial_label (void);
extern const char *get_name (tree);
extern bool stdarg_p (tree);
extern bool prototype_p (tree);
-extern int function_args_count (tree);
extern bool auto_var_in_fn_p (const_tree, const_tree);
/* In gimplify.c */
@@ -5192,7 +5199,6 @@ extern tree tree_mem_ref_addr (tree, tree);
extern void copy_mem_ref_info (tree, tree);
/* In tree-vrp.c */
-extern bool ssa_name_nonzero_p (const_tree);
extern bool ssa_name_nonnegative_p (const_tree);
/* In tree-object-size.c. */
diff --git a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c
index c655caa53b9..134c7d99225 100644
--- a/gcc/vmsdbgout.c
+++ b/gcc/vmsdbgout.c
@@ -211,6 +211,7 @@ const struct gcc_debug_hooks vmsdbg_debug_hooks
debug_nothing_int, /* handle_pch */
debug_nothing_rtx, /* var_location */
debug_nothing_void, /* switch_text_section */
+ debug_nothing_tree_tree, /* set_name */
0 /* start_end_main_source_file */
};
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index d1383af1780..74979a21ee5 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,44 @@
+2009-04-19 Joseph Myers <joseph@codesourcery.com>
+
+ PR preprocessor/20078
+ * include/cpp-id-data.h (struct cpp_macro): Add extra_tokens
+ field.
+ * include/cpplib.h (SP_DIGRAPH, SP_PREV_WHITE): Define.
+ (struct cpp_token): Change flags to unsigned short.
+ * lex.c (_cpp_lex_direct): Initialize arg_no for CPP_PASTE tokens.
+ (_cpp_equiv_tokens): Check arg_no for CPP_PASTE tokens.
+ (cpp_token_val_index): Return CPP_TOKEN_FLD_ARG_NO for CPP_PASTE
+ tokens.
+ * macro.c (macro_real_token_count): New.
+ (enter_macro_context, replace_args): Use macro_real_token_count.
+ (create_iso_definition): Record whitespace surrounding and digraph
+ spelling of # and ## tokens using SP_PREV_WHITE and SP_DIGRAPH.
+ Set extra_tokens and save CPP_PASTE tokens with arg_no set for
+ multiple consecutive ## tokens.
+ (_cpp_create_definition): Initialize extra_tokens.
+ (cpp_macro_definition): Use macro_real_token_count.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ * directives.c (parse_include): Pass true to check_eol.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR preprocessor/39646
+ * include/line-map.h (enum lc_reason): Add LC_RENAME_VERBATIM.
+ * line-map.c (linemap_add): Handle LC_RENAME_VERBATIM.
+ * directives.c (do_line, do_linemarker): Use LC_RENAME_VERBATIM in
+ place of LC_RENAME.
+
+2009-04-18 Joseph Myers <joseph@codesourcery.com>
+
+ PR preprocessor/39647
+ * directives.c (check_eol): Add parameter expand.
+ (do_undef, parse_include, do_line, do_linemarker, do_ident,
+ do_pragma_once, do_pragma_system_header, do_ifdef, do_ifndef,
+ do_else, do_endif, do_assert, do_unassert): All callers changed.
+ Pass true from do_line, false elsewhere.
+
2009-04-12 Joseph Myers <joseph@codesourcery.com>
PR preprocessor/31869
diff --git a/libcpp/directives.c b/libcpp/directives.c
index 0fdcc048cfe..c2e71016f24 100644
--- a/libcpp/directives.c
+++ b/libcpp/directives.c
@@ -92,7 +92,7 @@ struct directive
/* Forward declarations. */
static void skip_rest_of_line (cpp_reader *);
-static void check_eol (cpp_reader *);
+static void check_eol (cpp_reader *, bool);
static void start_directive (cpp_reader *);
static void prepare_directive_trad (cpp_reader *);
static void end_directive (cpp_reader *, int);
@@ -208,11 +208,14 @@ skip_rest_of_line (cpp_reader *pfile)
;
}
-/* Ensure there are no stray tokens at the end of a directive. */
+/* Ensure there are no stray tokens at the end of a directive. If
+ EXPAND is true, tokens macro-expanding to nothing are allowed. */
static void
-check_eol (cpp_reader *pfile)
+check_eol (cpp_reader *pfile, bool expand)
{
- if (! SEEN_EOL () && _cpp_lex_token (pfile)->type != CPP_EOF)
+ if (! SEEN_EOL () && (expand
+ ? cpp_get_token (pfile)
+ : _cpp_lex_token (pfile))->type != CPP_EOF)
cpp_error (pfile, CPP_DL_PEDWARN, "extra tokens at end of #%s directive",
pfile->directive->name);
}
@@ -609,7 +612,7 @@ do_undef (cpp_reader *pfile)
}
}
- check_eol (pfile);
+ check_eol (pfile, false);
}
/* Undefine a single macro/assertion/whatever. */
@@ -721,7 +724,7 @@ parse_include (cpp_reader *pfile, int *pangle_brackets,
/* This pragma allows extra tokens after the file name. */
}
else if (buf == NULL || CPP_OPTION (pfile, discard_comments))
- check_eol (pfile);
+ check_eol (pfile, true);
else
{
/* If we are not discarding comments, then gather them while
@@ -911,7 +914,7 @@ do_line (cpp_reader *pfile)
if (cpp_interpret_string_notranslate (pfile, &token->val.str, 1,
&s, false))
new_file = (const char *)s.text;
- check_eol (pfile);
+ check_eol (pfile, true);
}
else if (token->type != CPP_EOF)
{
@@ -921,7 +924,7 @@ do_line (cpp_reader *pfile)
}
skip_rest_of_line (pfile);
- _cpp_do_file_change (pfile, LC_RENAME, new_file, new_lineno,
+ _cpp_do_file_change (pfile, LC_RENAME_VERBATIM, new_file, new_lineno,
map_sysp);
}
@@ -937,7 +940,7 @@ do_linemarker (cpp_reader *pfile)
const char *new_file = map->to_file;
linenum_type new_lineno;
unsigned int new_sysp = map->sysp;
- enum lc_reason reason = LC_RENAME;
+ enum lc_reason reason = LC_RENAME_VERBATIM;
int flag;
bool wrapped;
@@ -991,7 +994,7 @@ do_linemarker (cpp_reader *pfile)
}
pfile->buffer->sysp = new_sysp;
- check_eol (pfile);
+ check_eol (pfile, false);
}
else if (token->type != CPP_EOF)
{
@@ -1068,7 +1071,7 @@ do_ident (cpp_reader *pfile)
else if (pfile->cb.ident)
pfile->cb.ident (pfile, pfile->directive_line, &str->val.str);
- check_eol (pfile);
+ check_eol (pfile, false);
}
/* Lookup a PRAGMA name in a singly-linked CHAIN. Returns the
@@ -1401,7 +1404,7 @@ do_pragma_once (cpp_reader *pfile)
if (cpp_in_primary_file (pfile))
cpp_error (pfile, CPP_DL_WARNING, "#pragma once in main file");
- check_eol (pfile);
+ check_eol (pfile, false);
_cpp_mark_file_once_only (pfile, pfile->buffer->file);
}
@@ -1453,7 +1456,7 @@ do_pragma_system_header (cpp_reader *pfile)
"#pragma system_header ignored outside include file");
else
{
- check_eol (pfile);
+ check_eol (pfile, false);
skip_rest_of_line (pfile);
cpp_make_system_header (pfile, 1, 0);
}
@@ -1694,7 +1697,7 @@ do_ifdef (cpp_reader *pfile)
pfile->cb.used_undef (pfile, pfile->directive_line, node);
}
}
- check_eol (pfile);
+ check_eol (pfile, false);
}
}
@@ -1730,7 +1733,7 @@ do_ifndef (cpp_reader *pfile)
pfile->cb.used_undef (pfile, pfile->directive_line, node);
}
}
- check_eol (pfile);
+ check_eol (pfile, false);
}
}
@@ -1783,7 +1786,7 @@ do_else (cpp_reader *pfile)
/* Only check EOL if was not originally skipping. */
if (!ifs->was_skipping && CPP_OPTION (pfile, warn_endif_labels))
- check_eol (pfile);
+ check_eol (pfile, false);
}
}
@@ -1844,7 +1847,7 @@ do_endif (cpp_reader *pfile)
{
/* Only check EOL if was not originally skipping. */
if (!ifs->was_skipping && CPP_OPTION (pfile, warn_endif_labels))
- check_eol (pfile);
+ check_eol (pfile, false);
/* If potential control macro, we go back outside again. */
if (ifs->next == 0 && ifs->mi_cmacro)
@@ -2088,7 +2091,7 @@ do_assert (cpp_reader *pfile)
node->type = NT_ASSERTION;
node->value.answers = new_answer;
- check_eol (pfile);
+ check_eol (pfile, false);
}
}
@@ -2116,7 +2119,7 @@ do_unassert (cpp_reader *pfile)
if (node->value.answers == 0)
node->type = NT_VOID;
- check_eol (pfile);
+ check_eol (pfile, false);
}
else
_cpp_free_definition (node);
diff --git a/libcpp/include/cpp-id-data.h b/libcpp/include/cpp-id-data.h
index afe4edad99e..029d424d511 100644
--- a/libcpp/include/cpp-id-data.h
+++ b/libcpp/include/cpp-id-data.h
@@ -75,4 +75,9 @@ struct cpp_macro GTY(())
/* Indicate which field of 'exp' is in use. */
unsigned int traditional : 1;
+
+ /* Indicate whether the tokens include extra CPP_PASTE tokens at the
+ end to track invalid redefinitions with consecutive CPP_PASTE
+ tokens. */
+ unsigned int extra_tokens : 1;
};
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index 434308b64da..3aeb035f48f 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -178,6 +178,10 @@ struct cpp_string GTY(())
#define BOL (1 << 6) /* Token at beginning of line. */
#define PURE_ZERO (1 << 7) /* Single 0 digit, used by the C++ frontend,
set in c-lex.c. */
+#define SP_DIGRAPH (1 << 8) /* # or ## token was a digraph. */
+#define SP_PREV_WHITE (1 << 9) /* If whitespace before a ##
+ operator, or before this token
+ after a # operator. */
/* Specify which field, if any, of the cpp_token union is used. */
@@ -196,7 +200,7 @@ struct cpp_token GTY(())
{
source_location src_loc; /* Location of first char of token. */
ENUM_BITFIELD(cpp_ttype) type : CHAR_BIT; /* token type */
- unsigned char flags; /* flags - see above */
+ unsigned short flags; /* flags - see above */
union cpp_token_u
{
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index 501a1939324..56ab79a2608 100644
--- a/libcpp/include/line-map.h
+++ b/libcpp/include/line-map.h
@@ -31,8 +31,9 @@ along with this program; see the file COPYING3. If not see
when including a new file, e.g. a #include directive in C.
LC_LEAVE is when reaching a file's end. LC_RENAME is when a file
name or line number changes for neither of the above reasons
- (e.g. a #line directive in C). */
-enum lc_reason {LC_ENTER = 0, LC_LEAVE, LC_RENAME};
+ (e.g. a #line directive in C); LC_RENAME_VERBATIM is like LC_RENAME
+ but a filename of "" is not specially interpreted as standard input. */
+enum lc_reason {LC_ENTER = 0, LC_LEAVE, LC_RENAME, LC_RENAME_VERBATIM};
/* The type of line numbers. */
typedef unsigned int linenum_type;
diff --git a/libcpp/lex.c b/libcpp/lex.c
index 0a3a6bc3a92..63e291c64c0 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -1244,7 +1244,7 @@ _cpp_lex_direct (cpp_reader *pfile)
result->flags |= DIGRAPH;
result->type = CPP_HASH;
if (*buffer->cur == '%' && buffer->cur[1] == ':')
- buffer->cur += 2, result->type = CPP_PASTE;
+ buffer->cur += 2, result->type = CPP_PASTE, result->val.arg_no = 0;
}
else if (*buffer->cur == '>')
{
@@ -1325,7 +1325,7 @@ _cpp_lex_direct (cpp_reader *pfile)
case '=': IF_NEXT_IS ('=', CPP_EQ_EQ, CPP_EQ); break;
case '!': IF_NEXT_IS ('=', CPP_NOT_EQ, CPP_NOT); break;
case '^': IF_NEXT_IS ('=', CPP_XOR_EQ, CPP_XOR); break;
- case '#': IF_NEXT_IS ('#', CPP_PASTE, CPP_HASH); break;
+ case '#': IF_NEXT_IS ('#', CPP_PASTE, CPP_HASH); result->val.arg_no = 0; break;
case '?': result->type = CPP_QUERY; break;
case '~': result->type = CPP_COMPL; break;
@@ -1572,7 +1572,9 @@ _cpp_equiv_tokens (const cpp_token *a, const cpp_token *b)
{
default: /* Keep compiler happy. */
case SPELL_OPERATOR:
- return 1;
+ /* arg_no is used to track where multiple consecutive ##
+ tokens were originally located. */
+ return (a->type != CPP_PASTE || a->val.arg_no == b->val.arg_no);
case SPELL_NONE:
return (a->type != CPP_MACRO_ARG || a->val.arg_no == b->val.arg_no);
case SPELL_IDENT:
@@ -1886,6 +1888,11 @@ cpp_token_val_index (cpp_token *tok)
return CPP_TOKEN_FLD_NODE;
case SPELL_LITERAL:
return CPP_TOKEN_FLD_STR;
+ case SPELL_OPERATOR:
+ if (tok->type == CPP_PASTE)
+ return CPP_TOKEN_FLD_ARG_NO;
+ else
+ return CPP_TOKEN_FLD_NONE;
case SPELL_NONE:
if (tok->type == CPP_MACRO_ARG)
return CPP_TOKEN_FLD_ARG_NO;
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index cce699f3cfe..553cc2ab605 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -109,9 +109,12 @@ linemap_add (struct line_maps *set, enum lc_reason reason,
map = &set->maps[set->used];
- if (to_file && *to_file == '\0')
+ if (to_file && *to_file == '\0' && reason != LC_RENAME_VERBATIM)
to_file = "<stdin>";
+ if (reason == LC_RENAME_VERBATIM)
+ reason = LC_RENAME;
+
/* If we don't keep our line maps consistent, we can easily
segfault. Don't rely on the client to do it for us. */
if (set->depth == 0)
diff --git a/libcpp/macro.c b/libcpp/macro.c
index 75c1c55e022..36853971780 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -802,6 +802,19 @@ funlike_invocation_p (cpp_reader *pfile, cpp_hashnode *node,
return NULL;
}
+/* Return the real number of tokens in the expansion of MACRO. */
+static inline unsigned int
+macro_real_token_count (const cpp_macro *macro)
+{
+ unsigned int i;
+ if (__builtin_expect (!macro->extra_tokens, true))
+ return macro->count;
+ for (i = 0; i < macro->count; i++)
+ if (macro->exp.tokens[i].type == CPP_PASTE)
+ return i;
+ abort ();
+}
+
/* Push the context of a macro with hash entry NODE onto the context
stack. If we can successfully expand the macro, we push a context
containing its yet-to-be-rescanned replacement list and return one.
@@ -874,7 +887,8 @@ enter_macro_context (cpp_reader *pfile, cpp_hashnode *node,
macro->used = 1;
if (macro->paramc == 0)
- _cpp_push_token_context (pfile, node, macro->exp.tokens, macro->count);
+ _cpp_push_token_context (pfile, node, macro->exp.tokens,
+ macro_real_token_count (macro));
if (pragma_buff)
{
@@ -914,13 +928,15 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg
const cpp_token **dest, **first;
macro_arg *arg;
_cpp_buff *buff;
+ unsigned int count;
/* First, fully macro-expand arguments, calculating the number of
tokens in the final expansion as we go. The ordering of the if
statements below is subtle; we must handle stringification before
pasting. */
- total = macro->count;
- limit = macro->exp.tokens + macro->count;
+ count = macro_real_token_count (macro);
+ total = count;
+ limit = macro->exp.tokens + count;
for (src = macro->exp.tokens; src < limit; src++)
if (src->type == CPP_MACRO_ARG)
@@ -1630,6 +1646,7 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
bool following_paste_op = false;
const char *paste_op_error_msg =
N_("'##' cannot appear at either end of a macro expansion");
+ unsigned int num_extra_tokens = 0;
/* Get the first token of the expansion (or the '(' of a
function-like macro). */
@@ -1707,6 +1724,10 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
{
if (token->type == CPP_MACRO_ARG)
{
+ if (token->flags & PREV_WHITE)
+ token->flags |= SP_PREV_WHITE;
+ if (token[-1].flags & DIGRAPH)
+ token->flags |= SP_DIGRAPH;
token->flags &= ~PREV_WHITE;
token->flags |= STRINGIFY_ARG;
token->flags |= token[-1].flags & PREV_WHITE;
@@ -1746,8 +1767,21 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
return false;
}
- --macro->count;
- token[-1].flags |= PASTE_LEFT;
+ if (token[-1].flags & PASTE_LEFT)
+ {
+ macro->extra_tokens = 1;
+ num_extra_tokens++;
+ token->val.arg_no = macro->count - 1;
+ }
+ else
+ {
+ --macro->count;
+ token[-1].flags |= PASTE_LEFT;
+ if (token->flags & DIGRAPH)
+ token[-1].flags |= SP_DIGRAPH;
+ if (token->flags & PREV_WHITE)
+ token[-1].flags |= SP_PREV_WHITE;
+ }
}
following_paste_op = (token->type == CPP_PASTE);
@@ -1770,7 +1804,27 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
cpp_token *tokns =
(cpp_token *) pfile->hash_table->alloc_subobject (sizeof (cpp_token)
* macro->count);
- memcpy (tokns, macro->exp.tokens, sizeof (cpp_token) * macro->count);
+ if (num_extra_tokens)
+ {
+ /* Place second and subsequent ## or %:%: tokens in
+ sequences of consecutive such tokens at the end of the
+ list to preserve information about where they appear, how
+ they are spelt and whether they are preceded by
+ whitespace without otherwise interfering with macro
+ expansion. */
+ cpp_token *normal_dest = tokns;
+ cpp_token *extra_dest = tokns + macro->count - num_extra_tokens;
+ unsigned int i;
+ for (i = 0; i < macro->count; i++)
+ {
+ if (macro->exp.tokens[i].type == CPP_PASTE)
+ *extra_dest++ = macro->exp.tokens[i];
+ else
+ *normal_dest++ = macro->exp.tokens[i];
+ }
+ }
+ else
+ memcpy (tokns, macro->exp.tokens, sizeof (cpp_token) * macro->count);
macro->exp.tokens = tokns;
}
else
@@ -1799,6 +1853,7 @@ _cpp_create_definition (cpp_reader *pfile, cpp_hashnode *node)
macro->used = !CPP_OPTION (pfile, warn_unused_macros);
macro->count = 0;
macro->fun_like = 0;
+ macro->extra_tokens = 0;
/* To suppress some diagnostics. */
macro->syshdr = pfile->buffer && pfile->buffer->sysp != 0;
@@ -1946,7 +2001,8 @@ cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node)
len += _cpp_replacement_text_len (macro);
else
{
- for (i = 0; i < macro->count; i++)
+ unsigned int count = macro_real_token_count (macro);
+ for (i = 0; i < count; i++)
{
cpp_token *token = &macro->exp.tokens[i];
@@ -2010,7 +2066,8 @@ cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node)
else if (macro->count)
/* Expansion tokens. */
{
- for (i = 0; i < macro->count; i++)
+ unsigned int count = macro_real_token_count (macro);
+ for (i = 0; i < count; i++)
{
cpp_token *token = &macro->exp.tokens[i];
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 54ecb9a13b1..e76b383939e 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,8 @@
+2009-04-17 Aurelien Jarno <aurelien@aurel32.net>
+
+ * config.host: Add i386/${host_address}/t-fprules-softfp to
+ tmake_file for i[34567]86-*-kfreebsd*-gnu, x86_64-*-kfreebsd*-gnu*.
+
2009-04-09 Nick Clifton <nickc@redhat.com>
* config/ia64/tf-signs.c: Change copyright header to refer to
diff --git a/libgcc/config.host b/libgcc/config.host
index 362d2f24d56..4a1cfb2a295 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -561,6 +561,7 @@ esac
case ${host} in
i[34567]86-*-darwin* | x86_64-*-darwin* | \
+ i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
i[34567]86-*-linux* | x86_64-*-linux*)
if test "${host_address}" = 32; then
tmake_file="${tmake_file} t-softfp i386/${host_address}/t-fprules-softfp"
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index e0b9a2c7a52..6763ad1a993 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,28 @@
+2009-04-18 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR libfortran/39782
+ * io/transfer.c (data_transfer_init): Don't flush before seek.
+ (finalize_transfer): Remove extra flush.
+
+2009-04-17 Janne Blomqvist <jb@gcc.gnu.org>
+
+ * io/io.h (is_preconnected): Remove prototype.
+ * io/unix.c (is_preconnected): Remove function.
+
+2009-04-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * configure.ac: Test for -ffunction-sections -fdata-sections and
+ set SECTION_FLAGS accordingly.
+ * configure: Regenerate.
+
+ * Makefile.am: Add SECTION_FLAGS to AM_CFLAGS.
+ * Makefile.in: Regenerate.
+
+2009-04-15 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR libfortran/38668
+ * io/transfer.c (finalize_transfer): Don't flush for advance='no'.
+
2009-04-15 Danny Smith <dannysmith@clear.net.nz>
* io/write.c (itoa) : Rename back to gfc_itoa.
diff --git a/libgfortran/Makefile.am b/libgfortran/Makefile.am
index 2223d61fcf2..ce73ff22e51 100644
--- a/libgfortran/Makefile.am
+++ b/libgfortran/Makefile.am
@@ -33,6 +33,10 @@ AM_CPPFLAGS = -iquote$(srcdir)/io -I$(srcdir)/$(MULTISRCTOP)../gcc \
# Fortran rules for complex multiplication and division
AM_CFLAGS += -fcx-fortran-rules
+# Use -ffunction-sections -fdata-sections if supported by the compiler
+SECTION_FLAGS = @SECTION_FLAGS@
+AM_CFLAGS += $(SECTION_FLAGS)
+
gfor_io_src= \
io/close.c \
io/file_pos.c \
diff --git a/libgfortran/Makefile.in b/libgfortran/Makefile.in
index eb3a12ef252..8d356d5f3b8 100644
--- a/libgfortran/Makefile.in
+++ b/libgfortran/Makefile.in
@@ -815,7 +815,7 @@ AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
# Fortran rules for complex multiplication and division
-AM_CFLAGS = @AM_CFLAGS@ -fcx-fortran-rules
+AM_CFLAGS = @AM_CFLAGS@ -fcx-fortran-rules $(SECTION_FLAGS)
AM_FCFLAGS = @AM_FCFLAGS@
AR = @AR@
AS = @AS@
@@ -875,6 +875,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+
+# Use -ffunction-sections -fdata-sections if supported by the compiler
+SECTION_FLAGS = @SECTION_FLAGS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/libgfortran/configure b/libgfortran/configure
index caa7e59fd9c..0ebca7d67da 100755
--- a/libgfortran/configure
+++ b/libgfortran/configure
@@ -457,7 +457,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir onestep_TRUE onestep_FALSE onestep host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT multi_basedir toolexecdir toolexeclibdir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AM_FCFLAGS AM_CFLAGS CFLAGS LIBGFOR_USE_SYMVER_TRUE LIBGFOR_USE_SYMVER_FALSE AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB LIBTOOL SED EGREP FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM LN_S OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CPP CPPFLAGS enable_shared enable_static FC FCFLAGS LDFLAGS ac_ct_FC extra_ldflags_libgfortran FPU_HOST_HEADER LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir onestep_TRUE onestep_FALSE onestep host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT multi_basedir toolexecdir toolexeclibdir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AM_FCFLAGS AM_CFLAGS CFLAGS LIBGFOR_USE_SYMVER_TRUE LIBGFOR_USE_SYMVER_FALSE SECTION_FLAGS AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB LIBTOOL SED EGREP FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM LN_S OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CPP CPPFLAGS enable_shared enable_static FC FCFLAGS LDFLAGS ac_ct_FC extra_ldflags_libgfortran FPU_HOST_HEADER LIBOBJS LTLIBOBJS'
ac_subst_files=''
ac_pwd=`pwd`
@@ -3500,6 +3500,73 @@ else
fi
+# Figure out whether the compiler supports "-ffunction-sections -fdata-sections",
+# similarly to how libstdc++ does it
+ac_test_CFLAGS="${CFLAGS+set}"
+ac_save_CFLAGS="$CFLAGS"
+
+# Check for -ffunction-sections -fdata-sections
+echo "$as_me:$LINENO: checking for gcc that supports -ffunction-sections -fdata-sections" >&5
+echo $ECHO_N "checking for gcc that supports -ffunction-sections -fdata-sections... $ECHO_C" >&6
+CFLAGS='-Werror -ffunction-sections -fdata-sections'
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+int foo;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_fdsections=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fdsections=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+else
+ # this is the suspicious part
+ CFLAGS=""
+fi
+if test x"$ac_fdsections" = x"yes"; then
+ SECTION_FLAGS='-ffunction-sections -fdata-sections'
+fi
+echo "$as_me:$LINENO: result: $ac_fdsections" >&5
+echo "${ECHO_T}$ac_fdsections" >&6
+
+
# Find other programs we need.
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
@@ -4287,13 +4354,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:4290: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:4357: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:4293: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:4360: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:4296: output\"" >&5)
+ (eval echo "\"\$as_me:4363: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -5450,7 +5517,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 5453 "configure"' > conftest.$ac_ext
+ echo '#line 5520 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7239,11 +7306,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7242: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7309: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7246: \$? = $ac_status" >&5
+ echo "$as_me:7313: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7578,11 +7645,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7581: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7648: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7585: \$? = $ac_status" >&5
+ echo "$as_me:7652: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7683,11 +7750,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7686: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7753: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7690: \$? = $ac_status" >&5
+ echo "$as_me:7757: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -7738,11 +7805,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7741: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7808: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7745: \$? = $ac_status" >&5
+ echo "$as_me:7812: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10605,7 +10672,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10608 "configure"
+#line 10675 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10701,7 +10768,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10704 "configure"
+#line 10771 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11027,7 +11094,7 @@ fi
# Provide some information about the compiler.
-echo "$as_me:11030:" \
+echo "$as_me:11097:" \
"checking for Fortran compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -11263,7 +11330,7 @@ fi
# Provide some information about the compiler.
-echo "$as_me:11266:" \
+echo "$as_me:11333:" \
"checking for Fortran compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -12003,11 +12070,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12006: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12073: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:12010: \$? = $ac_status" >&5
+ echo "$as_me:12077: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -12102,11 +12169,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12105: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12172: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:12109: \$? = $ac_status" >&5
+ echo "$as_me:12176: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -12154,11 +12221,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12157: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12224: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:12161: \$? = $ac_status" >&5
+ echo "$as_me:12228: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -35350,6 +35417,7 @@ s,@AM_CFLAGS@,$AM_CFLAGS,;t t
s,@CFLAGS@,$CFLAGS,;t t
s,@LIBGFOR_USE_SYMVER_TRUE@,$LIBGFOR_USE_SYMVER_TRUE,;t t
s,@LIBGFOR_USE_SYMVER_FALSE@,$LIBGFOR_USE_SYMVER_FALSE,;t t
+s,@SECTION_FLAGS@,$SECTION_FLAGS,;t t
s,@AS@,$AS,;t t
s,@ac_ct_AS@,$ac_ct_AS,;t t
s,@AR@,$AR,;t t
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
index 0e0b5a7e31f..c0709bbbe51 100644
--- a/libgfortran/configure.ac
+++ b/libgfortran/configure.ac
@@ -149,6 +149,27 @@ LDFLAGS="$save_LDFLAGS"
AC_MSG_RESULT($gfortran_use_symver)
AM_CONDITIONAL(LIBGFOR_USE_SYMVER, [test "x$gfortran_use_symver" = xyes])
+# Figure out whether the compiler supports "-ffunction-sections -fdata-sections",
+# similarly to how libstdc++ does it
+ac_test_CFLAGS="${CFLAGS+set}"
+ac_save_CFLAGS="$CFLAGS"
+
+# Check for -ffunction-sections -fdata-sections
+AC_MSG_CHECKING([for gcc that supports -ffunction-sections -fdata-sections])
+CFLAGS='-Werror -ffunction-sections -fdata-sections'
+AC_TRY_COMPILE(, [int foo;], [ac_fdsections=yes], [ac_fdsections=no])
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+else
+ # this is the suspicious part
+ CFLAGS=""
+fi
+if test x"$ac_fdsections" = x"yes"; then
+ SECTION_FLAGS='-ffunction-sections -fdata-sections'
+fi
+AC_MSG_RESULT($ac_fdsections)
+AC_SUBST(SECTION_FLAGS)
+
# Find other programs we need.
AC_CHECK_TOOL(AS, as)
AC_CHECK_TOOL(AR, ar)
diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h
index c9b3db3da5f..22e097ae22d 100644
--- a/libgfortran/io/io.h
+++ b/libgfortran/io/io.h
@@ -773,9 +773,6 @@ internal_proto(is_seekable);
extern int is_special (stream *);
internal_proto(is_special);
-extern int is_preconnected (stream *);
-internal_proto(is_preconnected);
-
extern void flush_if_preconnected (stream *);
internal_proto(flush_if_preconnected);
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 717041d0b41..27ae8994918 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -2332,7 +2332,6 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
if (dtp->pos != dtp->u.p.current_unit->strm_pos)
{
fbuf_flush (dtp->u.p.current_unit, dtp->u.p.mode);
- sflush (dtp->u.p.current_unit->s);
if (sseek (dtp->u.p.current_unit->s, dtp->pos - 1, SEEK_SET) < 0)
{
generate_error (&dtp->common, LIBERROR_OS, NULL);
@@ -3143,11 +3142,6 @@ finalize_transfer (st_parameter_dt *dtp)
&& dtp->u.p.advance_status != ADVANCE_NO)
next_record (dtp, 1);
- if (dtp->u.p.current_unit->flags.form == FORM_UNFORMATTED
- && stell (dtp->u.p.current_unit->s) >= dtp->rec)
- {
- sflush (dtp->u.p.current_unit->s);
- }
return;
}
@@ -3169,7 +3163,6 @@ finalize_transfer (st_parameter_dt *dtp)
dtp->u.p.current_unit->saved_pos =
dtp->u.p.max_pos > 0 ? dtp->u.p.max_pos - bytes_written : 0;
fbuf_flush (dtp->u.p.current_unit, dtp->u.p.mode);
- sflush (dtp->u.p.current_unit->s);
return;
}
else if (dtp->u.p.current_unit->flags.form == FORM_FORMATTED
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index 4d5ec70ae84..a7eb4e36ae5 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -190,17 +190,6 @@ fix_fd (int fd)
return fd;
}
-int
-is_preconnected (stream * s)
-{
- int fd;
-
- fd = ((unix_stream *) s)->fd;
- if (fd == STDIN_FILENO || fd == STDOUT_FILENO || fd == STDERR_FILENO)
- return 1;
- else
- return 0;
-}
/* If the stream corresponds to a preconnected unit, we flush the
corresponding C stream. This is bugware for mixed C-Fortran codes
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b3c7e82dea3..b72a0a3f80e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,177 @@
+2009-04-19 Jan Hubicka <jh@suse.cz>
+
+ * include/c_compatibility/stdatomic.h (__atomic_flag_for_address): Use
+ _GLIBCXX_NOTHROW.
+
+2009-04-19 Jan Hubicka <jh@suse.cz>
+
+ * include/c_compatibility/stdatomic.h
+ (atomic_flag_test_and_set_explicit, atomic_flag_clear_explicit,
+ __atomic_flag_wait_explicit): Use _GLIBCXX_NOTHROW.
+ * include/bits/c++config (_GLIBCXX_NOTHROW): New.
+
+2009-04-18 Jan Hubicka <jh@suse.cz>
+
+ * libsupc++/eh_type.cc (__cxa_current_exception_type) Mark throw().
+ * libsupc++/unwind-cxx.h (__cxa_get_globals,
+ __cxa_get_globals_fast): Mark const.
+ (__cxa_get_exception_ptr): Mark pure.
+ (__cxa_bad_cast, __cxa_bad_typeid): Mark noreturn
+ (__terminate): Makr throw ().
+ * libsupc++/exception (terminate): Mark throw().
+ (uncaught_exception): Mark pure.
+ * libsupc++/eh_ptr.cc (_M_safe_bool_dummy): Mark throw().
+ * libsupc++/guard.cc (__cxa_guard_abort, __cxa_guard_release):
+ Mark throw().
+ * libsupc++/eh_terminate.cc (__terminate, terminate): Mark throw().
+ * libsupc++/vec.cc (__cxa_vec_cleanup): Mark throw().
+ * libsupc++/cxxabi.h (__cxa_vec_cleanup, __cxa_guard_release,
+ __cxa_guard_abort): Mark throw ().
+ (__cxa_pure_virtual): Mark noreturn.
+ (__cxa_current_exception_type): Mark throw and pure.
+ * libsupc++/exception_ptr.h (operator ==, !=, _M_get, !, ==,
+ __cxa_exception_type): Mark pure.
+ (_M_safe_bool_dummy): Mark pure and const.
+
+2009-04-18 Jan Hubicka <jh@suse.cz>
+
+ * src/pool_allocator.cc (_M_get_free_list, _M_get_mutex): Mark throw ()
+ * src/mt_allocator.cc (_M_reclaim_block, _M_reclaim_block,
+ _M_destroy_thread_key): Mark throw ()
+ * debug.cc (_M_get_mutex, _M_attach_single, _M_detach_single,
+ _M_singular, _M_can_compare _M_get_mutex, _M_message,
+ _M_get_max_length): Mark throw ().
+ * include/debug/formatter.h (_M_message, _M_format_word,
+ _M_get_max_length): Mark throw ().
+ * include/debug/safe_base.h (_M_get_mutex, _M_attach_single,
+ _M_detach_single): Mark throw ().
+ (_M_singular, _M_can_compare, _M_get_mutex): Mark pure and throw ().
+ * include/ext/pool_allocator.h (_M_get_free_list): Mark const and
+ throw ()
+ (_M_get_mutex): Mark throw ().
+ * include/ext/mt_allocator.h (_M_reclaim_block): Mark throw ();
+ (_M_destroy_thread_key): Mark CONST and throw.
+ * include/bits/stl_list.h (swap, transfer, reverse, hook, unhook): Mark
+ throw ().
+
+2009-04-18 Jan Hubicka <jh@suse.cz>
+
+ * src/condition_variable.cc (condition_variable,
+ condition_variable_any constructors): Mark throw()
+ * src/hash.cc (operator() for long double, string, and wstring): Mark
+ throw ().
+ * src/strstream.cc (strstreambuf constructors, freeze, str, pcount,
+ _M_setup, rdbuf, str): Mark throw ().
+ * src/chrono.cc (new): Mark throw ().
+ * include/std/system_error (system_category, generic_category): Mark
+ throw () and const.
+ * include/std/chrono (now): Mark throw ().
+ * include/std/condition_variable (condition_variable,
+ ~condition_variable, condition_variable_any,
+ ~condition_variable_any): Mark throw ().
+ * include/std/mutex (mutex): Mark throw ().
+ * include/bits/stl_list.h (swap, transfer, reverse, hook, unhook): Mark
+ throw.
+ * include/bits/functional_hash.h (operator() on size_t): Mark pure
+ and throw ().
+ * include/bits/locale_facets.tcc (__verify_grouping): Mark pure.
+ * include/bits/locale_classes.h (_S_initialize_once,
+ _S_clone_c_locale): Mark throw ().
+ (_S_get_c_name): Mark const and throw ().
+ (_M_id, _M_compare, _M_transform, _M_compare, _M_transform): Mark
+ throw ().
+ * include/bits/locale_facets.h (__convert_to_v explicit instances):
+ Mark throw ().
+ (_M_convert_to_wmask, _M_initialize_ctype, _S_format_float): Mark
+ throw ().
+ * include/bits/ios_base.h (_M_dispose_callbacks, _M_init, imbue,
+ ios_base): Mark throw ()
+ * include/bits/locale_facets_nonio.h (_M_put): Mark throw.
+ * include/backward/strstream (strstreambuf constructors): Mark throw ().
+ (str, freeze, _M_setupf): Mark throw ().
+ (pcount): Mark pure and throw ().
+ (rdbuf): Mark const and throw ().
+
+2009-04-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/39802
+ * include/bits/locale_facets.tcc (num_get<>::_M_extract_int
+ (_InIter, _InIter, ios_base&, ios_base::iostate&, _ValueT&)):
+ Always accept negative values, for unsigned types too.
+ * testsuite/22_locale/num_get/get/char/39802.cc: New.
+ * testsuite/22_locale/num_get/get/wchar_t/39802.cc: Likewise.
+
+2009-04-18 Jan Hubicka <jh@suse.cz>
+
+ * include/debug/formater.h: Include bits/c++config.h.
+ (_M_error): Mark noreturn.
+ * include/bits/c++config (_GLIBCXX_PURE, _GLIBCXX_CONST,
+ _GLIBCXX_NORETURN): New.
+ * include/bits/stl_tree.h (_Rb_tree_increment, _Rb_tree_increment,
+ _Rb_tree_decrement, _Rb_tree_decrement, _Rb_tree_black_count):
+ Mark pure.
+ * include/c_compatibility/stdatomic.h
+ (atomic_flag_test_and_set_explicit, atomic_flag_clear_explicit,
+ __atomic_flag_wait_explicit, __atomic_flag_for_address):
+ Mark by throw ().
+ * src/atomic.cc (atomic_flag_test_and_set_explicit,
+ atomic_flag_clear_explicit, __atomic_flag_wait_explicit,
+ __atomic_flag_for_address): Mark by throw ().
+
+2009-04-17 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Regenerated.
+
+2009-04-16 Jan Hubicka <jh@suse.cz>
+
+ * tree.cc (_Rb_tree_increment, _Rb_tree_decrement,
+ _Rb_tree_rebalance_for_erase, _Rb_tree_black_count): Mark nothrow;
+ update uses of _Rb_tree_rotate_left, _Rb_tree_rotate_right.
+ (_Rb_tree_rotate_left, _Rb_tree_rotate_right): Make wrapper and break
+ out body to ...
+ (local_Rb_tree_rotate_left, local_Rb_tree_rotate_right): New static
+ functions.
+ * stl_tree.h (_Rb_tree_increment, _Rb_tree_decrement,
+ _Rb_tree_insert_and_rebalance, _Rb_tree_rebalance_for_erase,
+ _Rb_tree_black_count): Mark nothrow.
+
+2009-04-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/forward_list.h: Remove default std::allocator<_Tp>
+ from base classes.
+ * testsuite/23_containers/forward_list/capacity/1.cc: Adjust.
+
+2009-04-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/html: Regenerate.
+
+2009-04-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/xml/manual/status_cxx1998.xml: Update to new table style.
+
+ * doc/xml/gnu/gpl-3.0.xml: Add or adjust dbhtml markup.
+ * doc/xml/gnu/fdl-1.2.xml: Same.
+ * doc/xml/manual/numerics.xml: Same.
+ * doc/xml/manual/concurrency.xml: Same.
+ * doc/xml/manual/intro.xml: Same.
+ * doc/xml/manual/status_cxxtr1.xml: Same.
+ * doc/xml/manual/containers.xml: Same.
+ * doc/xml/manual/io.xml: Same.
+ * doc/xml/manual/utilities.xml: Same.
+ * doc/xml/manual/support.xml: Same.
+ * doc/xml/manual/using.xml: Same.
+ * doc/xml/manual/localization.xml: Same.
+ * doc/xml/manual/locale.xml: Same.
+ * doc/xml/manual/extensions.xml: Same.
+ * doc/xml/manual/appendix_contributing.xml: Same.
+ * doc/xml/manual/diagnostics.xml: Same.
+ * doc/xml/manual/status_cxx200x.xml: Same.
+
+2009-04-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/xml/manual/status_cxxtr1.xml: Update to new table style.
+ * doc/xml/manual/status_cxx200x.xml: Adjust.
+
2009-04-14 Benjamin Kosnik <bkoz@redhat.com>
* doc/xml/spine.xml: Remove unused license entity, update
@@ -6647,10 +6821,8 @@
2009-04-08 Adam Nemet <anemet@caviumnetworks.com>
- * config/abi/post/mips64-linux-gnu/baseline_symbols.txt:
- Regenerate.
- * config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt: New
- file.
+ * config/abi/post/mips64-linux-gnu/baseline_symbols.txt: Regenerate.
+ * config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt: New file.
2009-04-06 Benjamin Kosnik <bkoz@redhat.com>
diff --git a/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
index 3a4568bfec6..f4035ed7dad 100644
--- a/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
@@ -33,19 +33,51 @@ FUNC:_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9
+FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9
FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4
FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4
+FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9
FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4
FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
+FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2
FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@@GLIBCXX_3.4.2
FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@@GLIBCXX_3.4.2
FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4
FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10
FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10
+FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10
FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3
FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4
@@ -53,6 +85,7 @@ FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4
+FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@@GLIBCXX_3.4.4
FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@@GLIBCXX_3.4.4
@@ -81,6 +114,7 @@ FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@@G
FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4
FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4
FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4
+FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10
FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4
FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4
FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4
@@ -203,7 +237,10 @@ FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4
FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCXX_3.4
@@ -301,6 +338,7 @@ FUNC:_ZNKSt11__timepunctIwE9_M_monthsEPPKw@@GLIBCXX_3.4
FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4
FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4
FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
+FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9
FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4
FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4
FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4
@@ -325,6 +363,12 @@ FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@@GLIBCXX_3.4
FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
FUNC:_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
+FUNC:_ZNKSt14error_category10equivalentERKSt10error_codei@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category10equivalentEiRKSt15error_condition@@GLIBCXX_3.4.11
+FUNC:_ZNKSt14error_category23default_error_conditionEi@@GLIBCXX_3.4.11
+FUNC:_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@@CXXABI_1.3.3
+FUNC:_ZNKSt15__exception_ptr13exception_ptrntEv@@CXXABI_1.3.3
FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCXX_3.4
FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCXX_3.4
FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCXX_3.4
@@ -341,6 +385,146 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@@GLIBCXX_3.4
FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
@@ -353,10 +537,25 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4
+FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
+FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashISt10error_codeEclES0_@@GLIBCXX_3.4.11
+FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10
+FUNC:_ZNKSt4hashIgEclEg@@GLIBCXX_LDBL_3.4.10
FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4
FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4
FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4
FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4
+FUNC:_ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11
+FUNC:_ZNKSt5ctypeIcE14_M_narrow_initEv@@GLIBCXX_3.4.11
FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCXX_3.4
FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4
FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCXX_3.4
@@ -515,6 +714,7 @@ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt
FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
+FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4
@@ -591,6 +791,7 @@ FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8i
FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4
FUNC:_ZNKSt8valarrayImE4sizeEv@@GLIBCXX_3.4
+FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9
FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4
FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4
FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4
@@ -696,12 +897,15 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@@GLIBCXX_3.4.11
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.11
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@@GLIBCXX_3.4.11
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@@GLIBCXX_3.4
@@ -725,6 +929,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@@GLIBCXX_3.4.11
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@@GLIBCXX_3.4
@@ -742,6 +947,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
@@ -753,6 +959,7 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@@GLIBCXX_3.4.11
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
@@ -762,10 +969,12 @@ FUNC:_ZNSbIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@@GLIBCXX_3.4.11
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@@GLIBCXX_3.4
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@@GLIBCXX_3.4.11
FUNC:_ZNSbIwSt11char_traitsIwESaIwEEpLEw@@GLIBCXX_3.4
FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
FUNC:_ZNSdC1Ev@@GLIBCXX_3.4
@@ -774,6 +983,18 @@ FUNC:_ZNSdC2Ev@@GLIBCXX_3.4
FUNC:_ZNSdD0Ev@@GLIBCXX_3.4
FUNC:_ZNSdD1Ev@@GLIBCXX_3.4
FUNC:_ZNSdD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIgEERSiRT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9
+FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9
FUNC:_ZNSi3getEPcl@@GLIBCXX_3.4
FUNC:_ZNSi3getEPclc@@GLIBCXX_3.4
FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
@@ -814,6 +1035,7 @@ FUNC:_ZNSirsERb@@GLIBCXX_3.4
FUNC:_ZNSirsERd@@GLIBCXX_3.4
FUNC:_ZNSirsERe@@GLIBCXX_3.4
FUNC:_ZNSirsERf@@GLIBCXX_3.4
+FUNC:_ZNSirsERg@@GLIBCXX_LDBL_3.4
FUNC:_ZNSirsERi@@GLIBCXX_3.4
FUNC:_ZNSirsERj@@GLIBCXX_3.4
FUNC:_ZNSirsERl@@GLIBCXX_3.4
@@ -833,6 +1055,15 @@ FUNC:_ZNSo6sentryC2ERSo@@GLIBCXX_3.4
FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4
FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4
FUNC:_ZNSo8_M_writeEPKcl@@GLIBCXX_3.4
+FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIgEERSoT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9
+FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9
FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
FUNC:_ZNSoC1Ev@@GLIBCXX_3.4
FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
@@ -849,6 +1080,7 @@ FUNC:_ZNSolsEb@@GLIBCXX_3.4
FUNC:_ZNSolsEd@@GLIBCXX_3.4
FUNC:_ZNSolsEe@@GLIBCXX_3.4
FUNC:_ZNSolsEf@@GLIBCXX_3.4
+FUNC:_ZNSolsEg@@GLIBCXX_LDBL_3.4
FUNC:_ZNSolsEi@@GLIBCXX_3.4
FUNC:_ZNSolsEj@@GLIBCXX_3.4
FUNC:_ZNSolsEl@@GLIBCXX_3.4
@@ -893,12 +1125,15 @@ FUNC:_ZNSs6appendEPKc@@GLIBCXX_3.4
FUNC:_ZNSs6appendEPKcm@@GLIBCXX_3.4
FUNC:_ZNSs6appendERKSs@@GLIBCXX_3.4
FUNC:_ZNSs6appendERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6appendESt16initializer_listIcE@@GLIBCXX_3.4.11
FUNC:_ZNSs6appendEmc@@GLIBCXX_3.4
FUNC:_ZNSs6assignEPKc@@GLIBCXX_3.4
FUNC:_ZNSs6assignEPKcm@@GLIBCXX_3.4
FUNC:_ZNSs6assignERKSs@@GLIBCXX_3.4
FUNC:_ZNSs6assignERKSsmm@@GLIBCXX_3.4
+FUNC:_ZNSs6assignESt16initializer_listIcE@@GLIBCXX_3.4.11
FUNC:_ZNSs6assignEmc@@GLIBCXX_3.4
+FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@@GLIBCXX_3.4.11
FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCXX_3.4
FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@@GLIBCXX_3.4
FUNC:_ZNSs6insertEmPKc@@GLIBCXX_3.4
@@ -922,6 +1157,7 @@ FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@@GLIBCXX_3.4
FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCXX_3.4
FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCXX_3.4
FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCXX_3.4
+FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@@GLIBCXX_3.4.11
FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@@GLIBCXX_3.4
FUNC:_ZNSs7replaceEmmPKc@@GLIBCXX_3.4
FUNC:_ZNSs7replaceEmmPKcm@@GLIBCXX_3.4
@@ -939,6 +1175,7 @@ FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC1ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
FUNC:_ZNSsC1EmcRKSaIcE@@GLIBCXX_3.4
FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
@@ -950,6 +1187,7 @@ FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2ESt16initializer_listIcERKSaIcE@@GLIBCXX_3.4.11
FUNC:_ZNSsC2EmcRKSaIcE@@GLIBCXX_3.4
FUNC:_ZNSsC2Ev@@GLIBCXX_3.4
FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
@@ -959,10 +1197,12 @@ FUNC:_ZNSsD1Ev@@GLIBCXX_3.4
FUNC:_ZNSsD2Ev@@GLIBCXX_3.4
FUNC:_ZNSsaSEPKc@@GLIBCXX_3.4
FUNC:_ZNSsaSERKSs@@GLIBCXX_3.4
+FUNC:_ZNSsaSESt16initializer_listIcE@@GLIBCXX_3.4.11
FUNC:_ZNSsaSEc@@GLIBCXX_3.4
FUNC:_ZNSsixEm@@GLIBCXX_3.4
FUNC:_ZNSspLEPKc@@GLIBCXX_3.4
FUNC:_ZNSspLERKSs@@GLIBCXX_3.4
+FUNC:_ZNSspLESt16initializer_listIcE@@GLIBCXX_3.4.11
FUNC:_ZNSspLEc@@GLIBCXX_3.4
FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@@GLIBCXX_3.4
FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
@@ -1131,6 +1371,9 @@ FUNC:_ZNSt12strstreambufC2El@@GLIBCXX_3.4
FUNC:_ZNSt12strstreambufD0Ev@@GLIBCXX_3.4
FUNC:_ZNSt12strstreambufD1Ev@@GLIBCXX_3.4
FUNC:_ZNSt12strstreambufD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt12system_errorD0Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt12system_errorD2Ev@@GLIBCXX_3.4.11
FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
@@ -1206,6 +1449,18 @@ FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@@GLIBCXX_3.4
FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4
FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9
FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@@GLIBCXX_3.4
FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@@GLIBCXX_3.4
FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4
@@ -1246,6 +1501,7 @@ FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@@GLIBCXX_3.4
FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@@GLIBCXX_3.4
FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@@GLIBCXX_3.4
FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@@GLIBCXX_LDBL_3.4
FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@@GLIBCXX_3.4
FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@@GLIBCXX_3.4
FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@@GLIBCXX_3.4
@@ -1265,6 +1521,15 @@ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@@GLIBCXX_LDBL_3.4.7
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4
@@ -1281,6 +1546,7 @@ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@@GLIBCXX_3.4
+FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@@GLIBCXX_LDBL_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@@GLIBCXX_3.4
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@@GLIBCXX_3.4
@@ -1370,6 +1636,18 @@ FUNC:_ZNSt15_List_node_base4swapERS_S0_@@GLIBCXX_3.4
FUNC:_ZNSt15_List_node_base6unhookEv@@GLIBCXX_3.4
FUNC:_ZNSt15_List_node_base7reverseEv@@GLIBCXX_3.4
FUNC:_ZNSt15_List_node_base8transferEPS_S0_@@GLIBCXX_3.4
+FUNC:_ZNSt15__exception_ptr13exception_ptr4swapERS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2ERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrC2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD1Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptrD2Ev@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptr13exception_ptraSERKS0_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
@@ -1386,6 +1664,7 @@ FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10
FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4
@@ -1424,6 +1703,7 @@ FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10
FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@@GLIBCXX_3.4
FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4
@@ -1455,6 +1735,7 @@ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirS
FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4
FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
@@ -1471,6 +1752,7 @@ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirS
FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4
FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
@@ -1538,6 +1820,46 @@ FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4
FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4
FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4
FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCXX_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_LDBL_3.4
+FUNC:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_LDBL_3.4
FUNC:_ZNSt17__timepunct_cacheIcEC1Em@@GLIBCXX_3.4
FUNC:_ZNSt17__timepunct_cacheIcEC2Em@@GLIBCXX_3.4
FUNC:_ZNSt17__timepunct_cacheIcED0Ev@@GLIBCXX_3.4
@@ -1608,6 +1930,13 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GL
FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCXX_3.4
FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
@@ -1644,6 +1973,10 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
+FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11
+FUNC:_ZNSt22condition_variable_anyD2Ev@@GLIBCXX_3.4.11
FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4
FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4
@@ -1660,10 +1993,17 @@ FUNC:_ZNSt5ctypeIwEC2Em@@GLIBCXX_3.4
FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4
FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4
FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9
+FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@@GLIBCXX_3.4.7
FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4
FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4
FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4
@@ -1676,6 +2016,7 @@ FUNC:_ZNSt6locale5_ImplC2ERKS0_m@@GLIBCXX_3.4
FUNC:_ZNSt6locale5_ImplC2Em@@GLIBCXX_3.4
FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4
FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4
+FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6
FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4
FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4
FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4
@@ -1700,6 +2041,9 @@ FUNC:_ZNSt6localeC2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeD1Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@@GLIBCXX_3.4
FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Em@@GLIBCXX_3.4
FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@@GLIBCXX_3.4
@@ -1753,7 +2097,9 @@ FUNC:_ZNSt8bad_castD1Ev@@GLIBCXX_3.4
FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4
FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6
FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
+FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6
FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4
FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4
@@ -1832,6 +2178,11 @@ FUNC:_ZNSt8valarrayImEC2Em@@GLIBCXX_3.4
FUNC:_ZNSt8valarrayImED1Ev@@GLIBCXX_3.4
FUNC:_ZNSt8valarrayImED2Ev@@GLIBCXX_3.4
FUNC:_ZNSt8valarrayImEixEm@@GLIBCXX_3.4
+FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10
+FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10
FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4
FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4
FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4
@@ -1906,15 +2257,27 @@ FUNC:_ZNSt9strstreamD2Ev@@GLIBCXX_3.4
FUNC:_ZNSt9type_infoD0Ev@@GLIBCXX_3.4
FUNC:_ZNSt9type_infoD1Ev@@GLIBCXX_3.4
FUNC:_ZNSt9type_infoD2Ev@@GLIBCXX_3.4
+FUNC:_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
+FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4
FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4
FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4
+FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4
FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4
FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4
+FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
+FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9
FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4
+FUNC:_ZSt16generic_categoryv@@GLIBCXX_3.4.11
+FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
+FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.8
FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
+FUNC:_ZSt17__verify_groupingPKcmRKSs@@GLIBCXX_3.4.10
+FUNC:_ZSt17current_exceptionv@@CXXABI_1.3.3
+FUNC:_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@@CXXABI_1.3.3
FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4
FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4
@@ -1929,7 +2292,10 @@ FUNC:_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4
+FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11
FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4
+FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
+FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9
FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4
FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4
FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4
@@ -1949,6 +2315,14 @@ FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5
FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCXX_3.4
FUNC:_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCXX_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@@GLIBCXX_LDBL_3.4
FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCXX_3.4
FUNC:_ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@@GLIBCXX_3.4
FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCXX_3.4
@@ -1976,6 +2350,14 @@ FUNC:_ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE
FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCXX_3.4
FUNC:_ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@@GLIBCXX_3.4
FUNC:_ZSt9terminatev@@GLIBCXX_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
+FUNC:_ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@@GLIBCXX_LDBL_3.4
FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCXX_3.4
FUNC:_ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@@GLIBCXX_3.4
@@ -2023,6 +2405,8 @@ FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@
FUNC:_ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
FUNC:_ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCXX_LDBL_3.4
FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@@GLIBCXX_3.4
FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@@GLIBCXX_3.4
FUNC:_ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@@GLIBCXX_3.4
@@ -2059,6 +2443,8 @@ FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@G
FUNC:_ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
FUNC:_ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_3.4
+FUNC:_ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
+FUNC:_ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCXX_LDBL_3.4
FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCXX_3.4
FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCXX_3.4
FUNC:_ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCXX_3.4
@@ -2132,6 +2518,8 @@ FUNC:_Znam@@GLIBCXX_3.4
FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
FUNC:_Znwm@@GLIBCXX_3.4
FUNC:_ZnwmRKSt9nothrow_t@@GLIBCXX_3.4
+FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
FUNC:__cxa_allocate_exception@@CXXABI_1.3
FUNC:__cxa_bad_cast@@CXXABI_1.3
FUNC:__cxa_bad_typeid@@CXXABI_1.3
@@ -2162,36 +2550,53 @@ FUNC:__cxa_vec_new3@@CXXABI_1.3
FUNC:__cxa_vec_new@@CXXABI_1.3
FUNC:__dynamic_cast@@CXXABI_1.3
FUNC:__gxx_personality_v0@@CXXABI_1.3
-FUNC:acosl@@GLIBCXX_3.4.3
-FUNC:asinl@@GLIBCXX_3.4.3
-FUNC:atan2l@@GLIBCXX_3.4
-FUNC:atanl@@GLIBCXX_3.4.3
-FUNC:ceill@@GLIBCXX_3.4.3
-FUNC:coshl@@GLIBCXX_3.4
-FUNC:cosl@@GLIBCXX_3.4
-FUNC:expl@@GLIBCXX_3.4
-FUNC:floorl@@GLIBCXX_3.4.3
-FUNC:fmodl@@GLIBCXX_3.4.3
-FUNC:frexpl@@GLIBCXX_3.4.3
-FUNC:hypotl@@GLIBCXX_3.4
-FUNC:ldexpl@@GLIBCXX_3.4.3
-FUNC:log10l@@GLIBCXX_3.4
-FUNC:logl@@GLIBCXX_3.4
-FUNC:modfl@@GLIBCXX_3.4.3
-FUNC:powl@@GLIBCXX_3.4
-FUNC:sinhl@@GLIBCXX_3.4
-FUNC:sinl@@GLIBCXX_3.4
-FUNC:sqrtl@@GLIBCXX_3.4
-FUNC:tanhl@@GLIBCXX_3.4
-FUNC:tanl@@GLIBCXX_3.4
+FUNC:__once_proxy@@GLIBCXX_3.4.11
+FUNC:acosl@GLIBCXX_3.4.3
+FUNC:asinl@GLIBCXX_3.4.3
+FUNC:atan2l@GLIBCXX_3.4
+FUNC:atanl@GLIBCXX_3.4.3
+FUNC:atomic_flag_clear_explicit@@GLIBCXX_3.4.11
+FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
+FUNC:ceill@GLIBCXX_3.4.3
+FUNC:coshl@GLIBCXX_3.4
+FUNC:cosl@GLIBCXX_3.4
+FUNC:expl@GLIBCXX_3.4
+FUNC:floorl@GLIBCXX_3.4.3
+FUNC:fmodl@GLIBCXX_3.4.3
+FUNC:frexpl@GLIBCXX_3.4.3
+FUNC:hypotl@GLIBCXX_3.4
+FUNC:ldexpl@GLIBCXX_3.4.3
+FUNC:log10l@GLIBCXX_3.4
+FUNC:logl@GLIBCXX_3.4
+FUNC:modfl@GLIBCXX_3.4.3
+FUNC:powl@GLIBCXX_3.4
+FUNC:sinhl@GLIBCXX_3.4
+FUNC:sinl@GLIBCXX_3.4
+FUNC:sqrtl@GLIBCXX_3.4
+FUNC:tanhl@GLIBCXX_3.4
+FUNC:tanl@GLIBCXX_3.4
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
+OBJECT:0:CXXABI_1.3.2
+OBJECT:0:CXXABI_1.3.3
+OBJECT:0:CXXABI_LDBL_1.3
OBJECT:0:GLIBCXX_3.4
OBJECT:0:GLIBCXX_3.4.1
+OBJECT:0:GLIBCXX_3.4.10
+OBJECT:0:GLIBCXX_3.4.11
OBJECT:0:GLIBCXX_3.4.2
OBJECT:0:GLIBCXX_3.4.3
OBJECT:0:GLIBCXX_3.4.4
OBJECT:0:GLIBCXX_3.4.5
+OBJECT:0:GLIBCXX_3.4.6
+OBJECT:0:GLIBCXX_3.4.7
+OBJECT:0:GLIBCXX_3.4.8
+OBJECT:0:GLIBCXX_3.4.9
+OBJECT:0:GLIBCXX_LDBL_3.4
+OBJECT:0:GLIBCXX_LDBL_3.4.10
+OBJECT:0:GLIBCXX_LDBL_3.4.7
+OBJECT:104:_ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:104:_ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
@@ -2213,6 +2618,8 @@ OBJECT:120:_ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCX
OBJECT:120:_ZTVSt9strstream@@GLIBCXX_3.4
OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
OBJECT:128:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:128:_ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:128:_ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
OBJECT:128:_ZTVSt12ctype_bynameIwE@@GLIBCXX_3.4
OBJECT:128:_ZTVSt12strstreambuf@@GLIBCXX_3.4
OBJECT:128:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
@@ -2238,17 +2645,23 @@ OBJECT:14:_ZTSSt7collateIwE@@GLIBCXX_3.4
OBJECT:15:_ZTSSt10bad_typeid@@GLIBCXX_3.4
OBJECT:15:_ZTSSt10ctype_base@@GLIBCXX_3.4
OBJECT:15:_ZTSSt10istrstream@@GLIBCXX_3.4
+OBJECT:15:_ZTSSt10lock_error@@GLIBCXX_3.4.11
OBJECT:15:_ZTSSt10money_base@@GLIBCXX_3.4
OBJECT:15:_ZTSSt10ostrstream@@GLIBCXX_3.4
OBJECT:15:_ZTSSt8messagesIcE@@GLIBCXX_3.4
OBJECT:15:_ZTSSt8messagesIwE@@GLIBCXX_3.4
OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCXX_3.4
OBJECT:15:_ZTSSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+OBJECT:16:_ZTIDs@@CXXABI_1.3.3
+OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
OBJECT:16:_ZTINSt6locale5facetE@@GLIBCXX_3.4
OBJECT:16:_ZTISt10ctype_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt10money_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt12codecvt_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt13messages_base@@GLIBCXX_3.4
+OBJECT:16:_ZTISt14error_category@@GLIBCXX_3.4.11
OBJECT:16:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
OBJECT:16:_ZTISt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
@@ -2261,6 +2674,7 @@ OBJECT:16:_ZTIc@@CXXABI_1.3
OBJECT:16:_ZTId@@CXXABI_1.3
OBJECT:16:_ZTIe@@CXXABI_1.3
OBJECT:16:_ZTIf@@CXXABI_1.3
+OBJECT:16:_ZTIg@@CXXABI_LDBL_1.3
OBJECT:16:_ZTIh@@CXXABI_1.3
OBJECT:16:_ZTIi@@CXXABI_1.3
OBJECT:16:_ZTIj@@CXXABI_1.3
@@ -2283,18 +2697,46 @@ OBJECT:17:_ZTSSt12domain_error@@GLIBCXX_3.4
OBJECT:17:_ZTSSt12length_error@@GLIBCXX_3.4
OBJECT:17:_ZTSSt12out_of_range@@GLIBCXX_3.4
OBJECT:17:_ZTSSt12strstreambuf@@GLIBCXX_3.4
+OBJECT:17:_ZTSSt12system_error@@GLIBCXX_3.4.11
OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13bad_exception@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13messages_base@@GLIBCXX_3.4
OBJECT:18:_ZTSSt13runtime_error@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:19:_ZTSSt11__timepunctIwE@@GLIBCXX_3.4
+OBJECT:19:_ZTSSt14error_category@@GLIBCXX_3.4.11
OBJECT:19:_ZTSSt14overflow_error@@GLIBCXX_3.4
OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCXX_3.4
OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCXX_3.4
OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCXX_3.4
OBJECT:1:_ZNSt10moneypunctIwLb0EE4intlE@@GLIBCXX_3.4
OBJECT:1:_ZNSt10moneypunctIwLb1EE4intlE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDiE9is_signedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_boundedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE10is_integerE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE12has_infinityE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE13has_quiet_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE14is_specializedE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15has_denorm_lossE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE15tinyness_beforeE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE17has_signaling_NaNE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE5trapsE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE8is_exactE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
@@ -2373,6 +2815,19 @@ OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCXX_3.4
OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCXX_3.4
OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCXX_3.4
OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_boundedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE10is_integerE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE12has_infinityE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE13has_quiet_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE14is_specializedE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15has_denorm_lossE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE15tinyness_beforeE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE17has_signaling_NaNE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE5trapsE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE8is_exactE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_iec559E@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_moduloE@@GLIBCXX_LDBL_3.4
+OBJECT:1:_ZNSt14numeric_limitsIgE9is_signedE@@GLIBCXX_LDBL_3.4
OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCXX_3.4
OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCXX_3.4
OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCXX_3.4
@@ -2520,6 +2975,10 @@ OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCXX_3.4
OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCXX_3.4
OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
OBJECT:1:_ZSt7nothrow@@GLIBCXX_3.4
OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
@@ -2536,6 +2995,8 @@ OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCXX_3.4
OBJECT:23:_ZTSSt15messages_bynameIwE@@GLIBCXX_3.4
OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCXX_3.4
OBJECT:23:_ZTSSt15numpunct_bynameIwE@@GLIBCXX_3.4
+OBJECT:2440:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
+OBJECT:2440:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
OBJECT:24:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
OBJECT:24:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3
OBJECT:24:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
@@ -2550,9 +3011,18 @@ OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
OBJECT:24:_ZTINSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:24:_ZTISt10bad_typeid@@GLIBCXX_3.4
OBJECT:24:_ZTISt10istrstream@@GLIBCXX_3.4
+OBJECT:24:_ZTISt10lock_error@@GLIBCXX_3.4.11
OBJECT:24:_ZTISt10ostrstream@@GLIBCXX_3.4
OBJECT:24:_ZTISt11__timepunctIcE@@GLIBCXX_3.4
OBJECT:24:_ZTISt11__timepunctIwE@@GLIBCXX_3.4
@@ -2564,6 +3034,7 @@ OBJECT:24:_ZTISt12domain_error@@GLIBCXX_3.4
OBJECT:24:_ZTISt12length_error@@GLIBCXX_3.4
OBJECT:24:_ZTISt12out_of_range@@GLIBCXX_3.4
OBJECT:24:_ZTISt12strstreambuf@@GLIBCXX_3.4
+OBJECT:24:_ZTISt12system_error@@GLIBCXX_3.4.11
OBJECT:24:_ZTISt13bad_exception@@GLIBCXX_3.4
OBJECT:24:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCXX_3.4
OBJECT:24:_ZTISt13basic_filebufIwSt11char_traitsIwEE@@GLIBCXX_3.4
@@ -2656,6 +3127,7 @@ OBJECT:2:_ZTSc@@CXXABI_1.3
OBJECT:2:_ZTSd@@CXXABI_1.3
OBJECT:2:_ZTSe@@CXXABI_1.3
OBJECT:2:_ZTSf@@CXXABI_1.3
+OBJECT:2:_ZTSg@@CXXABI_LDBL_1.3
OBJECT:2:_ZTSh@@CXXABI_1.3
OBJECT:2:_ZTSi@@CXXABI_1.3
OBJECT:2:_ZTSj@@CXXABI_1.3
@@ -2669,12 +3141,17 @@ OBJECT:2:_ZTSx@@CXXABI_1.3
OBJECT:2:_ZTSy@@CXXABI_1.3
OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
OBJECT:32:_ZTIPKa@@CXXABI_1.3
OBJECT:32:_ZTIPKb@@CXXABI_1.3
OBJECT:32:_ZTIPKc@@CXXABI_1.3
OBJECT:32:_ZTIPKd@@CXXABI_1.3
OBJECT:32:_ZTIPKe@@CXXABI_1.3
OBJECT:32:_ZTIPKf@@CXXABI_1.3
+OBJECT:32:_ZTIPKg@@CXXABI_LDBL_1.3
OBJECT:32:_ZTIPKh@@CXXABI_1.3
OBJECT:32:_ZTIPKi@@CXXABI_1.3
OBJECT:32:_ZTIPKj@@CXXABI_1.3
@@ -2692,6 +3169,7 @@ OBJECT:32:_ZTIPc@@CXXABI_1.3
OBJECT:32:_ZTIPd@@CXXABI_1.3
OBJECT:32:_ZTIPe@@CXXABI_1.3
OBJECT:32:_ZTIPf@@CXXABI_1.3
+OBJECT:32:_ZTIPg@@CXXABI_LDBL_1.3
OBJECT:32:_ZTIPh@@CXXABI_1.3
OBJECT:32:_ZTIPi@@CXXABI_1.3
OBJECT:32:_ZTIPj@@CXXABI_1.3
@@ -2743,6 +3221,7 @@ OBJECT:3:_ZTSPc@@CXXABI_1.3
OBJECT:3:_ZTSPd@@CXXABI_1.3
OBJECT:3:_ZTSPe@@CXXABI_1.3
OBJECT:3:_ZTSPf@@CXXABI_1.3
+OBJECT:3:_ZTSPg@@CXXABI_LDBL_1.3
OBJECT:3:_ZTSPh@@CXXABI_1.3
OBJECT:3:_ZTSPi@@CXXABI_1.3
OBJECT:3:_ZTSPj@@CXXABI_1.3
@@ -2769,11 +3248,13 @@ OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:40:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
OBJECT:40:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt10lock_error@@GLIBCXX_3.4.11
OBJECT:40:_ZTVSt11logic_error@@GLIBCXX_3.4
OBJECT:40:_ZTVSt11range_error@@GLIBCXX_3.4
OBJECT:40:_ZTVSt12domain_error@@GLIBCXX_3.4
OBJECT:40:_ZTVSt12length_error@@GLIBCXX_3.4
OBJECT:40:_ZTVSt12out_of_range@@GLIBCXX_3.4
+OBJECT:40:_ZTVSt12system_error@@GLIBCXX_3.4.11
OBJECT:40:_ZTVSt13bad_exception@@GLIBCXX_3.4
OBJECT:40:_ZTVSt13runtime_error@@GLIBCXX_3.4
OBJECT:40:_ZTVSt14overflow_error@@GLIBCXX_3.4
@@ -2803,6 +3284,24 @@ OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
OBJECT:49:_ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
OBJECT:4:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@@GLIBCXX_3.4
OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIDiE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDiE8digits10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE10has_denormE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE11round_styleE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12max_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE12min_exponentE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14max_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE14min_exponent10E@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCXX_3.4
@@ -2857,6 +3356,15 @@ OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCXX_3.4
OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCXX_3.4
OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCXX_3.4
OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCXX_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE10has_denormE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE11round_styleE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12max_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE12min_exponentE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14max_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE14min_exponent10E@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE5radixE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE6digitsE@@GLIBCXX_LDBL_3.4
+OBJECT:4:_ZNSt14numeric_limitsIgE8digits10E@@GLIBCXX_LDBL_3.4
OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCXX_3.4
OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCXX_3.4
OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCXX_3.4
@@ -3001,6 +3509,7 @@ OBJECT:4:_ZTSPKc@@CXXABI_1.3
OBJECT:4:_ZTSPKd@@CXXABI_1.3
OBJECT:4:_ZTSPKe@@CXXABI_1.3
OBJECT:4:_ZTSPKf@@CXXABI_1.3
+OBJECT:4:_ZTSPKg@@CXXABI_LDBL_1.3
OBJECT:4:_ZTSPKh@@CXXABI_1.3
OBJECT:4:_ZTSPKi@@CXXABI_1.3
OBJECT:4:_ZTSPKj@@CXXABI_1.3
@@ -3035,6 +3544,10 @@ OBJECT:56:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCX
OBJECT:56:_ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
OBJECT:56:_ZTTSd@@GLIBCXX_3.4
OBJECT:56:_ZTTSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:56:_ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
OBJECT:56:_ZTVSt14collate_bynameIcE@@GLIBCXX_3.4
OBJECT:56:_ZTVSt14collate_bynameIwE@@GLIBCXX_3.4
OBJECT:56:_ZTVSt15messages_bynameIcE@@GLIBCXX_3.4
@@ -3067,10 +3580,15 @@ OBJECT:67:_ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE
OBJECT:72:_ZTVN10__cxxabiv117__pbase_type_infoE@@CXXABI_1.3
OBJECT:72:_ZTVN10__cxxabiv119__pointer_type_infoE@@CXXABI_1.3
OBJECT:72:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@CXXABI_1.3
+OBJECT:72:_ZTVSt14error_category@@GLIBCXX_3.4.11
OBJECT:72:_ZTVSt15numpunct_bynameIcE@@GLIBCXX_3.4
OBJECT:72:_ZTVSt15numpunct_bynameIwE@@GLIBCXX_3.4
OBJECT:72:_ZTVSt8numpunctIcE@@GLIBCXX_3.4
OBJECT:72:_ZTVSt8numpunctIwE@@GLIBCXX_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:79:_ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
OBJECT:80:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
OBJECT:80:_ZTTSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:80:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
@@ -3094,6 +3612,10 @@ OBJECT:80:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
OBJECT:80:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
OBJECT:80:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
OBJECT:80:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+OBJECT:81:_ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
OBJECT:88:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
OBJECT:88:_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
OBJECT:88:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
@@ -3109,6 +3631,14 @@ OBJECT:8:_ZGVNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
OBJECT:8:_ZGVNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCXX_3.4
OBJECT:8:_ZGVNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCXX_3.4
OBJECT:8:_ZGVNSt7collateIwE2idE@@GLIBCXX_3.4
OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4
@@ -3140,6 +3670,14 @@ OBJECT:8:_ZNSt10moneypunctIwLb0EE2idE@@GLIBCXX_3.4
OBJECT:8:_ZNSt10moneypunctIwLb1EE2idE@@GLIBCXX_3.4
OBJECT:8:_ZNSt11__timepunctIcE2idE@@GLIBCXX_3.4
OBJECT:8:_ZNSt11__timepunctIwE2idE@@GLIBCXX_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_LDBL_3.4
+OBJECT:8:_ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_LDBL_3.4
OBJECT:8:_ZNSt5ctypeIcE10table_sizeE@@GLIBCXX_3.4
OBJECT:8:_ZNSt5ctypeIcE2idE@@GLIBCXX_3.4
OBJECT:8:_ZNSt5ctypeIwE2idE@@GLIBCXX_3.4
diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html
index b6106fc8c2b..489ec3ce157 100644
--- a/libstdc++-v3/doc/html/api.html
+++ b/libstdc++-v3/doc/html/api.html
@@ -5,7 +5,7 @@
<a class="ulink" href="http://www.fsf.org/" target="_top">FSF
</a>
- </p></div><div><div class="legalnotice"><a id="id368924"></a><p>
+ </p></div><div><div class="legalnotice"><a id="id446889"></a><p>
<a class="ulink" href="17_intro/license.html" target="_top">License
</a>
</p></div></div></div><hr /></div><p>
diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html
index 64674007a6c..74fa9fa54b9 100644
--- a/libstdc++-v3/doc/html/faq.html
+++ b/libstdc++-v3/doc/html/faq.html
@@ -164,7 +164,7 @@
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how"></a><a id="q-how"></a><p><b>1.5.</b></p></td><td align="left" valign="top"><p>
How do I contribute to the effort?
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how"></a></td><td align="left" valign="top"><p>
- Here is <a class="link" href="manual/appendix_contributing.html" title="Appendix A. Contributing">a page devoted to
+ Here is <a class="link" href="manual/appendix_contributing.html" title="Appendix A.  Contributing">a page devoted to
this topic</a>. Subscribing to the mailing list (see above, or
the homepage) is a very good idea if you have something to
contribute, or if you have spare time and want to
@@ -204,7 +204,7 @@
</a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.license.what"></a><a id="q-license.what"></a><p><b>2.1.</b></p></td><td align="left" valign="top"><p>
What are the license terms for libstdc++?
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.what"></a></td><td align="left" valign="top"><p>
- See <a class="link" href="manual/bk01pt01ch01s02.html" title="License">our license description</a>
+ See <a class="link" href="manual/license.html" title="License">our license description</a>
for these and related questions.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.license.any_program"></a><a id="q-license.any_program"></a><p><b>2.2.</b></p></td><td align="left" valign="top"><p>
So any program which uses libstdc++ falls under the GPL?
@@ -243,7 +243,7 @@
the source: please consult your vendor for details.
</p><p>
To build and install from the GNU GCC sources, please consult the
- <a class="link" href="manual/bk01pt01ch02.html" title="Chapter 2. Setup">setup
+ <a class="link" href="manual/setup.html" title="Chapter 2. Setup">setup
documentation</a> for detailed
instructions. You may wish to browse those files ahead
of time to get a feel for what's required.
@@ -320,7 +320,7 @@
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_is_libsupcxx"></a></td><td align="left" valign="top"><p>
If the only functions from <code class="filename">libstdc++.a</code>
which you need are language support functions (those listed in
- <a class="link" href="manual/support.html" title="Part II. Support">clause 18</a> of the
+ <a class="link" href="manual/support.html" title="Part II.  Support">clause 18</a> of the
standard, e.g., <code class="function">new</code> and
<code class="function">delete</code>), then try linking against
<code class="filename">libsupc++.a</code>, which is a subset of
@@ -506,9 +506,9 @@
long</span> specializations, and details of thread support.
</p><p>
Long answer: See the implementation status pages for
- <a class="link" href="manual/bk01pt01ch01.html#manual.intro.status.standard.1998" title="C++ 1998">C++98</a>,
- <a class="link" href="manual/bk01pt01ch01.html#manual.intro.status.standard.tr1" title="C++ TR1">TR1</a>, and
- <a class="link" href="manual/bk01pt01ch01.html#manual.intro.status.standard.200x" title="C++ 200x">C++0x</a>.
+ <a class="link" href="manual/status.html#manual.intro.status.standard.1998" title="C++ 1998/2003">C++98</a>,
+ <a class="link" href="manual/status.html#manual.intro.status.standard.tr1" title="C++ TR1">TR1</a>, and
+ <a class="link" href="manual/status.html#manual.intro.status.standard.200x" title="C++ 200x">C++0x</a>.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.standard_bugs"></a><a id="q-standard_bugs"></a><p><b>5.2.</b></p></td><td align="left" valign="top"><p>
Bugs in the ISO C++ language or library specification
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-standard_bugs"></a></td><td align="left" valign="top"><p>
@@ -579,12 +579,12 @@
reason is that the state flags are <span class="emphasis"><em>not</em></span> cleared
on a successful call to open(). The standard unfortunately did
not specify behavior in this case, and to everybody's great sorrow,
- the <a class="link" href="manual/bk01pt01ch01s03.html" title="Bugs">proposed LWG resolution in
+ the <a class="link" href="manual/bugs.html" title="Bugs">proposed LWG resolution in
DR #22</a> is to leave the flags unchanged. You must insert a call
to <code class="function">fs.clear()</code> between the calls to close() and open(),
and then everything will work like we all expect it to work.
<span class="emphasis"><em>Update:</em></span> for GCC 4.0 we implemented the resolution
- of <a class="link" href="manual/bk01pt01ch01s03.html" title="Bugs">DR #409</a> and open()
+ of <a class="link" href="manual/bugs.html" title="Bugs">DR #409</a> and open()
now calls <code class="function">clear()</code> on success!
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.wefcxx_verbose"></a><a id="q-wefcxx_verbose"></a><p><b>6.2.</b></p></td><td align="left" valign="top"><p>
-Weffc++ complains too much
@@ -685,7 +685,7 @@
list::size() is O(n)!
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-list_size_on"></a></td><td align="left" valign="top"><p>
See
- the <a class="link" href="manual/containers.html" title="Part VII. Containers">Containers</a>
+ the <a class="link" href="manual/containers.html" title="Part VII.  Containers">Containers</a>
chapter.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.easy_to_fix"></a><a id="q-easy_to_fix"></a><p><b>6.9.</b></p></td><td align="left" valign="top"><p>
Aw, that's easy to fix!
@@ -696,7 +696,7 @@
patches</a> that covers the procedure, but for libstdc++ you
should also send the patch to our mailing list in addition to
the GCC patches mailing list. The libstdc++
- <a class="link" href="manual/appendix_contributing.html" title="Appendix A. Contributing">contributors' page</a>
+ <a class="link" href="manual/appendix_contributing.html" title="Appendix A.  Contributing">contributors' page</a>
also talks about how to submit patches.
</p><p>
In addition to the description, the patch, and the ChangeLog
@@ -789,7 +789,7 @@
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">
Technical Report 1</a>.
</p><p>
- The implementation status of TR1 in libstdc++ can be tracked <a class="link" href="manual/bk01pt01ch01.html#manual.intro.status.standard.tr1" title="C++ TR1">on the TR1 status
+ The implementation status of TR1 in libstdc++ can be tracked <a class="link" href="manual/status.html#manual.intro.status.standard.tr1" title="C++ TR1">on the TR1 status
page</a>.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.get_iso_cxx"></a><a id="q-get_iso_cxx"></a><p><b>7.6.</b></p></td><td align="left" valign="top"><p>How do I get a copy of the ISO C++ Standard?
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-get_iso_cxx"></a></td><td align="left" valign="top"><p>
diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html
index b924bed5d68..9659c189141 100644
--- a/libstdc++-v3/doc/html/manual/abi.html
+++ b/libstdc++-v3/doc/html/manual/abi.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ABI Policy and Guidelines</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; ABI&#10; , &#10; version&#10; , &#10; dynamic&#10; , &#10; shared&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="internals.html" title="Porting to New Hardware or Operating Systems" /><link rel="next" href="api.html" title="API Evolution and Deprecation History" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ABI Policy and Guidelines</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Appendix B. Porting and Maintenance</th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.abi"></a>ABI Policy and Guidelines</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ABI Policy and Guidelines</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; ABI&#10; , &#10; version&#10; , &#10; dynamic&#10; , &#10; shared&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="prev" href="internals.html" title="Porting to New Hardware or Operating Systems" /><link rel="next" href="api.html" title="API Evolution and Deprecation History" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ABI Policy and Guidelines</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Appendix B. 
+ Porting and Maintenance
+
+</th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.abi"></a>ABI Policy and Guidelines</h2></div></div></div><p>
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="abi.cxx_interface"></a>The C++ Interface</h3></div></div></div><p>
C++ applications often dependent on specific language support
routines, say for throwing exceptions, or catching exceptions, and
@@ -461,54 +464,54 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
<a class="ulink" href="http://gcc.gnu.org/PR24660" target="_top">24660: versioning weak symbols in libstdc++</a>
</p><p>
<a class="ulink" href="http://gcc.gnu.org/PR19664" target="_top">19664: libstdc++ headers should have pop/push of the visibility around the declarations</a>
-</p></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="abi.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id571553"></a><p><span class="title"><i>
+</p></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="abi.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id570943"></a><p><span class="title"><i>
ABIcheck, a vague idea of checking ABI compatibility
</i>. </span><span class="biblioid">
<a class="ulink" href="http://abicheck.sourceforge.net/" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id571570"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id570961"></a><p><span class="title"><i>
C++ ABI Reference
</i>. </span><span class="biblioid">
<a class="ulink" href="http://www.codesourcery.com/cxx-abi" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id571588"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id570979"></a><p><span class="title"><i>
Intel® Compilers for Linux* -Compatibility with the GNU Compilers
</i>. </span><span class="biblioid">
<a class="ulink" href="http://developer.intel.com/software/products/compilers/techtopics/LinuxCompilersCompatibility.htm" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id571606"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id570996"></a><p><span class="title"><i>
Intel® Compilers for Linux* -Compatibility with the GNU Compilers
</i>. </span><span class="biblioid">
<a class="ulink" href="http://developer.intel.com/software/products/compilers/techtopics/LinuxCompilersCompatibility.htm" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id571623"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id571014"></a><p><span class="title"><i>
Sun Solaris 2.9 : Linker and Libraries Guide (document 816-1386)
</i>. </span><span class="biblioid">
<a class="ulink" href="http://docs.sun.com/?p=/doc/816-1386&amp;a=load" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id571640"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id571030"></a><p><span class="title"><i>
Sun Solaris 2.9 : C++ Migration Guide (document 816-2459)
</i>. </span><span class="biblioid">
<a class="ulink" href="http://docs.sun.com/db/prod/solaris.9" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id571658"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id571048"></a><p><span class="title"><i>
ELF Symbol Versioning
</i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="biblioid">
<a class="ulink" href="http://people.redhat.com/drepper/symbol-versioning" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id571686"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id571076"></a><p><span class="title"><i>
C++ ABI for the ARM Architecture
</i>. </span><span class="biblioid">
<a class="ulink" href="http://www.arm.com/miscPDFs/8033.pdf" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id571703"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id571094"></a><p><span class="title"><i>
Dynamic Shared Objects: Survey and Issues
</i>. </span><span class="subtitle">
ISO C++ J16/06-0046
. </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span><span class="biblioid">
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id571735"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id571126"></a><p><span class="title"><i>
Versioning With Namespaces
</i>. </span><span class="subtitle">
ISO C++ J16/06-0083
diff --git a/libstdc++-v3/doc/html/manual/algorithms.html b/libstdc++-v3/doc/html/manual/algorithms.html
index 07f9a45b7bb..4ac3c2c1c09 100644
--- a/libstdc++-v3/doc/html/manual/algorithms.html
+++ b/libstdc++-v3/doc/html/manual/algorithms.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IX. Algorithms</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; , &#10; algorithm&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt08ch19s02.html" title="One Past the End" /><link rel="next" href="bk01pt09pr02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IX. Algorithms</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt08ch19s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt09pr02.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.algorithms"></a>Part IX. Algorithms</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap">swap</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt08ch19s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt09pr02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">One Past the End </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IX.  Algorithms</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; , &#10; algorithm&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt08ch19s02.html" title="One Past the End" /><link rel="next" href="bk01pt09pr02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IX. 
+ Algorithms
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt08ch19s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt09pr02.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.algorithms"></a>Part IX. 
+ Algorithms
+ <a id="id476408" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap">swap</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt08ch19s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt09pr02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">One Past the End </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html
index b475cadcfb3..553ed241a52 100644
--- a/libstdc++-v3/doc/html/manual/api.html
+++ b/libstdc++-v3/doc/html/manual/api.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>API Evolution and Deprecation History</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="ISO C++, api, evolution, deprecation, history" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="abi.html" title="ABI Policy and Guidelines" /><link rel="next" href="backwards.html" title="Backwards Compatibility" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">API Evolution and Deprecation History</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="abi.html">Prev</a> </td><th width="60%" align="center">Appendix B. Porting and Maintenance</th><td width="20%" align="right"> <a accesskey="n" href="backwards.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.api"></a>API Evolution and Deprecation History</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>API Evolution and Deprecation History</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="ISO C++, api, evolution, deprecation, history" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="prev" href="abi.html" title="ABI Policy and Guidelines" /><link rel="next" href="backwards.html" title="Backwards Compatibility" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">API Evolution and Deprecation History</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="abi.html">Prev</a> </td><th width="60%" align="center">Appendix B. 
+ Porting and Maintenance
+
+</th><td width="20%" align="right"> <a accesskey="n" href="backwards.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.api"></a>API Evolution and Deprecation History</h2></div></div></div><p>
A list of user-visible changes, in chronological order
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_300"></a><code class="constant">3.0</code></h3></div></div></div><p>
Extensions moved to <code class="filename">include/ext</code>.
@@ -72,11 +75,11 @@ _Alloc_traits</code> have been removed.
<span class="type">__alloc</span> to select an underlying allocator that
satisfied memory allocation requests. The selection of this
underlying allocator was not user-configurable.
- </p><div class="table"><a id="id549268"></a><p class="title"><b>Table B.1. Extension Allocators</b></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template&lt;int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template&lt;bool,int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> Releases after gcc-3.4 have continued to add to the collection
+ </p><div class="table"><a id="id530186"></a><p class="title"><b>Table B.1. Extension Allocators</b></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template&lt;int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template&lt;bool,int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> Releases after gcc-3.4 have continued to add to the collection
of available allocators. All of these new allocators are
standard-style. The following table includes details, along with
the first released version of GCC that included the extension allocator.
- </p><div class="table"><a id="id502386"></a><p class="title"><b>Table B.2. Extension Allocators Continued</b></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p>
+ </p><div class="table"><a id="id595728"></a><p class="title"><b>Table B.2. Extension Allocators Continued</b></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p>
Debug mode first appears.
</p><p>
Precompiled header support <acronym class="acronym">PCH</acronym> support.
diff --git a/libstdc++-v3/doc/html/manual/appendix_contributing.html b/libstdc++-v3/doc/html/manual/appendix_contributing.html
index 7268e9bec37..fa350f4b34f 100644
--- a/libstdc++-v3/doc/html/manual/appendix_contributing.html
+++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html
@@ -1,6 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix A. Contributing</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt12ch40s03.html" title="Use" /><link rel="next" href="bk01apas02.html" title="Directory Layout and Source Conventions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A. Contributing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch40s03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01apas02.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.contrib"></a>Appendix A. Contributing</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01apas02.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="bk01apas03.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01apas03.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="bk01apas03.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01apas04.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01apas04.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="bk01apas04.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01apas05.html">Design Notes</a></span></dt></dl></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix A.  Contributing</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt12ch40s03.html" title="Use" /><link rel="next" href="source_organization.html" title="Directory Layout and Source Conventions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A. 
+ Contributing
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch40s03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.contrib"></a>Appendix A. 
+ Contributing
+ <a id="id573380" class="indexterm"></a>
+</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></div><p>
The GNU C++ Library follows an open development model. Active
contributors are assigned maintainer-ship responsibility, and given
write access to the source repository. First time contributors
@@ -36,11 +42,11 @@
</p></li><li><p>
Be familiar with the extensions that preceded these
general GNU rules. These style issues for libstdc++ can be
- found <a class="link" href="bk01apas03.html" title="Coding Style">here</a>.
+ found <a class="link" href="source_code_style.html" title="Coding Style">here</a>.
</p></li><li><p>
And last but certainly not least, read the
library-specific information
- found <a class="link" href="appendix_porting.html" title="Appendix B. Porting and Maintenance"> here</a>.
+ found <a class="link" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance"> here</a>.
</p></li></ul></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="list.copyright"></a>Assignment</h3></div></div></div><p>
Small changes can be accepted without a copyright assignment form on
file. New code and additions to the library need completed copyright
@@ -104,4 +110,4 @@
mail message and send it to libstdc++@gcc.gnu.org. All
patches and related discussion should be sent to the
libstdc++ mailing list.
- </p></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch40s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apas02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Use </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Directory Layout and Source Conventions</td></tr></table></div></body></html>
+ </p></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch40s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Use </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Directory Layout and Source Conventions</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html
index 46a3c244c81..c2a215ad1ea 100644
--- a/libstdc++-v3/doc/html/manual/appendix_free.html
+++ b/libstdc++-v3/doc/html/manual/appendix_free.html
@@ -1,6 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix C. Free Software Needs Free Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="backwards.html" title="Backwards Compatibility" /><link rel="next" href="bk01apd.html" title="Appendix D. GNU General Public License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix C. Free Software Needs Free Documentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01apd.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.free"></a>Appendix C. Free Software Needs Free Documentation</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix C.  Free Software Needs Free Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="backwards.html" title="Backwards Compatibility" /><link rel="next" href="appendix_gpl.html" title="Appendix D.  GNU General Public License version 3" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix C. 
+ Free Software Needs Free Documentation
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.free"></a>Appendix C. 
+ Free Software Needs Free Documentation
+ <a id="id524996" class="indexterm"></a>
+</h2></div></div></div><p>
The biggest deficiency in free operating systems is not in the
software--it is the lack of good free manuals that we can include in
these systems. Many of our most important programs do not come with
@@ -113,4 +119,6 @@ prefer copylefted manuals to non-copylefted ones.
that lists free books available from other publishers</a>].
</p><p>Copyright © 2004, 2005, 2006, 2007 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</p><p>Verbatim copying and distribution of this entire article are
permitted worldwide, without royalty, in any medium, provided this
-notice is preserved.</p><p>Report any problems or suggestions to <code class="email">&lt;<a class="email" href="mailto:webmaster@fsf.org">webmaster@fsf.org</a>&gt;</code>.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apd.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Backwards Compatibility </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix D. GNU General Public License</td></tr></table></div></body></html>
+notice is preserved.</p><p>Report any problems or suggestions to <code class="email">&lt;<a class="email" href="mailto:webmaster@fsf.org">webmaster@fsf.org</a>&gt;</code>.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Backwards Compatibility </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix D. 
+ GNU General Public License version 3
+ </td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01ape.html b/libstdc++-v3/doc/html/manual/appendix_gfdl.html
index 6b3403b9bb8..1a6d54ef6f5 100644
--- a/libstdc++-v3/doc/html/manual/bk01ape.html
+++ b/libstdc++-v3/doc/html/manual/appendix_gfdl.html
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix E. GNU Free Documentation License</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01apds03.html" title="How to Apply These Terms to Your New Programs" /><link rel="next" href="../bk02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix E. GNU Free Documentation License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apds03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gfdl-1.2"></a>Appendix E. GNU Free Documentation License</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix E. GNU Free Documentation License</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_gpl.html" title="Appendix D.  GNU General Public License version 3" /><link rel="next" href="bk01ix01.html" title="Index" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix E. GNU Free Documentation License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01ix01.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gfdl-1.2"></a>Appendix E. GNU Free Documentation License</h2></div></div></div><p>
Copyright (C) 2000, 2001, 2002 Free Software Foundation,
<abbr class="abbrev">Inc.</abbr> 51 Franklin <abbr class="abbrev">St</abbr>, Fifth Floor,
Boston, <abbr class="abbrev">MA</abbr> 02110-1301 <abbr class="abbrev">USA</abbr>. Everyone is permitted to copy and
distribute verbatim copies of this license document, but changing it is
not allowed.
- </p><h2><a id="Preamble"></a>
+ </p><h2><a id="fdl-1-preamble"></a>
0. PREAMBLE
</h2><p>
The purpose of this License is to make a manual, textbook, or other
@@ -28,7 +28,7 @@
does. But this License is not limited to software manuals; it can be used
for any textual work, regardless of subject matter or whether it is
published as a printed book. We recommend this License principally for
- works whose purpose is instruction or reference.</p><h2><a id="Definitions"></a>
+ works whose purpose is instruction or reference.</p><h2><a id="fdl-1-definitions"></a>
1. APPLICABILITY AND DEFINITIONS
</h2><p>
This License applies to any manual or other work, in any medium, that
@@ -334,7 +334,7 @@
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve its
Title (section 1) will typically require changing the actual title.
- </p><h2><a id="Termination"></a>
+ </p><h2><a id="fdl-1-termination"></a>
9. TERMINATION
</h2><p>
You may not copy, modify, sublicense, or distribute the Document except as
@@ -390,4 +390,6 @@
recommend releasing these examples in parallel under your choice of free
software license, such as the GNU General Public License, to permit their
use in free software.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apds03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">How to Apply These Terms to Your New Programs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01ix01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix D. 
+ GNU General Public License version 3
+  </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Index</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/appendix_gpl.html b/libstdc++-v3/doc/html/manual/appendix_gpl.html
new file mode 100644
index 00000000000..7c85bc94701
--- /dev/null
+++ b/libstdc++-v3/doc/html/manual/appendix_gpl.html
@@ -0,0 +1,681 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix D.  GNU General Public License version 3</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_free.html" title="Appendix C.  Free Software Needs Free Documentation" /><link rel="next" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix D. 
+ GNU General Public License version 3
+ </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="appendix_gfdl.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gpl-3.0"></a>Appendix D. 
+ <acronym class="acronym">GNU</acronym> General Public License version 3
+ </h2></div></div></div><p>
+ Version 3, 29 June 2007
+ </p><p>
+ Copyright © 2007 Free Software Foundation, Inc.
+ <a class="ulink" href="http://fsf.org/" target="_top">http://fsf.org/</a>
+ </p><p>
+ Everyone is permitted to copy and distribute verbatim copies of this license
+ document, but changing it is not allowed.
+ </p><h2><a id="gpl-3-preamble"></a>
+ Preamble
+ </h2><p>
+ The <acronym class="acronym">GNU</acronym> General Public License is a free, copyleft
+ license for software and other kinds of works.
+ </p><p>
+ The licenses for most software and other practical works are designed to
+ take away your freedom to share and change the works. By contrast, the
+ <acronym class="acronym">GNU</acronym> General Public License is intended to guarantee your
+ freedom to share and change all versions of a program—to make sure it
+ remains free software for all its users. We, the Free Software Foundation,
+ use the <acronym class="acronym">GNU</acronym> General Public License for most of our
+ software; it applies also to any other work released this way by its
+ authors. You can apply it to your programs, too.
+ </p><p>
+ When we speak of free software, we are referring to freedom, not price. Our
+ General Public Licenses are designed to make sure that you have the freedom
+ to distribute copies of free software (and charge for them if you wish),
+ that you receive source code or can get it if you want it, that you can
+ change the software or use pieces of it in new free programs, and that you
+ know you can do these things.
+ </p><p>
+ To protect your rights, we need to prevent others from denying you these
+ rights or asking you to surrender the rights. Therefore, you have certain
+ responsibilities if you distribute copies of the software, or if you modify
+ it: responsibilities to respect the freedom of others.
+ </p><p>
+ For example, if you distribute copies of such a program, whether gratis or
+ for a fee, you must pass on to the recipients the same freedoms that you
+ received. You must make sure that they, too, receive or can get the source
+ code. And you must show them these terms so they know their rights.
+ </p><p>
+ Developers that use the <acronym class="acronym">GNU</acronym> <acronym class="acronym">GPL</acronym>
+ protect your rights with two steps: (1) assert copyright on the software,
+ and (2) offer you this License giving you legal permission to copy,
+ distribute and/or modify it.
+ </p><p>
+ For the developers’ and authors’ protection, the
+ <acronym class="acronym">GPL</acronym> clearly explains that there is no warranty for this
+ free software. For both users’ and authors’ sake, the
+ <acronym class="acronym">GPL</acronym> requires that modified versions be marked as changed,
+ so that their problems will not be attributed erroneously to authors of
+ previous versions.
+ </p><p>
+ Some devices are designed to deny users access to install or run modified
+ versions of the software inside them, although the manufacturer can do so.
+ This is fundamentally incompatible with the aim of protecting users’
+ freedom to change the software. The systematic pattern of such abuse occurs
+ in the area of products for individuals to use, which is precisely where it
+ is most unacceptable. Therefore, we have designed this version of the
+ <acronym class="acronym">GPL</acronym> to prohibit the practice for those products. If such
+ problems arise substantially in other domains, we stand ready to extend this
+ provision to those domains in future versions of the <acronym class="acronym">GPL</acronym>,
+ as needed to protect the freedom of users.
+ </p><p>
+ Finally, every program is threatened constantly by software patents. States
+ should not allow patents to restrict development and use of software on
+ general-purpose computers, but in those that do, we wish to avoid the
+ special danger that patents applied to a free program could make it
+ effectively proprietary. To prevent this, the <acronym class="acronym">GPL</acronym>
+ assures that patents cannot be used to render the program non-free.
+ </p><p>
+ The precise terms and conditions for copying, distribution and modification
+ follow.
+ </p><h2><a id="id574613"></a>
+ TERMS AND CONDITIONS
+ </h2><h2><a id="gpl-3-definitions"></a>
+ 0. Definitions.
+ </h2><p>
+ “This License” refers to version 3 of the <acronym class="acronym">GNU</acronym>
+ General Public License.
+ </p><p>
+ “Copyright” also means copyright-like laws that apply to other
+ kinds of works, such as semiconductor masks.
+ </p><p>
+ “The Program” refers to any copyrightable work licensed under
+ this License. Each licensee is addressed as “you”.
+ “Licensees” and “recipients” may be individuals or
+ organizations.
+ </p><p>
+ To “modify” a work means to copy from or adapt all or part of
+ the work in a fashion requiring copyright permission, other than the making
+ of an exact copy. The resulting work is called a “modified
+ version” of the earlier work or a work “based on” the
+ earlier work.
+ </p><p>
+ A “covered work” means either the unmodified Program or a work
+ based on the Program.
+ </p><p>
+ To “propagate” a work means to do anything with it that, without
+ permission, would make you directly or secondarily liable for infringement
+ under applicable copyright law, except executing it on a computer or
+ modifying a private copy. Propagation includes copying, distribution (with
+ or without modification), making available to the public, and in some
+ countries other activities as well.
+ </p><p>
+ To “convey” a work means any kind of propagation that enables
+ other parties to make or receive copies. Mere interaction with a user
+ through a computer network, with no transfer of a copy, is not conveying.
+ </p><p>
+ An interactive user interface displays “Appropriate Legal
+ Notices” to the extent that it includes a convenient and prominently
+ visible feature that (1) displays an appropriate copyright notice, and (2)
+ tells the user that there is no warranty for the work (except to the extent
+ that warranties are provided), that licensees may convey the work under this
+ License, and how to view a copy of this License. If the interface presents
+ a list of user commands or options, such as a menu, a prominent item in the
+ list meets this criterion.
+ </p><h2><a id="SourceCode"></a>
+ 1. Source Code.
+ </h2><p>
+ The “source code” for a work means the preferred form of the
+ work for making modifications to it. “Object code” means any
+ non-source form of a work.
+ </p><p>
+ A “Standard Interface” means an interface that either is an
+ official standard defined by a recognized standards body, or, in the case of
+ interfaces specified for a particular programming language, one that is
+ widely used among developers working in that language.
+ </p><p>
+ The “System Libraries” of an executable work include anything,
+ other than the work as a whole, that (a) is included in the normal form of
+ packaging a Major Component, but which is not part of that Major Component,
+ and (b) serves only to enable use of the work with that Major Component, or
+ to implement a Standard Interface for which an implementation is available
+ to the public in source code form. A “Major Component”, in this
+ context, means a major essential component (kernel, window system, and so
+ on) of the specific operating system (if any) on which the executable work
+ runs, or a compiler used to produce the work, or an object code interpreter
+ used to run it.
+ </p><p>
+ The “Corresponding Source” for a work in object code form means
+ all the source code needed to generate, install, and (for an executable
+ work) run the object code and to modify the work, including scripts to
+ control those activities. However, it does not include the work’s
+ System Libraries, or general-purpose tools or generally available free
+ programs which are used unmodified in performing those activities but which
+ are not part of the work. For example, Corresponding Source includes
+ interface definition files associated with source files for the work, and
+ the source code for shared libraries and dynamically linked subprograms that
+ the work is specifically designed to require, such as by intimate data
+ communication or control flow between those subprograms and other parts of
+ the work.
+ </p><p>
+ The Corresponding Source need not include anything that users can regenerate
+ automatically from other parts of the Corresponding Source.
+ </p><p>
+ The Corresponding Source for a work in source code form is that same work.
+ </p><h2><a id="BasicPermissions"></a>
+ 2. Basic Permissions.
+ </h2><p>
+ All rights granted under this License are granted for the term of copyright
+ on the Program, and are irrevocable provided the stated conditions are met.
+ This License explicitly affirms your unlimited permission to run the
+ unmodified Program. The output from running a covered work is covered by
+ this License only if the output, given its content, constitutes a covered
+ work. This License acknowledges your rights of fair use or other
+ equivalent, as provided by copyright law.
+ </p><p>
+ You may make, run and propagate covered works that you do not convey,
+ without conditions so long as your license otherwise remains in force. You
+ may convey covered works to others for the sole purpose of having them make
+ modifications exclusively for you, or provide you with facilities for
+ running those works, provided that you comply with the terms of this License
+ in conveying all material for which you do not control copyright. Those
+ thus making or running the covered works for you must do so exclusively on
+ your behalf, under your direction and control, on terms that prohibit them
+ from making any copies of your copyrighted material outside their
+ relationship with you.
+ </p><p>
+ Conveying under any other circumstances is permitted solely under the
+ conditions stated below. Sublicensing is not allowed; section 10 makes it
+ unnecessary.
+ </p><h2><a id="Protecting"></a>
+ 3. Protecting Users’ Legal Rights From Anti-Circumvention Law.
+ </h2><p>
+ No covered work shall be deemed part of an effective technological measure
+ under any applicable law fulfilling obligations under article 11 of the WIPO
+ copyright treaty adopted on 20 December 1996, or similar laws prohibiting or
+ restricting circumvention of such measures.
+ </p><p>
+ When you convey a covered work, you waive any legal power to forbid
+ circumvention of technological measures to the extent such circumvention is
+ effected by exercising rights under this License with respect to the covered
+ work, and you disclaim any intention to limit operation or modification of
+ the work as a means of enforcing, against the work’s users, your or
+ third parties’ legal rights to forbid circumvention of technological
+ measures.
+ </p><h2><a id="ConveyingVerbatim"></a>
+ 4. Conveying Verbatim Copies.
+ </h2><p>
+ You may convey verbatim copies of the Program’s source code as you
+ receive it, in any medium, provided that you conspicuously and appropriately
+ publish on each copy an appropriate copyright notice; keep intact all
+ notices stating that this License and any non-permissive terms added in
+ accord with section 7 apply to the code; keep intact all notices of the
+ absence of any warranty; and give all recipients a copy of this License
+ along with the Program.
+ </p><p>
+ You may charge any price or no price for each copy that you convey, and you
+ may offer support or warranty protection for a fee.
+ </p><h2><a id="ConveyingModified"></a>
+ 5. Conveying Modified Source Versions.
+ </h2><p>
+ You may convey a work based on the Program, or the modifications to produce
+ it from the Program, in the form of source code under the terms of section
+ 4, provided that you also meet all of these conditions:
+ </p><div class="orderedlist"><ol type="a"><li><p>
+ The work must carry prominent notices stating that you modified it, and
+ giving a relevant date.
+ </p></li><li><p>
+ The work must carry prominent notices stating that it is released under
+ this License and any conditions added under section 7. This requirement
+ modifies the requirement in section 4 to “keep intact all
+ notices”.
+ </p></li><li><p>
+ You must license the entire work, as a whole, under this License to
+ anyone who comes into possession of a copy. This License will therefore
+ apply, along with any applicable section 7 additional terms, to the
+ whole of the work, and all its parts, regardless of how they are
+ packaged. This License gives no permission to license the work in any
+ other way, but it does not invalidate such permission if you have
+ separately received it.
+ </p></li><li><p>
+ If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your work need
+ not make them do so.
+ </p></li></ol></div><p>
+ A compilation of a covered work with other separate and independent works,
+ which are not by their nature extensions of the covered work, and which are
+ not combined with it such as to form a larger program, in or on a volume of
+ a storage or distribution medium, is called an “aggregate” if
+ the compilation and its resulting copyright are not used to limit the access
+ or legal rights of the compilation’s users beyond what the individual works
+ permit. Inclusion of a covered work in an aggregate does not cause
+ this License to apply to the other parts of the aggregate.
+ </p><h2><a id="ConveyingNonSource"></a>
+ 6. Conveying Non-Source Forms.
+ </h2><p>
+ You may convey a covered work in object code form under the terms of
+ sections 4 and 5, provided that you also convey the machine-readable
+ Corresponding Source under the terms of this License, in one of these ways:
+ </p><div class="orderedlist"><ol type="a"><li><p>
+ Convey the object code in, or embodied in, a physical product (including
+ a physical distribution medium), accompanied by the Corresponding Source
+ fixed on a durable physical medium customarily used for software
+ interchange.
+ </p></li><li><p>
+ Convey the object code in, or embodied in, a physical product (including
+ a physical distribution medium), accompanied by a written offer, valid
+ for at least three years and valid for as long as you offer spare parts
+ or customer support for that product model, to give anyone who possesses
+ the object code either (1) a copy of the Corresponding Source for all
+ the software in the product that is covered by this License, on a
+ durable physical medium customarily used for software interchange, for a
+ price no more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the Corresponding Source from
+ a network server at no charge.
+ </p></li><li><p>
+ Convey individual copies of the object code with a copy of the written
+ offer to provide the Corresponding Source. This alternative is allowed
+ only occasionally and noncommercially, and only if you received the
+ object code with such an offer, in accord with subsection 6b.
+ </p></li><li><p>
+ Convey the object code by offering access from a designated place
+ (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to copy
+ the object code is a network server, the Corresponding Source may be on
+ a different server (operated by you or a third party) that supports
+ equivalent copying facilities, provided you maintain clear directions
+ next to the object code saying where to find the Corresponding Source.
+ Regardless of what server hosts the Corresponding Source, you remain
+ obligated to ensure that it is available for as long as needed to
+ satisfy these requirements.
+ </p></li><li><p>
+ Convey the object code using peer-to-peer transmission, provided you
+ inform other peers where the object code and Corresponding Source of the
+ work are being offered to the general public at no charge under
+ subsection 6d.
+ </p></li></ol></div><p>
+ A separable portion of the object code, whose source code is excluded from
+ the Corresponding Source as a System Library, need not be included in
+ conveying the object code work.
+ </p><p>
+ A “User Product” is either (1) a “consumer product”,
+ which means any tangible personal property which is normally used for
+ personal, family, or household purposes, or (2) anything designed or sold
+ for incorporation into a dwelling. In determining whether a product is a
+ consumer product, doubtful cases shall be resolved in favor of coverage.
+ For a particular product received by a particular user, “normally
+ used” refers to a typical or common use of that class of product,
+ regardless of the status of the particular user or of the way in which the
+ particular user actually uses, or expects or is expected to use, the
+ product. A product is a consumer product regardless of whether the product
+ has substantial commercial, industrial or non-consumer uses, unless such
+ uses represent the only significant mode of use of the product.
+ </p><p>
+ “Installation Information” for a User Product means any methods,
+ procedures, authorization keys, or other information required to install and
+ execute modified versions of a covered work in that User Product from a
+ modified version of its Corresponding Source. The information must suffice
+ to ensure that the continued functioning of the modified object code is in
+ no case prevented or interfered with solely because modification has been
+ made.
+ </p><p>
+ If you convey an object code work under this section in, or with, or
+ specifically for use in, a User Product, and the conveying occurs as part of
+ a transaction in which the right of possession and use of the User Product
+ is transferred to the recipient in perpetuity or for a fixed term
+ (regardless of how the transaction is characterized), the Corresponding
+ Source conveyed under this section must be accompanied by the Installation
+ Information. But this requirement does not apply if neither you nor any
+ third party retains the ability to install modified object code on the User
+ Product (for example, the work has been installed in
+ <acronym class="acronym">ROM</acronym>).
+ </p><p>
+ The requirement to provide Installation Information does not include a
+ requirement to continue to provide support service, warranty, or updates for
+ a work that has been modified or installed by the recipient, or for the User
+ Product in which it has been modified or installed. Access to a network may
+ be denied when the modification itself materially and adversely affects the
+ operation of the network or violates the rules and protocols for
+ communication across the network.
+ </p><p>
+ Corresponding Source conveyed, and Installation Information provided, in
+ accord with this section must be in a format that is publicly documented
+ (and with an implementation available to the public in source code form),
+ and must require no special password or key for unpacking, reading or
+ copying.
+ </p><h2><a id="AdditionalTerms"></a>
+ 7. Additional Terms.
+ </h2><p>
+ “Additional permissions” are terms that supplement the terms of
+ this License by making exceptions from one or more of its conditions.
+ Additional permissions that are applicable to the entire Program shall be
+ treated as though they were included in this License, to the extent that
+ they are valid under applicable law. If additional permissions apply only
+ to part of the Program, that part may be used separately under those
+ permissions, but the entire Program remains governed by this License
+ without regard to the additional permissions.
+ </p><p>
+ When you convey a copy of a covered work, you may at your option remove any
+ additional permissions from that copy, or from any part of it. (Additional
+ permissions may be written to require their own removal in certain cases
+ when you modify the work.) You may place additional permissions on
+ material, added by you to a covered work, for which you have or can give
+ appropriate copyright permission.
+ </p><p>
+ Notwithstanding any other provision of this License, for material you add
+ to a covered work, you may (if authorized by the copyright holders of that
+ material) supplement the terms of this License with terms:
+ </p><div class="orderedlist"><ol type="a"><li><p>
+ Disclaiming warranty or limiting liability differently from the terms
+ of sections 15 and 16 of this License; or
+ </p></li><li><p>
+ Requiring preservation of specified reasonable legal notices or author
+ attributions in that material or in the Appropriate Legal Notices
+ displayed by works containing it; or
+ </p></li><li><p>
+ Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+ </p></li><li><p>
+ Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+ </p></li><li><p>
+ Declining to grant rights under trademark law for use of some trade
+ names, trademarks, or service marks; or
+ </p></li><li><p>
+ Requiring indemnification of licensors and authors of that material by
+ anyone who conveys the material (or modified versions of it) with
+ contractual assumptions of liability to the recipient, for any
+ liability that these contractual assumptions directly impose on those
+ licensors and authors.
+ </p></li></ol></div><p>
+ All other non-permissive additional terms are considered “further
+ restrictions” within the meaning of section 10. If the Program as
+ you received it, or any part of it, contains a notice stating that it is
+ governed by this License along with a term that is a further restriction,
+ you may remove that term. If a license document contains a further
+ restriction but permits relicensing or conveying under this License, you
+ may add to a covered work material governed by the terms of that license
+ document, provided that the further restriction does not survive such
+ relicensing or conveying.
+ </p><p>
+ If you add terms to a covered work in accord with this section, you must
+ place, in the relevant source files, a statement of the additional terms
+ that apply to those files, or a notice indicating where to find the
+ applicable terms.
+ </p><p>
+ Additional terms, permissive or non-permissive, may be stated in the form
+ of a separately written license, or stated as exceptions; the above
+ requirements apply either way.
+ </p><h2><a id="gpl-3-termination"></a>
+ 8. Termination.
+ </h2><p>
+ You may not propagate or modify a covered work except as expressly provided
+ under this License. Any attempt otherwise to propagate or modify it is
+ void, and will automatically terminate your rights under this License
+ (including any patent licenses granted under the third paragraph of section
+ 11).
+ </p><p>
+ However, if you cease all violation of this License, then your license from
+ a particular copyright holder is reinstated (a) provisionally, unless and
+ until the copyright holder explicitly and finally terminates your license,
+ and (b) permanently, if the copyright holder fails to notify you of the
+ violation by some reasonable means prior to 60 days after the cessation.
+ </p><p>
+ Moreover, your license from a particular copyright holder is reinstated
+ permanently if the copyright holder notifies you of the violation by some
+ reasonable means, this is the first time you have received notice of
+ violation of this License (for any work) from that copyright holder, and
+ you cure the violation prior to 30 days after your receipt of the notice.
+ </p><p>
+ Termination of your rights under this section does not terminate the
+ licenses of parties who have received copies or rights from you under this
+ License. If your rights have been terminated and not permanently
+ reinstated, you do not qualify to receive new licenses for the same
+ material under section 10.
+ </p><h2><a id="AcceptanceNotRequired"></a>
+ 9. Acceptance Not Required for Having Copies.
+ </h2><p>
+ You are not required to accept this License in order to receive or run a
+ copy of the Program. Ancillary propagation of a covered work occurring
+ solely as a consequence of using peer-to-peer transmission to receive a
+ copy likewise does not require acceptance. However, nothing other than
+ this License grants you permission to propagate or modify any covered work.
+ These actions infringe copyright if you do not accept this License.
+ Therefore, by modifying or propagating a covered work, you indicate your
+ acceptance of this License to do so.
+ </p><h2><a id="AutomaticDownstream"></a>
+ 10. Automatic Licensing of Downstream Recipients.
+ </h2><p>
+ Each time you convey a covered work, the recipient automatically receives a
+ license from the original licensors, to run, modify and propagate that
+ work, subject to this License. You are not responsible for enforcing
+ compliance by third parties with this License.
+ </p><p>
+ An “entity transaction” is a transaction transferring control
+ of an organization, or substantially all assets of one, or subdividing an
+ organization, or merging organizations. If propagation of a covered work
+ results from an entity transaction, each party to that transaction who
+ receives a copy of the work also receives whatever licenses to the work the
+ party’s predecessor in interest had or could give under the previous
+ paragraph, plus a right to possession of the Corresponding Source of the
+ work from the predecessor in interest, if the predecessor has it or can get
+ it with reasonable efforts.
+ </p><p>
+ You may not impose any further restrictions on the exercise of the rights
+ granted or affirmed under this License. For example, you may not impose a
+ license fee, royalty, or other charge for exercise of rights granted under
+ this License, and you may not initiate litigation (including a cross-claim
+ or counterclaim in a lawsuit) alleging that any patent claim is infringed
+ by making, using, selling, offering for sale, or importing the Program or
+ any portion of it.
+ </p><h2><a id="Patents"></a>
+ 11. Patents.
+ </h2><p>
+ A “contributor” is a copyright holder who authorizes use under
+ this License of the Program or a work on which the Program is based. The
+ work thus licensed is called the contributor’s “contributor
+ version”.
+ </p><p>
+ A contributor’s “essential patent claims” are all patent
+ claims owned or controlled by the contributor, whether already acquired or
+ hereafter acquired, that would be infringed by some manner, permitted by
+ this License, of making, using, or selling its contributor version, but do
+ not include claims that would be infringed only as a consequence of further
+ modification of the contributor version. For purposes of this definition,
+ “control” includes the right to grant patent sublicenses in a
+ manner consistent with the requirements of this License.
+ </p><p>
+ Each contributor grants you a non-exclusive, worldwide, royalty-free patent
+ license under the contributor’s essential patent claims, to make, use,
+ sell, offer for sale, import and otherwise run, modify and propagate the
+ contents of its contributor version.
+ </p><p>
+ In the following three paragraphs, a “patent license” is any
+ express agreement or commitment, however denominated, not to enforce a
+ patent (such as an express permission to practice a patent or covenant not
+ to sue for patent infringement). To “grant” such a patent
+ license to a party means to make such an agreement or commitment not to
+ enforce a patent against the party.
+ </p><p>
+ If you convey a covered work, knowingly relying on a patent license, and the
+ Corresponding Source of the work is not available for anyone to copy, free
+ of charge and under the terms of this License, through a publicly available
+ network server or other readily accessible means, then you must either (1)
+ cause the Corresponding Source to be so available, or (2) arrange to deprive
+ yourself of the benefit of the patent license for this particular work, or
+ (3) arrange, in a manner consistent with the requirements of this License,
+ to extend the patent license to downstream recipients. “Knowingly
+ relying” means you have actual knowledge that, but for the patent
+ license, your conveying the covered work in a country, or your
+ recipient’s use of the covered work in a country, would infringe one
+ or more identifiable patents in that country that you have reason to believe
+ are valid.
+ </p><p>
+ If, pursuant to or in connection with a single transaction or arrangement,
+ you convey, or propagate by procuring conveyance of, a covered work, and
+ grant a patent license to some of the parties receiving the covered work
+ authorizing them to use, propagate, modify or convey a specific copy of the
+ covered work, then the patent license you grant is automatically extended to
+ all recipients of the covered work and works based on it.
+ </p><p>
+ A patent license is “discriminatory” if it does not include
+ within the scope of its coverage, prohibits the exercise of, or is
+ conditioned on the non-exercise of one or more of the rights that are
+ specifically granted under this License. You may not convey a covered work
+ if you are a party to an arrangement with a third party that is in the
+ business of distributing software, under which you make payment to the third
+ party based on the extent of your activity of conveying the work, and under
+ which the third party grants, to any of the parties who would receive the
+ covered work from you, a discriminatory patent license (a) in connection
+ with copies of the covered work conveyed by you (or copies made from those
+ copies), or (b) primarily for and in connection with specific products or
+ compilations that contain the covered work, unless you entered into that
+ arrangement, or that patent license was granted, prior to 28 March 2007.
+ </p><p>
+ Nothing in this License shall be construed as excluding or limiting any
+ implied license or other defenses to infringement that may otherwise be
+ available to you under applicable patent law.
+ </p><h2><a id="NoSurrender"></a>
+ 12. No Surrender of Others’ Freedom.
+ </h2><p>
+ If conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License. If you cannot convey a
+ covered work so as to satisfy simultaneously your obligations under this
+ License and any other pertinent obligations, then as a consequence you may
+ not convey it at all. For example, if you agree to terms that obligate you
+ to collect a royalty for further conveying from those to whom you convey the
+ Program, the only way you could satisfy both those terms and this License
+ would be to refrain entirely from conveying the Program.
+ </p><h2><a id="UsedWithAGPL"></a>
+ 13. Use with the <acronym class="acronym">GNU</acronym> Affero General Public License.
+ </h2><p>
+ Notwithstanding any other provision of this License, you have permission to
+ link or combine any covered work with a work licensed under version 3 of the
+ <acronym class="acronym">GNU</acronym> Affero General Public License into a single combined
+ work, and to convey the resulting work. The terms of this License will
+ continue to apply to the part which is the covered work, but the special
+ requirements of the <acronym class="acronym">GNU</acronym> Affero General Public License,
+ section 13, concerning interaction through a network will apply to the
+ combination as such.
+ </p><h2><a id="RevisedVersions"></a>
+ 14. Revised Versions of this License.
+ </h2><p>
+ The Free Software Foundation may publish revised and/or new versions of the
+ <acronym class="acronym">GNU</acronym> General Public License from time to time. Such new
+ versions will be similar in spirit to the present version, but may differ in
+ detail to address new problems or concerns.
+ </p><p>
+ Each version is given a distinguishing version number. If the Program
+ specifies that a certain numbered version of the <acronym class="acronym">GNU</acronym>
+ General Public License “or any later version” applies to it, you
+ have the option of following the terms and conditions either of that
+ numbered version or of any later version published by the Free Software
+ Foundation. If the Program does not specify a version number of the
+ <acronym class="acronym">GNU</acronym> General Public License, you may choose any version
+ ever published by the Free Software Foundation.
+ </p><p>
+ If the Program specifies that a proxy can decide which future versions of
+ the <acronym class="acronym">GNU</acronym> General Public License can be used, that
+ proxy’s public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Program.
+ </p><p>
+ Later license versions may give you additional or different permissions.
+ However, no additional obligations are imposed on any author or copyright
+ holder as a result of your choosing to follow a later version.
+ </p><h2><a id="WarrantyDisclaimer"></a>
+ 15. Disclaimer of Warranty.
+ </h2><p>
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
+ LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+ OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF
+ ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
+ YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+ NECESSARY SERVICING, REPAIR OR CORRECTION.
+ </p><h2><a id="LiabilityLimitation"></a>
+ 16. Limitation of Liability.
+ </h2><p>
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE
+ PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
+ OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
+ OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGES.
+ </p><h2><a id="InterpretationSecs1516"></a>
+ 17. Interpretation of Sections 15 and 16.
+ </h2><p>
+ If the disclaimer of warranty and limitation of liability provided above
+ cannot be given local legal effect according to their terms, reviewing
+ courts shall apply local law that most closely approximates an absolute
+ waiver of all civil liability in connection with the Program, unless a
+ warranty or assumption of liability accompanies a copy of the Program in
+ return for a fee.
+ </p><h2><a id="id467877"></a>
+ END OF TERMS AND CONDITIONS
+ </h2><h2><a id="HowToApply"></a>
+ How to Apply These Terms to Your New Programs
+ </h2><p>
+ If you develop a new program, and you want it to be of the greatest possible
+ use to the public, the best way to achieve this is to make it free software
+ which everyone can redistribute and change under these terms.
+ </p><p>
+ To do so, attach the following notices to the program. It is safest to
+ attach them to the start of each source file to most effectively state the
+ exclusion of warranty; and each file should have at least the
+ “copyright” line and a pointer to where the full notice is
+ found.
+ </p><pre class="screen">
+<em class="replaceable"><code>one line to give the program’s name and a brief idea of what it does.</code></em>
+Copyright (C) <em class="replaceable"><code>year</code></em> <em class="replaceable"><code>name of author</code></em>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the <acronym class="acronym">GNU</acronym> General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+<acronym class="acronym">GNU</acronym> General Public License for more details.
+
+You should have received a copy of the <acronym class="acronym">GNU</acronym> General Public License
+along with this program. If not, see <a class="ulink" href="http://www.gnu.org/licenses/" target="_top">http://www.gnu.org/licenses/</a>.
+ </pre><p>
+ Also add information on how to contact you by electronic and paper mail.
+ </p><p>
+ If the program does terminal interaction, make it output a short notice like
+ this when it starts in an interactive mode:
+ </p><pre class="screen">
+<em class="replaceable"><code>program</code></em> Copyright (C) <em class="replaceable"><code>year</code></em> <em class="replaceable"><code>name of author</code></em>
+This program comes with ABSOLUTELY NO WARRANTY; for details type ‘<code class="literal">show w</code>’.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type ‘<code class="literal">show c</code>’ for details.
+ </pre><p>
+ The hypothetical commands ‘<code class="literal">show w</code>’ and
+ ‘<code class="literal">show c</code>’ should show the appropriate parts of
+ the General Public License. Of course, your program’s commands might be
+ different; for a GUI interface, you would use an “about box”.
+ </p><p>
+ You should also get your employer (if you work as a programmer) or school,
+ if any, to sign a “copyright disclaimer” for the program, if
+ necessary. For more information on this, and how to apply and follow the
+ <acronym class="acronym">GNU</acronym> <acronym class="acronym">GPL</acronym>, see
+ <a class="ulink" href="http://www.gnu.org/licenses/" target="_top">http://www.gnu.org/licenses/</a>.
+ </p><p>
+ The <acronym class="acronym">GNU</acronym> General Public License does not permit
+ incorporating your program into proprietary programs. If your program is a
+ subroutine library, you may consider it more useful to permit linking
+ proprietary applications with the library. If this is what you want to do,
+ use the <acronym class="acronym">GNU</acronym> Lesser General Public License instead of this
+ License. But first, please read <a class="ulink" href="http://www.gnu.org/philosophy/why-not-lgpl.html" target="_top">http://www.gnu.org/philosophy/why-not-lgpl.html</a>.
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_gfdl.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix C. 
+ Free Software Needs Free Documentation
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix E. GNU Free Documentation License</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html
index 3a5fd11ed93..2034ef77631 100644
--- a/libstdc++-v3/doc/html/manual/appendix_porting.html
+++ b/libstdc++-v3/doc/html/manual/appendix_porting.html
@@ -1,6 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix B. Porting and Maintenance</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01apas05.html" title="Design Notes" /><link rel="next" href="internals.html" title="Porting to New Hardware or Operating Systems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix B. Porting and Maintenance</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apas05.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting"></a>Appendix B. Porting and Maintenance</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.build_hacking"></a>Configure and Build Hacking</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.prereq"></a>Prerequisites</h3></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix B.  Porting and Maintenance</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="source_design_notes.html" title="Design Notes" /><link rel="next" href="internals.html" title="Porting to New Hardware or Operating Systems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix B. 
+ Porting and Maintenance
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_design_notes.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting"></a>Appendix B. 
+ Porting and Maintenance
+ <a id="id580411" class="indexterm"></a>
+</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.build_hacking"></a>Configure and Build Hacking</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.prereq"></a>Prerequisites</h3></div></div></div><p>
As noted <a class="ulink" href="http://gcc.gnu.org/install/prerequisites.html" target="_top">previously</a>,
certain other tools are necessary for hacking on files that
control configure (<code class="code">configure.ac</code>,
@@ -221,4 +227,4 @@
argument checking at all is done in this signature. See
GLIBCXX_ENABLE_CXX_FLAGS for an example of handling, and an error
message.
-</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apas05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design Notes </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Porting to New Hardware or Operating Systems</td></tr></table></div></body></html>
+</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="source_design_notes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design Notes </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Porting to New Hardware or Operating Systems</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch17.html b/libstdc++-v3/doc/html/manual/associative.html
index 53259e14311..54102abf817 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch17.html
+++ b/libstdc++-v3/doc/html/manual/associative.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 17. Associative</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII. Containers" /><link rel="prev" href="bk01pt07ch16s02.html" title="vector" /><link rel="next" href="bk01pt07ch17s02.html" title="bitset" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 17. Associative</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt07ch16s02.html">Prev</a> </td><th width="60%" align="center">Part VII. Containers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt07ch17s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.associative"></a>Chapter 17. Associative</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt07ch17.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bk01pt07ch17s02.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch17s02.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bk01pt07ch17s02.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.associative.insert_hints"></a>Insertion Hints</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 17. Associative</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII.  Containers" /><link rel="prev" href="vector.html" title="vector" /><link rel="next" href="bitset.html" title="bitset" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 17. Associative</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="vector.html">Prev</a> </td><th width="60%" align="center">Part VII. 
+ Containers
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bitset.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.associative"></a>Chapter 17. Associative</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bitset.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitset.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bitset.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.associative.insert_hints"></a>Insertion Hints</h2></div></div></div><p>
Section [23.1.2], Table 69, of the C++ standard lists this
function for all of the associative containers (map, set, etc):
</p><pre class="programlisting">
@@ -81,4 +84,4 @@
the new item would in fact belong there. If the hint does not
point to the correct place, then no further local searching is
done; the search begins from scratch in logarithmic time.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt07ch16s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt07ch17s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">vector </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> bitset</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="vector.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bitset.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">vector </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> bitset</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/auto_ptr.html b/libstdc++-v3/doc/html/manual/auto_ptr.html
index 372e9c4b471..9da4800936c 100644
--- a/libstdc++-v3/doc/html/manual/auto_ptr.html
+++ b/libstdc++-v3/doc/html/manual/auto_ptr.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>auto_ptr</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; auto_ptr&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt04ch11.html" title="Chapter 11. Memory" /><link rel="prev" href="bk01pt04ch11.html" title="Chapter 11. Memory" /><link rel="next" href="shared_ptr.html" title="shared_ptr" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">auto_ptr</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt04ch11.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Memory</th><td width="20%" align="right"> <a accesskey="n" href="shared_ptr.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.util.memory.auto_ptr"></a>auto_ptr</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="auto_ptr.limitations"></a>Limitations</h3></div></div></div><p>Explaining all of the fun and delicious things that can
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>auto_ptr</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; auto_ptr&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="memory.html" title="Chapter 11. Memory" /><link rel="prev" href="memory.html" title="Chapter 11. Memory" /><link rel="next" href="shared_ptr.html" title="shared_ptr" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">auto_ptr</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="memory.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Memory</th><td width="20%" align="right"> <a accesskey="n" href="shared_ptr.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.util.memory.auto_ptr"></a>auto_ptr</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="auto_ptr.limitations"></a>Limitations</h3></div></div></div><p>Explaining all of the fun and delicious things that can
happen with misuse of the <code class="classname">auto_ptr</code> class
template (called <acronym class="acronym">AP</acronym> here) would take some
time. Suffice it to say that the use of <acronym class="acronym">AP</acronym>
@@ -87,4 +87,4 @@
}
</pre><p>
Should you try this with the checks enabled, you will see an error.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt04ch11.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt04ch11.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="shared_ptr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 11. Memory </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> shared_ptr</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="memory.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="memory.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="shared_ptr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 11. Memory </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> shared_ptr</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html
index 7c4996efe06..53b3ee18c19 100644
--- a/libstdc++-v3/doc/html/manual/backwards.html
+++ b/libstdc++-v3/doc/html/manual/backwards.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Backwards Compatibility</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; backwards&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="api.html" title="API Evolution and Deprecation History" /><link rel="next" href="appendix_free.html" title="Appendix C. Free Software Needs Free Documentation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Backwards Compatibility</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center">Appendix B. Porting and Maintenance</th><td width="20%" align="right"> <a accesskey="n" href="appendix_free.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.appendix.porting.backwards"></a>Backwards Compatibility</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.first"></a>First</h3></div></div></div><p>The first generation GNU C++ library was called libg++. It was a
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Backwards Compatibility</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; backwards&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="prev" href="api.html" title="API Evolution and Deprecation History" /><link rel="next" href="appendix_free.html" title="Appendix C.  Free Software Needs Free Documentation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Backwards Compatibility</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center">Appendix B. 
+ Porting and Maintenance
+
+</th><td width="20%" align="right"> <a accesskey="n" href="appendix_free.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.appendix.porting.backwards"></a>Backwards Compatibility</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.first"></a>First</h3></div></div></div><p>The first generation GNU C++ library was called libg++. It was a
separate GNU project, although reliably paired with GCC. Rumors imply
that it had a working relationship with at least two kinds of
dinosaur.
@@ -14,8 +17,8 @@ ISO Standard (e.g., statistical analysis). While there are a lot of
really useful things that are used by a lot of people, the Standards
Committee couldn't include everything, and so a lot of those
“<span class="quote">obvious</span>” classes didn't get included.
-</p><p>Known Issues include many of the limitations of its immediate ancestor.</p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id486428"></a>No <code class="code">ios_base</code></h4></div></div></div><p> At least some older implementations don't have <code class="code">std::ios_base</code>, so you should use <code class="code">std::ios::badbit</code>, <code class="code">std::ios::failbit</code> and <code class="code">std::ios::eofbit</code> and <code class="code">std::ios::goodbit</code>.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id486460"></a>No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></h4></div></div></div><p>
+</p><p>Known Issues include many of the limitations of its immediate ancestor.</p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id592805"></a>No <code class="code">ios_base</code></h4></div></div></div><p> At least some older implementations don't have <code class="code">std::ios_base</code>, so you should use <code class="code">std::ios::badbit</code>, <code class="code">std::ios::failbit</code> and <code class="code">std::ios::eofbit</code> and <code class="code">std::ios::goodbit</code>.
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id592837"></a>No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></h4></div></div></div><p>
In earlier versions of the standard,
<code class="filename">fstream.h</code>,
<code class="filename">ostream.h</code>
@@ -41,7 +44,7 @@ considered replaced and rewritten.
archived. The code is considered replaced and rewritten.
</p><p>
Portability notes and known implementation limitations are as follows.
-</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id572029"></a>Namespace <code class="code">std::</code> not supported</h4></div></div></div><p>
+</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id571479"></a>Namespace <code class="code">std::</code> not supported</h4></div></div></div><p>
Some care is required to support C++ compiler and or library
implementation that do not have the standard library in
<code class="code">namespace std</code>.
@@ -105,7 +108,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
AC_DEFINE(HAVE_NAMESPACE_STD,,[Define if g++ supports namespace std. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id572152"></a>Illegal iterator usage</h4></div></div></div><p>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id571602"></a>Illegal iterator usage</h4></div></div></div><p>
The following illustrate implementation-allowed illegal iterator
use, and then correct use.
</p><div class="itemizedlist"><ul type="disc"><li><p>
@@ -118,7 +121,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
</p></li><li><p>
<code class="code">if (iterator)</code> won't work any more =&gt; use
<code class="code">if (iterator != iterator_type())</code>
- </p></li></ul></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id572213"></a><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
+ </p></li></ul></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id571663"></a><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
</h4></div></div></div><p>
Glibc 2.0.x and 2.1.x define <code class="filename">ctype.h</code> functionality as macros
(isspace, isalpha etc.).
@@ -151,7 +154,7 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] &amp; (unsigned short int) _ISspace ) ;
(<code class="filename">ctype.h</code>) and the
definitions in namespace <code class="code">std::</code>
(<code class="code">&lt;cctype&gt;</code>).
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id572307"></a>No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id571756"></a>No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></h4></div></div></div><p>
One solution is to add an autoconf-test for this:
</p><pre class="programlisting">
AC_MSG_CHECKING(for container::at)
@@ -177,7 +180,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
</pre><p>
If you are using other (non-GNU) compilers it might be a good idea
to check for <code class="code">string::at</code> separately.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id572345"></a>No <code class="code">std::char_traits&lt;char&gt;::eof</code></h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id571794"></a>No <code class="code">std::char_traits&lt;char&gt;::eof</code></h4></div></div></div><p>
Use some kind of autoconf test, plus this:
</p><pre class="programlisting">
#ifdef HAVE_CHAR_TRAITS
@@ -185,7 +188,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
#else
#define CPP_EOF EOF
#endif
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id572363"></a>No <code class="code">string::clear</code></h4></div></div></div><p>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id571812"></a>No <code class="code">string::clear</code></h4></div></div></div><p>
There are two functions for deleting the contents of a string:
<code class="code">clear</code> and <code class="code">erase</code> (the latter returns the
string).
@@ -203,12 +206,12 @@ erase(size_type __pos = 0, size_type __n = npos)
Unfortunately, <code class="code">clear</code> is not implemented in this
version, so you should use <code class="code">erase</code> (which is probably
faster than <code class="code">operator=(charT*)</code>).
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id572408"></a>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id571858"></a>
Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code>
extensions
</h4></div></div></div><p>
These are no longer supported. Please use stringstreams instead.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id572427"></a>No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id571877"></a>No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></h4></div></div></div><p>
Although the ISO standard <code class="code">i/ostringstream</code>-classes are
provided, (<code class="filename">sstream</code>), for
compatibility with older implementations the pre-ISO
@@ -296,14 +299,14 @@ any = temp;
Another example of using stringstreams is in <a class="link" href="bk01pt05ch13s05.html" title="Shrink to Fit">this howto</a>.
</p><p> There is additional information in the libstdc++-v2 info files, in
particular “<span class="quote">info iostream</span>”.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id445586"></a>Little or no wide character support</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id576230"></a>Little or no wide character support</h4></div></div></div><p>
Classes <code class="classname">wstring</code> and
<code class="classname">char_traits&lt;wchar_t&gt;</code> are
not supported.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id445605"></a>No templatized iostreams</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id576249"></a>No templatized iostreams</h4></div></div></div><p>
Classes <code class="classname">wfilebuf</code> and
<code class="classname">wstringstream</code> are not supported.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id445624"></a>Thread safety issues</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id576268"></a>Thread safety issues</h4></div></div></div><p>
Earlier GCC releases had a somewhat different approach to
threading configuration and proper compilation. Before GCC 3.0,
configuration of the threading model was dictated by compiler
@@ -361,7 +364,7 @@ libstdc++-v3.
of the SGI STL (version 3.3), with extensive changes.
</p><p>A more formal description of the V3 goals can be found in the
official <a class="ulink" href="../17_intro/DESIGN" target="_top">design document</a>.
- </p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id445743"></a>Pre-ISO headers moved to backwards or removed</h4></div></div></div><p> The pre-ISO C++ headers
+ </p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id576386"></a>Pre-ISO headers moved to backwards or removed</h4></div></div></div><p> The pre-ISO C++ headers
(<code class="code">iostream.h</code>, <code class="code">defalloc.h</code> etc.) are
available, unlike previous libstdc++ versions, but inclusion
generates a warning that you are using deprecated headers.
@@ -433,7 +436,7 @@ like <code class="filename">vector.h</code> can be replaced with <code class="fi
directive <code class="code">using namespace std;</code> can be put at the global
scope. This should be enough to get this code compiling, assuming the
other usage is correct.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id445826"></a>Extension headers hash_map, hash_set moved to ext or backwards</h4></div></div></div><p>At this time most of the features of the SGI STL extension have been
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id576469"></a>Extension headers hash_map, hash_set moved to ext or backwards</h4></div></div></div><p>At this time most of the features of the SGI STL extension have been
replaced by standardized libraries.
In particular, the unordered_map and unordered_set containers of TR1
are suitable replacement for the non-standard hash_map and hash_set
@@ -505,7 +508,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [
AC_DEFINE(HAVE_EXT_HASH_SET,,[Define if ext/hash_set is present. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id445928"></a>No <code class="code">ios::nocreate/ios::noreplace</code>.
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id576571"></a>No <code class="code">ios::nocreate/ios::noreplace</code>.
</h4></div></div></div><p> The existence of <code class="code">ios::nocreate</code> being used for
input-streams has been confirmed, most probably because the author
thought it would be more correct to specify nocreate explicitly. So
@@ -516,7 +519,7 @@ open the file for reading, check if it has been opened, and then
decide whether you want to create/replace or not. To my knowledge,
even older implementations support <code class="code">app</code>, <code class="code">ate</code>
and <code class="code">trunc</code> (except for <code class="code">app</code> ?).
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id562922"></a>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id524628"></a>
No <code class="code">stream::attach(int fd)</code>
</h4></div></div></div><p>
Phil Edwards writes: It was considered and rejected for the ISO
@@ -539,7 +542,7 @@ No <code class="code">stream::attach(int fd)</code>
For another example of this, refer to
<a class="ulink" href="http://www.josuttis.com/cppcode/fdstream.html" target="_top">fdstream example</a>
by Nicolai Josuttis.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id562986"></a>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id524692"></a>
Support for C++98 dialect.
</h4></div></div></div><p>Check for complete library coverage of the C++1998/2003 standard.
</p><pre class="programlisting">
@@ -607,7 +610,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
AC_DEFINE(STDCXX_98_HEADERS,,[Define if ISO C++ 1998 header files are present. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id563013"></a>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id524719"></a>
Support for C++TR1 dialect.
</h4></div></div></div><p>Check for library coverage of the TR1 standard.
</p><pre class="programlisting">
@@ -684,7 +687,7 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
AC_DEFINE(HAVE_TR1_UNORDERED_SET,,[Define if tr1/unordered_set is present. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id563057"></a>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id524763"></a>
Support for C++0x dialect.
</h4></div></div></div><p>Check for baseline language coverage in the compiler for the C++0xstandard.
</p><pre class="programlisting">
@@ -896,31 +899,34 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
AC_DEFINE(HAVE_UNORDERED_SET,,[Define if unordered_set is present. ])
fi
])
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id563134"></a>
+</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id524840"></a>
Container::iterator_type is not necessarily Container::value_type*
</h4></div></div></div><p>
This is a change in behavior from the previous version. Now, most
<span class="type">iterator_type</span> typedefs in container classes are POD
objects, not <span class="type">value_type</span> pointers.
-</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id563166"></a><p>[<abbr class="abbrev">
+</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id524872"></a><p>[<abbr class="abbrev">
kegel41
</abbr>] <span class="title"><i>
Migrating to GCC 4.1
</i>. </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span><span class="biblioid">
<a class="ulink" href="http://www.kegel.com/gcc/gcc4.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id563198"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id524904"></a><p>[<abbr class="abbrev">
kegel41
</abbr>] <span class="title"><i>
Building the Whole Debian Archive with GCC 4.1: A Summary
</i>. </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span><span class="biblioid">
<a class="ulink" href="http://lists.debian.org/debian-gcc/2006/03/msg00405.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id563231"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id524937"></a><p>[<abbr class="abbrev">
lbl32
</abbr>] <span class="title"><i>
Migration guide for GCC-3.2
</i>. </span><span class="biblioid">
<a class="ulink" href="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html" target="_top">
</a>
- . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_free.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">API Evolution and Deprecation History </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix C. Free Software Needs Free Documentation</td></tr></table></div></body></html>
+ . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_free.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">API Evolution and Deprecation History </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix C. 
+ Free Software Needs Free Documentation
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bitmap_allocator.html b/libstdc++-v3/doc/html/manual/bitmap_allocator.html
index 6c4d12575b1..cd505437f97 100644
--- a/libstdc++-v3/doc/html/manual/bitmap_allocator.html
+++ b/libstdc++-v3/doc/html/manual/bitmap_allocator.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>bitmap_allocator</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; allocator&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt12ch32.html" title="Chapter 32. Allocators" /><link rel="prev" href="bk01pt12ch32.html" title="Chapter 32. Allocators" /><link rel="next" href="bk01pt12ch33.html" title="Chapter 33. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitmap_allocator</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch32.html">Prev</a> </td><th width="60%" align="center">Chapter 32. Allocators</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch33.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.allocator.bitmap"></a>bitmap_allocator</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>bitmap_allocator</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; allocator&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_allocators.html" title="Chapter 32. Allocators" /><link rel="prev" href="ext_allocators.html" title="Chapter 32. Allocators" /><link rel="next" href="ext_containers.html" title="Chapter 33. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitmap_allocator</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_allocators.html">Prev</a> </td><th width="60%" align="center">Chapter 32. Allocators</th><td width="20%" align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.allocator.bitmap"></a>bitmap_allocator</h2></div></div></div><p>
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.bitmap.design"></a>Design</h3></div></div></div><p>
As this name suggests, this allocator uses a bit-map to keep track
of the used and unused memory locations for it's book-keeping
@@ -103,7 +103,7 @@ else return false.</p></li></ol></div><p>
</p><p>
Consider a block of size 64 ints. In memory, it would look like this:
(assume a 32-bit system where, size_t is a 32-bit entity).
- </p><div class="table"><a id="id461252"></a><p class="title"><b>Table 32.1. Bitmap Allocator Memory Map</b></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -&gt; Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p>
+ </p><div class="table"><a id="id501153"></a><p class="title"><b>Table 32.1. Bitmap Allocator Memory Map</b></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -&gt; Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p>
The first Column(268) represents the size of the Block in bytes as
seen by the Bitmap Allocator. Internally, a global free list is
used to keep track of the free blocks used and given back by the
@@ -337,4 +337,4 @@ equivalent.</p></li><li><p>And also this would preserve the cache as far as poss
sizeof(size_t) x 8 which is the number of bits in an integer,
which can fit exactly in a CPU register. Hence, the term given is
exponential growth of the internal pool.
- </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch32.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt12ch32.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch33.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 32. Allocators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 33. Containers</td></tr></table></div></body></html>
+ </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_allocators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_allocators.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 32. Allocators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 33. Containers</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch17s02.html b/libstdc++-v3/doc/html/manual/bitset.html
index 1d4e3f90403..fcdba6d2358 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch17s02.html
+++ b/libstdc++-v3/doc/html/manual/bitset.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>bitset</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt07ch17.html" title="Chapter 17. Associative" /><link rel="prev" href="bk01pt07ch17.html" title="Chapter 17. Associative" /><link rel="next" href="bk01pt07ch18.html" title="Chapter 18. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitset</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt07ch17.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Associative</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt07ch18.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.associative.bitset"></a>bitset</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="associative.bitset.size_variable"></a>Size Variable</h3></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>bitset</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="associative.html" title="Chapter 17. Associative" /><link rel="prev" href="associative.html" title="Chapter 17. Associative" /><link rel="next" href="containers_and_c.html" title="Chapter 18. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitset</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Associative</th><td width="20%" align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.associative.bitset"></a>bitset</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="associative.bitset.size_variable"></a>Size Variable</h3></div></div></div><p>
No, you cannot write code of the form
</p><pre class="programlisting">
#include &lt;bitset&gt;
@@ -102,4 +102,4 @@
instead of
</p><pre class="programlisting">
std::bitset&lt;5&gt; b ( “<span class="quote">10110</span>” ); // invalid
- </pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt07ch17.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt07ch17.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt07ch18.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 17. Associative </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 18. Interacting with C</td></tr></table></div></body></html>
+ </pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="associative.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 17. Associative </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 18. Interacting with C</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apd.html b/libstdc++-v3/doc/html/manual/bk01apd.html
deleted file mode 100644
index 72f1d7e8d4b..00000000000
--- a/libstdc++-v3/doc/html/manual/bk01apd.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix D. GNU General Public License</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_free.html" title="Appendix C. Free Software Needs Free Documentation" /><link rel="next" href="bk01apds02.html" title="TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix D. GNU General Public License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01apds02.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gpl-2.0"></a>Appendix D. GNU General Public License</h2></div><div><p class="releaseinfo">Version 2, June 1991</p></div><div><p class="copyright">Copyright © 1989, 1991 Free Software Foundation, Inc.</p></div><div><div class="legalnotice"><a id="gpl-legalnotice"></a><p>
- </p><div class="address"><p>Free Software Foundation, Inc. <br />
-   <span class="street">51 Franklin Street, Fifth Floor</span>, <br />
-   <span class="city">Boston</span>, <span class="state">MA</span> <span class="postcode">02110-1301</span><br />
-   <span class="country">USA</span><br />
- </p></div><p>
- </p><p>Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</p></div></div><div><p class="pubdate">Version 2, June 1991</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="bk01apd.html#gpl-1">Preamble</a></span></dt><dt><span class="section"><a href="bk01apds02.html">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</a></span></dt><dd><dl><dt><span class="section"><a href="bk01apds02.html#gpl-2-0">Section 0</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-1">Section 1</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-2">Section 2</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-3">Section 3</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-4">Section 4</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-5">Section 5</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-6">Section 6</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-7">Section 7</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-8">Section 8</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-9">Section 9</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-10">Section 10</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-11">NO WARRANTY Section 11</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-12">Section 12</a></span></dt></dl></dd><dt><span class="section"><a href="bk01apds03.html">How to Apply These Terms to Your New Programs</a></span></dt></dl></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="gpl-1"></a>Preamble</h2></div></div></div><p>The licenses for most software are designed to take away your
- freedom to share and change it. By contrast, the GNU General Public License is
- intended to guarantee your freedom to share and change
- free software - to make sure the software is free for all its users.
- This General Public License applies to most of the Free Software
- Foundation's software and to any other program whose authors commit
- to using it. (Some other Free Software Foundation software is covered
- by the GNU Library General Public License instead.) You can apply it
- to your programs, too.</p><p>When we speak of free software, we are referring to freedom, not price.
- Our General Public Licenses are designed to make sure that you have the
- freedom to distribute copies of free software (and charge for this
- service if you wish), that you receive source code or can get it if you
- want it, that you can change the software or use pieces of it in new free
- programs; and that you know you can do these things.</p><p>To protect your rights, we need to make restrictions that forbid anyone
- to deny you these rights or to ask you to surrender the rights. These
- restrictions translate to certain responsibilities for you if you distribute
- copies of the software, or if you modify it.</p><p>For example, if you distribute copies of such a program, whether gratis or
- for a fee, you must give the recipients all the rights that you have. You
- must make sure that they, too, receive or can get the source code. And you
- must show them these terms so they know their rights.</p><p>We protect your rights with two steps:
- </p><div class="orderedlist"><ol type="1"><li><p>copyright the software, and</p></li><li><p>offer you this license which gives you legal permission to copy,
- distribute and/or modify the software.</p></li></ol></div><p>
- </p><p>Also, for each author's protection and ours, we want to make certain that
- everyone understands that there is no warranty for this free software. If
- the software is modified by someone else and passed on, we want its
- recipients to know that what they have is not the original, so that any
- problems introduced by others will not reflect on the original authors'
- reputations.</p><p>Finally, any free program is threatened constantly by software patents.
- We wish to avoid the danger that redistributors of a free program will
- individually obtain patent licenses, in effect making the program
- proprietary. To prevent this, we have made it clear that any patent must be
- licensed for everyone's free use or not licensed at all.</p><p>The precise terms and conditions for copying, distribution and modification
- follow.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apds02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix C. Free Software Needs Free Documentation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apds02.html b/libstdc++-v3/doc/html/manual/bk01apds02.html
deleted file mode 100644
index 2a0af92067c..00000000000
--- a/libstdc++-v3/doc/html/manual/bk01apds02.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01apd.html" title="Appendix D. GNU General Public License" /><link rel="prev" href="bk01apd.html" title="Appendix D. GNU General Public License" /><link rel="next" href="bk01apds03.html" title="How to Apply These Terms to Your New Programs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apd.html">Prev</a> </td><th width="60%" align="center">Appendix D. GNU General Public License</th><td width="20%" align="right"> <a accesskey="n" href="bk01apds03.html">Next</a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="gpl-2"></a>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-0"></a>Section 0</h3></div></div></div><p>This License applies to any program or other work which contains a notice
- placed by the copyright holder saying it may be distributed under the terms
- of this General Public License. The “<span class="quote">Program</span>”, below, refers to any such
- program or work, and a
- “<span class="quote">work based on the Program</span>” means either
- the Program or any derivative work under copyright law: that is to say, a
- work containing the Program or a portion of it, either verbatim or with
- modifications and/or translated into another language. (Hereinafter, translation
- is included without limitation in the term
- “<span class="quote">modification</span>”.) Each licensee is addressed as “<span class="quote">you</span>”.</p><p>Activities other than copying, distribution and modification are not covered by
- this License; they are outside its scope. The act of running the Program is not
- restricted, and the output from the Program is covered only if its contents
- constitute a work based on the Program (independent of having been made by running
- the Program). Whether that is true depends on what the Program does.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-1"></a>Section 1</h3></div></div></div><p>You may copy and distribute verbatim copies of the Program's source code as you
- receive it, in any medium, provided that you conspicuously and appropriately
- publish on each copy an appropriate copyright notice and disclaimer of warranty;
- keep intact all the notices that refer to this License and to the absence of any
- warranty; and give any other recipients of the Program a copy of this License
- along with the Program.</p><p>You may charge a fee for the physical act of transferring a copy, and you may at
- your option offer warranty protection in exchange for a fee.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-2"></a>Section 2</h3></div></div></div><p>You may modify your copy or copies of the Program or any portion of it, thus
- forming a work based on the Program, and copy and distribute such modifications
- or work under the terms of
- <a class="link" href="bk01apds02.html#gpl-2-1" title="Section 1">Section 1</a> above, provided
- that you also meet all of these conditions:
- </p><div class="orderedlist"><ol type="a"><li><p>You must cause the modified files to carry prominent notices stating that
- you changed the files and the date of any change.</p></li><li><p>You must cause any work that you distribute or publish, that in whole or
- in part contains or is derived from the Program or any part thereof, to be
- licensed as a whole at no charge to all third parties under the terms of
- this License.</p></li><li><p>If the modified program normally reads commands interactively when run, you
- must cause it, when started running for such interactive use in the most
- ordinary way, to print or display an announcement including an appropriate
- copyright notice and a notice that there is no warranty (or else, saying
- that you provide a warranty) and that users may redistribute the program
- under these conditions, and telling the user how to view a copy of this
- License. (Exception: If the Program itself is interactive but does not
- normally print such an announcement, your work based on the Program is not
- required to print an announcement.)</p></li></ol></div><p>
- </p><p>These requirements apply to the modified work as a whole. If identifiable sections
- of that work are not derived from the Program, and can be reasonably considered
- independent and separate works in themselves, then this License, and its terms,
- do not apply to those sections when you distribute them as separate works. But when
- you distribute the same sections as part of a whole which is a work based on the
- Program, the distribution of the whole must be on the terms of this License, whose
- permissions for other licensees extend to the entire whole, and thus to each and
- every part regardless of who wrote it.</p><p>Thus, it is not the intent of this section to claim rights or contest your rights
- to work written entirely by you; rather, the intent is to exercise the right to control
- the distribution of derivative or collective works based on the Program.</p><p>In addition, mere aggregation of another work not based on the Program with the Program
- (or with a work based on the Program) on a volume of a storage or distribution medium
- does not bring the other work under the scope of this License.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-3"></a>Section 3</h3></div></div></div><p>You may copy and distribute the Program (or a work based on it, under
- <a class="link" href="bk01apds02.html#gpl-2-2" title="Section 2">Section 2</a> in object code or executable form under the terms of
- <a class="link" href="bk01apds02.html#gpl-2-1" title="Section 1">Sections 1</a> and
- <a class="link" href="bk01apds02.html#gpl-2-2" title="Section 2">2</a> above provided that you also do one of the following:
- </p><div class="orderedlist"><ol type="a"><li><p>Accompany it with the complete corresponding machine-readable source code, which
- must be distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,</p></li><li><p>Accompany it with a written offer, valid for at least three years, to give any
- third party, for a charge no more than your cost of physically performing source
- distribution, a complete machine-readable copy of the corresponding source code,
- to be distributed under the terms of Sections 1 and 2 above on a medium customarily
- used for software interchange; or,</p></li><li><p>Accompany it with the information you received as to the offer to distribute
- corresponding source code. (This alternative is allowed only for noncommercial
- distribution and only if you received the program in object code or executable form
- with such an offer, in accord with Subsection b above.)</p></li></ol></div><p>
- </p><p>The source code for a work means the preferred form of the work for making modifications
- to it. For an executable work, complete source code means all the source code for all modules
- it contains, plus any associated interface definition files, plus the scripts used to control
- compilation and installation of the executable. However, as a special exception, the source
- code distributed need not include anything that is normally distributed (in either source or
- binary form) with the major components (compiler, kernel, and so on) of the operating system
- on which the executable runs, unless that component itself accompanies the executable.</p><p>If distribution of executable or object code is made by offering access to copy from a
- designated place, then offering equivalent access to copy the source code from the same place
- counts as distribution of the source code, even though third parties are not compelled to
- copy the source along with the object code.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-4"></a>Section 4</h3></div></div></div><p>You may not copy, modify, sublicense, or distribute the Program except as expressly provided
- under this License. Any attempt otherwise to copy, modify, sublicense or distribute the
- Program is void, and will automatically terminate your rights under this License. However,
- parties who have received copies, or rights, from you under this License will not have their
- licenses terminated so long as such parties remain in full compliance.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-5"></a>Section 5</h3></div></div></div><p>You are not required to accept this License, since you have not signed it. However, nothing
- else grants you permission to modify or distribute the Program or its derivative works.
- These actions are prohibited by law if you do not accept this License. Therefore, by modifying
- or distributing the Program (or any work based on the Program), you indicate your acceptance
- of this License to do so, and all its terms and conditions for copying, distributing or
- modifying the Program or works based on it.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-6"></a>Section 6</h3></div></div></div><p>Each time you redistribute the Program (or any work based on the Program), the recipient
- automatically receives a license from the original licensor to copy, distribute or modify
- the Program subject to these terms and conditions. You may not impose any further restrictions
- on the recipients' exercise of the rights granted herein. You are not responsible for enforcing
- compliance by third parties to this License.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-7"></a>Section 7</h3></div></div></div><p>If, as a consequence of a court judgment or allegation of patent infringement or for any other
- reason (not limited to patent issues), conditions are imposed on you (whether by court order,
- agreement or otherwise) that contradict the conditions of this License, they do not excuse you
- from the conditions of this License. If you cannot distribute so as to satisfy simultaneously
- your obligations under this License and any other pertinent obligations, then as a consequence
- you may not distribute the Program at all. For example, if a patent license would not permit
- royalty-free redistribution of the Program by all those who receive copies directly or
- indirectly through you, then the only way you could satisfy both it and this License would be
- to refrain entirely from distribution of the Program.</p><p>If any portion of this section is held invalid or unenforceable under any particular circumstance,
- the balance of the section is intended to apply and the section as a whole is intended to apply
- in other circumstances.</p><p>It is not the purpose of this section to induce you to infringe any patents or other property
- right claims or to contest validity of any such claims; this section has the sole purpose of
- protecting the integrity of the free software distribution system, which is implemented by public
- license practices. Many people have made generous contributions to the wide range of software
- distributed through that system in reliance on consistent application of that system; it is up
- to the author/donor to decide if he or she is willing to distribute software through any other
- system and a licensee cannot impose that choice.</p><p>This section is intended to make thoroughly clear what is believed to be a consequence of the
- rest of this License.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-8"></a>Section 8</h3></div></div></div><p>If the distribution and/or use of the Program is restricted in certain countries either by patents
- or by copyrighted interfaces, the original copyright holder who places the Program under this License
- may add an explicit geographical distribution limitation excluding those countries, so that
- distribution is permitted only in or among countries not thus excluded. In such case, this License
- incorporates the limitation as if written in the body of this License.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-9"></a>Section 9</h3></div></div></div><p>The Free Software Foundation may publish revised and/or new versions of the General Public License
- from time to time. Such new versions will be similar in spirit to the present version, but may differ
- in detail to address new problems or concerns.</p><p>Each version is given a distinguishing version number. If the Program specifies a version number of
- this License which applies to it and “<span class="quote">any later version</span>”, you have the option of following the terms
- and conditions either of that version or of any later version published by the Free Software
- Foundation. If the Program does not specify a version number of this License, you may choose any
- version ever published by the Free Software Foundation.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-10"></a>Section 10</h3></div></div></div><p>If you wish to incorporate parts of the Program into other free programs whose distribution
- conditions are different, write to the author to ask for permission. For software which is copyrighted
- by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions
- for this. Our decision will be guided by the two goals of preserving the free status of all
- derivatives of our free software and of promoting the sharing and reuse of software generally.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-11"></a>NO WARRANTY Section 11</h3></div></div></div><p>BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT
- PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
- OTHER PARTIES PROVIDE THE PROGRAM “<span class="quote">AS IS</span>” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-12"></a>Section 12</h3></div></div></div><p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR
- ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
- FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
- USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
- INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
- ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGES.</p><p>END OF TERMS AND CONDITIONS</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apd.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01apd.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apds03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix D. GNU General Public License </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> How to Apply These Terms to Your New Programs</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apds03.html b/libstdc++-v3/doc/html/manual/bk01apds03.html
deleted file mode 100644
index d95dfd7a686..00000000000
--- a/libstdc++-v3/doc/html/manual/bk01apds03.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>How to Apply These Terms to Your New Programs</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01apd.html" title="Appendix D. GNU General Public License" /><link rel="prev" href="bk01apds02.html" title="TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION" /><link rel="next" href="bk01ape.html" title="Appendix E. GNU Free Documentation License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How to Apply These Terms to Your New Programs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apds02.html">Prev</a> </td><th width="60%" align="center">Appendix D. GNU General Public License</th><td width="20%" align="right"> <a accesskey="n" href="bk01ape.html">Next</a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="gpl-3"></a>How to Apply These Terms to Your New Programs</h2></div></div></div><p>If you develop a new program, and you want it to be of the greatest
- possible use to the public, the best way to achieve this is to make it
- free software which everyone can redistribute and change under these terms.</p><p>To do so, attach the following notices to the program. It is safest
- to attach them to the start of each source file to most effectively
- convey the exclusion of warranty; and each file should have at least
- the “<span class="quote">copyright</span>” line and a pointer to where the full notice is found.</p><p>&lt;one line to give the program's name and a brief idea of what it does.&gt;
- Copyright (C) &lt;year&gt; &lt;name of author&gt;</p><p>This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.</p><p>This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.</p><p>You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</p><p>Also add information on how to contact you by electronic and paper mail.</p><p>If the program is interactive, make it output a short notice like this
- when it starts in an interactive mode:</p><p>Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type “<span class="quote">show w</span>”.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type “<span class="quote">show c</span>” for details.</p><p>The hypothetical commands “<span class="quote">show w</span>” and “<span class="quote">show c</span>” should
- show the appropriate parts of the General Public License. Of course, the commands you
- use may be called something other than “<span class="quote">show w</span>” and “<span class="quote">show c</span>”;
- they could even be mouse-clicks or menu items--whatever suits your program.</p><p>You should also get your employer (if you work as a programmer) or your
- school, if any, to sign a “<span class="quote">copyright disclaimer</span>” for the program, if
- necessary. Here is a sample; alter the names:</p><p>Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- “<span class="quote">Gnomovision</span>” (which makes passes at compilers) written by James Hacker.</p><p>&lt;signature of Ty Coon&gt;, 1 April 1989
- Ty Coon, President of Vice</p><p>This General Public License does not permit incorporating your program into
- proprietary programs. If your program is a subroutine library, you may
- consider it more useful to permit linking proprietary applications with the
- library. If this is what you want to do, use the GNU Library General
- Public License instead of this License.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apds02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01apd.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01ape.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix E. GNU Free Documentation License</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01ix01.html b/libstdc++-v3/doc/html/manual/bk01ix01.html
new file mode 100644
index 00000000000..602b2bc897c
--- /dev/null
+++ b/libstdc++-v3/doc/html/manual/bk01ix01.html
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Index</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License" /><link rel="next" href="../bk02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Index</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_gfdl.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr></table><hr /></div><div class="index"><div class="titlepage"><div><div><h2 class="title"><a id="id599850"></a>Index</h2></div></div></div><div class="index"><div class="indexdiv"><h3>A</h3><dl><dt>Algorithms, <a class="indexterm" href="algorithms.html">
+ Algorithms
+
+</a></dt><dt>Appendix</dt><dd><dl><dt>Contributing, <a class="indexterm" href="appendix_contributing.html">
+ Contributing
+
+</a></dt><dt>Free Documentation, <a class="indexterm" href="appendix_free.html">
+ Free Software Needs Free Documentation
+
+</a></dt><dt>Porting and Maintenance, <a class="indexterm" href="appendix_porting.html">
+ Porting and Maintenance
+
+</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>C</h3><dl><dt>Containers, <a class="indexterm" href="containers.html">
+ Containers
+
+</a></dt></dl></div><div class="indexdiv"><h3>D</h3><dl><dt>Diagnostics, <a class="indexterm" href="diagnostics.html">
+ Diagnostics
+
+</a></dt></dl></div><div class="indexdiv"><h3>E</h3><dl><dt>Extensions, <a class="indexterm" href="extensions.html">
+ Extensions
+
+</a></dt></dl></div><div class="indexdiv"><h3>I</h3><dl><dt>Input and Output, <a class="indexterm" href="io.html">
+ Input and Output
+
+</a></dt><dt>Introduction, <a class="indexterm" href="intro.html">
+ Introduction
+
+</a></dt><dt>Iterators, <a class="indexterm" href="iterators.html">
+ Iterators
+
+</a></dt></dl></div><div class="indexdiv"><h3>L</h3><dl><dt>Localization, <a class="indexterm" href="localization.html">
+ Localization
+
+</a></dt></dl></div><div class="indexdiv"><h3>N</h3><dl><dt>Numerics, <a class="indexterm" href="numerics.html">
+ Numerics
+
+</a></dt></dl></div><div class="indexdiv"><h3>S</h3><dl><dt>Strings, <a class="indexterm" href="strings.html">
+ Strings
+
+</a></dt><dt>Support, <a class="indexterm" href="support.html">
+ Support
+
+</a></dt></dl></div><div class="indexdiv"><h3>U</h3><dl><dt>Utilities, <a class="indexterm" href="utilities.html">
+ Utilities
+
+</a></dt></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_gfdl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix E. GNU Free Documentation License </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch01.html b/libstdc++-v3/doc/html/manual/bk01pt01ch01.html
deleted file mode 100644
index 60abfa4a793..00000000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch01.html
+++ /dev/null
@@ -1,6131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="intro.html" title="Part I. Introduction" /><link rel="next" href="bk01pt01ch01s02.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch01s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt01ch01.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.1998">C++ 1998</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s02.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s03.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.standard"></a>Implementation Status</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.1998"></a>C++ 1998</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="standard.1998"></a>Checklist</h4></div></div></div><div class="literallayout"><p><br />
-   Completion Checklist for the Standard C++ Library<br />
-   Updated: 2003-04-25<br />
-<br />
-   Status Code Legend:<br />
-    M - Missing<br />
-    S - Present as stub.<br />
-    X - Partially implemented, or buggy.<br />
-    T - Implemented, pending test/inspection.<br />
-    V - Verified to pass all available test suites.<br />
-    Q - Qualified by inspection for non-testable correctness.<br />
-    P - Portability verified.<br />
-    C - Certified.<br />
-<br />
-   Lexical notes:<br />
-   Only status codes appear in column 0.  Notes relating to conformance<br />
-   issues appear [in brackets].<br />
-<br />
-   Note that this checklist does not (yet) include all emendations<br />
-   recommended by the ISO Library Working Group:<br />
-   http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-toc.html<br />
-<br />
-   Detailed explanation of status codes:<br />
-<br />
-    M - Missing:  The name is not visible to programs that include<br />
-        the specified header, either at compile or link stage.<br />
-<br />
-    S - Present as stub:  A program can use the name, but no implementation<br />
-        is provided.  Programs that use the name link correctly, but<br />
-        cannot usefully be run.<br />
-<br />
-    X - Partially implemented, or buggy:  Some implementation has been<br />
-        provided, but it is known or believed not to conform fully.<br />
-        It may have an incorrect base class, wrong namespace, wrong<br />
-        storage class, or simply not fully implement requirements.<br />
-        However, it may be sufficiently usable to help test other<br />
-        components.<br />
-<br />
-    T - Implemented, pending test/inspection:  Implementation believed<br />
-        to be complete, and informal testing suggests it is ready for<br />
-        formal verification.<br />
-<br />
-    V - Verified, passes all test suites:  Verified to satisfy all<br />
-        generically testable conformance requirements.<br />
-<br />
-    Q - Qualified by inspection for non-testable correctness:<br />
-        Inspected, "implementation-defined" documentation accepted,<br />
-        local usability criteria satisfied, formally inspected for<br />
-        other untestable conformance.  (Untestable requirements<br />
-        include exception-safety, thread-safety, worst-case<br />
-        complexity, memory cleanliness, usefulness.)<br />
-<br />
-    P - Portability verified:  Qualified on all primary target platforms.<br />
-<br />
-    C - Certified:  Formally certified to have passed all tests,<br />
-        inspections, qualifications; approved under "signing authority"<br />
-        to be used to satisfy contractual guarantees.<br />
-<br />
-   ----------------------------------------------------------------------<br />
-       &lt;algorithm&gt;    &lt;iomanip&gt;    &lt;list&gt;      &lt;ostream&gt;     &lt;streambuf&gt;<br />
-       &lt;bitset&gt;       &lt;ios&gt;        &lt;locale&gt;    &lt;queue&gt;       &lt;string&gt;<br />
-       &lt;complex&gt;      &lt;iosfwd&gt;     &lt;map&gt;       &lt;set&gt;         &lt;typeinfo&gt;<br />
-X      &lt;deque&gt;        &lt;iostream&gt;   &lt;memory&gt;    &lt;sstream&gt;     &lt;utility&gt;<br />
-       &lt;exception&gt;    &lt;istream&gt;    &lt;new&gt;       &lt;stack&gt;       &lt;valarray&gt;<br />
-       &lt;fstream&gt;      &lt;iterator&gt;   &lt;numeric&gt;   &lt;stdexcept&gt;   &lt;vector&gt;<br />
-       &lt;functional&gt;   &lt;limits&gt;<br />
-<br />
-   [C header names must be in std:: to qualify.  Related to shadow/ dir.]<br />
-           &lt;cassert&gt; &lt;ciso646&gt; &lt;csetjmp&gt; &lt;cstdio&gt;  &lt;ctime&gt;<br />
-           &lt;cctype&gt;  &lt;climits&gt; &lt;csignal&gt; &lt;cstdlib&gt; &lt;cwchar&gt;<br />
-X          &lt;cerrno&gt;  &lt;clocale&gt; &lt;cstdarg&gt; &lt;cstring&gt; &lt;cwctype&gt;<br />
-           &lt;cfloat&gt;  &lt;cmath&gt;   &lt;cstddef&gt;<br />
-<br />
-    Macro:<br />
-X   errno,  declared  or  defined in &lt;cerrno&gt;.<br />
-<br />
-    Macro fn:<br />
-X   setjmp(jmp_buf), declared or defined in &lt;csetjmp&gt;<br />
-X   va_end(va_list), declared or defined in &lt;cstdarg&gt;<br />
-<br />
-    Types:<br />
-X   clock_t, div_t, FILE, fpos_t, lconv, ldiv_t, mbstate_t,<br />
-X   ptrdiff_t, sig_atomic_t, size_t,  time_t,  tm,  va_list,<br />
-X   wctrans_t, wctype_t, and wint_t.<br />
-<br />
-   1 Which  of  the functions in the C++ Standard Library are not reentrant<br />
-    subroutines is implementation-defined.<br />
-<br />
-   18.1  Types                                        [lib.support.types]<br />
-X      &lt;cstddef&gt;<br />
-X      NULL<br />
-X      offsetof<br />
-X      ptrdiff_t<br />
-X      size_t<br />
-<br />
-   18.2  Implementation properties                   [lib.support.limits]<br />
-<br />
-    &lt;limits&gt;, &lt;climits&gt;, and &lt;cfloat&gt;<br />
-<br />
-   18.2.1  Numeric limits                                    [lib.limits]<br />
-<br />
-X   template&lt;class T&gt; class numeric_limits;<br />
-<br />
-T   enum float_round_style;<br />
-T   enum float_denorm_style;<br />
-<br />
-T   template&lt;&gt; class numeric_limits&lt;bool&gt;;<br />
-<br />
-T   template&lt;&gt; class numeric_limits&lt;char&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;signed char&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;unsigned char&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;wchar_t&gt;;<br />
-<br />
-T   template&lt;&gt; class numeric_limits&lt;short&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;int&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;long&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;unsigned short&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;unsigned int&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;unsigned long&gt;;<br />
-<br />
-X   template&lt;&gt; class numeric_limits&lt;float&gt;;<br />
-X   template&lt;&gt; class numeric_limits&lt;double&gt;;<br />
-X   template&lt;&gt; class numeric_limits&lt;long double&gt;;<br />
-<br />
-   18.2.1.1  Template class numeric_limits           [lib.numeric.limits]<br />
-T   template&lt;class T&gt; class numeric_limits {<br />
-    public:<br />
-T     static const bool is_specialized = false;<br />
-T     static T min() throw();<br />
-T     static T max() throw();<br />
-T     static const int  digits = 0;<br />
-T     static const int  digits10 = 0;<br />
-T     static const bool is_signed = false;<br />
-T     static const bool is_integer = false;<br />
-T     static const bool is_exact = false;<br />
-T     static const int  radix = 0;<br />
-T     static T epsilon() throw();<br />
-T     static T round_error() throw();<br />
-<br />
-T     static const int  min_exponent = 0;<br />
-T     static const int  min_exponent10 = 0;<br />
-T     static const int  max_exponent = 0;<br />
-T     static const int  max_exponent10 = 0;<br />
-<br />
-T     static const bool has_infinity = false;<br />
-T     static const bool has_quiet_NaN = false;<br />
-T     static const bool has_signaling_NaN = false;<br />
-T     static const float_denorm_style has_denorm = denorm_absent;<br />
-T     static const bool has_denorm_loss = false;<br />
-T     static T infinity() throw();<br />
-T     static T quiet_NaN() throw();<br />
-T     static T signaling_NaN() throw();<br />
-T     static T denorm_min() throw();<br />
-<br />
-T     static const bool is_iec559 = false;<br />
-T     static const bool is_bounded = false;<br />
-T     static const bool is_modulo = false;<br />
-<br />
-T     static const bool traps = false;<br />
-T     static const bool tinyness_before = false;<br />
-T     static const float_round_style round_style = round_toward_zero;<br />
-    };<br />
-<br />
-   18.2.1.3  Type float_round_style                     [lib.round.style]<br />
-<br />
-T   enum float_round_style {<br />
-T     round_indeterminate       = -1,<br />
-T     round_toward_zero         =  0,<br />
-T     round_to_nearest          =  1,<br />
-T     round_toward_infinity     =  2,<br />
-T     round_toward_neg_infinity =  3<br />
-    };<br />
-<br />
-   18.2.1.4  Type float_denorm_style                   [lib.denorm.style]<br />
-<br />
-T   enum float_denorm_style {<br />
-T     denorm_indeterminate = -1;<br />
-T     denorm_absent = 0;<br />
-T     denorm present = 1;<br />
-    };<br />
-<br />
-   18.2.1.5  numeric_limits specializations         [lib.numeric.special]<br />
-   <br />
-   [Note: see Note at 18.2.1.  ]<br />
-<br />
-   18.2.2  C Library                                       [lib.c.limits]<br />
-<br />
-   1 Header &lt;climits&gt; (Table 3):<br />
-      CHAR_BIT   INT_MAX    LONG_MIN     SCHAR_MIN   UCHAR_MAX   USHRT_MAX<br />
-X     CHAR_MAX   INT_MIN    MB_LEN_MAX   SHRT_MAX    UINT_MAX<br />
-      CHAR_MIN   LONG_MAX   SCHAR_MAX    SHRT_MIN    ULONG_MAX<br />
-<br />
-   3 Header &lt;cfloat&gt; (Table 4):<br />
-<br />
-    DBL_DIG          DBL_MIN_EXP      FLT_MIN_10_EXP   LDBL_MAX_10_EXP<br />
-    DBL_EPSILON      FLT_DIG          FLT_MIN_EXP      LDBL_MAX_EXP<br />
-    DBL_MANT_DIG     FLT_EPSILON      FLT_RADIX        LDBL_MIN<br />
-X   DBL_MAX          FLT_MANT_DIG     FLT_ROUNDS       LDBL_MIN_10_EXP<br />
-    DBL_MAX_10_EXP   FLT_MAX          LDBL_DIG         LDBL_MIN_EXP<br />
-    DBL_MAX_EXP      FLT_MAX_10_EXP   LDBL_EPSILON<br />
-    DBL_MIN          FLT_MAX_EXP      LDBL_MANT_DIG<br />
-    DBL_MIN_10_EXP   FLT_MIN          LDBL_MAX<br />
-<br />
-<br />
-        1 Header &lt;cstdlib&gt; (partial), Table 5:<br />
-X             EXIT_FAILURE     EXIT_SUCCESS<br />
-              abort   atexit   exit<br />
-<br />
-S    abort(void)<br />
-S    extern "C" int atexit(void (*f)(void))<br />
-S    extern "C++" int atexit(void (*f)(void))<br />
-S    exit(int status)<br />
-<br />
-   18.4  Dynamic memory management                  [lib.support.dynamic]<br />
-<br />
-   Header &lt;new&gt; synopsis<br />
-<br />
-T    class bad_alloc;<br />
-T    struct nothrow_t {};<br />
-T    extern const nothrow_t nothrow;<br />
-T    typedef void (*new_handler)();<br />
-T    new_handler set_new_handler(new_handler new_p) throw();<br />
-<br />
-T    void* operator new(std::size_t size) throw(std::bad_alloc);<br />
-T    void* operator new(std::size_t size, const std::nothrow_t&amp;) throw();<br />
-T    void  operator delete(void* ptr) throw();<br />
-T    void  operator delete(void* ptr, const std::nothrow_t&amp;) throw();<br />
-T    void* operator new[](std::size_t size) throw(std::bad_alloc);<br />
-T    void* operator new[](std::size_t size, const std::nothrow_t&amp;) throw();<br />
-T    void  operator delete[](void* ptr) throw();<br />
-T    void  operator delete[](void* ptr, const std::nothrow_t&amp;) throw();<br />
-T    void* operator new  (std::size_t size, void* ptr) throw();<br />
-T    void* operator new[](std::size_t size, void* ptr) throw();<br />
-T    void  operator delete  (void* ptr, void*) throw();<br />
-T    void  operator delete[](void* ptr, void*) throw();<br />
-<br />
-   18.4.2.1  Class bad_alloc                              [lib.bad.alloc]<br />
-<br />
-T   class bad_alloc : public exception {<br />
-    public:<br />
-T     bad_alloc() throw();<br />
-T     bad_alloc(const bad_alloc&amp;) throw();<br />
-T     bad_alloc&amp; operator=(const bad_alloc&amp;) throw();<br />
-T     virtual ~bad_alloc() throw();<br />
-T     virtual const char* what() const throw();<br />
-<br />
-<br />
-<br />
-T  new_handler set_new_handler(new_handler new_p) throw();<br />
-<br />
-<br />
-     Header &lt;typeinfo&gt; synopsis<br />
-<br />
-T    class type_info;<br />
-T    class bad_cast;<br />
-T    class bad_typeid;<br />
-<br />
-   18.5.1 - Class type_info [lib.type.info]<br />
-<br />
-T    class type_info {<br />
-    public:<br />
-T      virtual ~type_info();<br />
-T      bool operator==(const type_info&amp; rhs) const;<br />
-T      bool operator!=(const type_info&amp; rhs) const;<br />
-T      bool before(const type_info&amp; rhs) const;<br />
-T      const char* name() const;<br />
-    private:<br />
-T      type_info(const type_info&amp; rhs);<br />
-T      type_info&amp; operator=(const type_info&amp; rhs);<br />
-    };<br />
-<br />
-   18.5.2 - Class bad_cast [lib.bad.cast]<br />
-<br />
-T  bad_cast() throw();<br />
-T  virtual const char* bad_cast::what() const throw();<br />
-<br />
-   18.5.3  Class bad_typeid                              [lib.bad.typeid]<br />
-<br />
-T    class bad_typeid : public exception {<br />
-    public:<br />
-T      bad_typeid() throw();<br />
-T      bad_typeid(const bad_typeid&amp;) throw();<br />
-T      bad_typeid&amp; operator=(const bad_typeid&amp;) throw();<br />
-T      virtual ~bad_typeid() throw();<br />
-T      virtual const char* what() const throw();<br />
-    };<br />
-<br />
-   18.6  Exception handling                       [lib.support.exception]<br />
-<br />
-T      Header &lt;exception&gt; synopsis<br />
-<br />
-T    class exception;<br />
-T    class bad_exception;<br />
-<br />
-T    typedef void (*unexpected_handler)();<br />
-T    unexpected_handler set_unexpected(unexpected_handler f) throw();<br />
-T    void unexpected();<br />
-T    typedef void (*terminate_handler)();<br />
-T    terminate_handler set_terminate(terminate_handler f) throw();<br />
-T    void terminate();<br />
-T    bool uncaught_exception();<br />
-<br />
-   18.6.1  Class exception                                [lib.exception]<br />
-<br />
-T    class exception {<br />
-     public:<br />
-T      exception() throw();<br />
-T      exception(const exception&amp;) throw();<br />
-T      exception&amp; operator=(const exception&amp;) throw();<br />
-T      virtual ~exception() throw();<br />
-T      virtual const char* what() const throw();<br />
-    };<br />
-<br />
-   18.6.2.1  Class bad_exception                      [lib.bad.exception]<br />
-T    class bad_exception : public exception {<br />
-    public:<br />
-T      bad_exception() throw();<br />
-T      bad_exception(const bad_exception&amp;) throw();<br />
-T      bad_exception&amp; operator=(const bad_exception&amp;) throw();<br />
-T      virtual ~bad_exception() throw();<br />
-T      virtual const char* what() const throw();<br />
-    };<br />
-<br />
-   18.7  Other runtime support                      [lib.support.runtime]<br />
-<br />
-   1 Headers &lt;cstdarg&gt; (variable arguments),  &lt;csetjmp&gt;  (nonlocal  jumps),<br />
-    &lt;ctime&gt;  (system  clock clock(), time()), &lt;csignal&gt; (signal handling),<br />
-    and &lt;cstdlib&gt; (runtime environment getenv(), system()).<br />
-<br />
-                    Table 6--Header &lt;cstdarg&gt; synopsis<br />
-                 Macros:   va_arg    va_end   va_start<br />
-X                Type:     va_list<br />
-<br />
-                    Table 7--Header &lt;csetjmp&gt; synopsis<br />
-<br />
-                          Macro:      setjmp |<br />
-X                         Type:       jmp_buf<br />
-                          Function:   longjmp<br />
-<br />
-                     Table 8--Header &lt;ctime&gt; synopsis<br />
-<br />
-                      Macros:      CLOCKS_PER_SEC<br />
-X                     Types:       clock_t<br />
-                      Functions:   clock<br />
-<br />
-                    Table 9--Header &lt;csignal&gt; synopsis<br />
-<br />
-X        Macros:      SIGABRT        SIGILL   SIGSEGV   SIG_DFL<br />
-         SIG_IGN      SIGFPE         SIGINT   SIGTERM   SIG_ERR<br />
-         Type:        sig_atomic_t<br />
-         Functions:   raise          signal<br />
-<br />
-                   Table 10--Header &lt;cstdlib&gt; synopsis<br />
-<br />
-X                     Functions:   getenv   system<br />
-<br />
-   19.1  Exception classes                           [lib.std.exceptions]<br />
-<br />
-   Header &lt;stdexcept&gt; synopsis<br />
-<br />
-T     class logic_error;<br />
-T     class domain_error;<br />
-T     class invalid_argument;<br />
-T     class length_error;<br />
-T     class out_of_range;<br />
-T     class runtime_error;<br />
-T     class range_error;<br />
-T     class overflow_error;<br />
-T     class underflow_error;<br />
-<br />
-   19.1.1  Class logic_error                            [lib.logic.error]<br />
-T   class logic_error : public exception {<br />
-    public:<br />
-T     explicit logic_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.2  Class domain_error                          [lib.domain.error]<br />
-<br />
-T   class domain_error : public logic_error {<br />
-    public:<br />
-T     explicit domain_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.3  Class invalid_argument                  [lib.invalid.argument]<br />
-<br />
-T   class invalid_argument : public logic_error {<br />
-    public:<br />
-T     explicit invalid_argument(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.4  Class length_error                          [lib.length.error]<br />
-<br />
-T   class length_error : public logic_error {<br />
-    public:<br />
-T     explicit length_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.5  Class out_of_range                          [lib.out.of.range]<br />
-<br />
-T   class out_of_range : public logic_error {<br />
-    public:<br />
-T     explicit out_of_range(const string&amp; what_arg);<br />
-    };<br />
-<br />
-<br />
-   19.1.6  Class runtime_error                        [lib.runtime.error]<br />
-<br />
-T   class runtime_error : public exception {<br />
-    public:<br />
-T     explicit runtime_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-<br />
-   19.1.7  Class range_error                            [lib.range.error]<br />
-<br />
-T   class range_error : public runtime_error {<br />
-    public:<br />
-T     explicit range_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.8  Class overflow_error                      [lib.overflow.error]<br />
-<br />
-T   class overflow_error : public runtime_error {<br />
-    public:<br />
-T     explicit overflow_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-<br />
-   19.1.9  Class underflow_error                    [lib.underflow.error]<br />
-<br />
-T   class underflow_error : public runtime_error {<br />
-    public:<br />
-T     explicit underflow_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-<br />
-   19.2  Assertions                                      [lib.assertions]<br />
-<br />
-                    Table 2--Header &lt;cassert&gt; synopsis<br />
-<br />
-X                         Macro:   assert<br />
-<br />
-   19.3  Error numbers                                        [lib.errno]<br />
-<br />
-                    Table 3--Header &lt;cerrno&gt; synopsis<br />
-<br />
-X                    |Macros:   EDOM   ERANGE   errno |<br />
-<br />
-<br />
-   20.2  Utility components                                 [lib.utility]<br />
-<br />
-   Header &lt;utility&gt; synopsis<br />
-<br />
-    // _lib.operators_, operators:<br />
-T    namespace rel_ops {<br />
-T      template&lt;class T&gt; bool operator!=(const T&amp;, const T&amp;);<br />
-T      template&lt;class T&gt; bool operator&gt; (const T&amp;, const T&amp;);<br />
-T      template&lt;class T&gt; bool operator&lt;=(const T&amp;, const T&amp;);<br />
-T      template&lt;class T&gt; bool operator&gt;=(const T&amp;, const T&amp;);<br />
-    }<br />
-    // _lib.pairs_, pairs:<br />
-T   template &lt;class T1, class T2&gt; struct pair;<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator==(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator&lt; (const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator!=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator&gt; (const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator&gt;=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator&lt;=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt; pair&lt;T1,T2&gt; make_pair(const T1&amp;, const T2&amp;);<br />
-<br />
-<br />
-   20.2.2  Pairs                                              [lib.pairs]<br />
-<br />
-T  template &lt;class T1, class T2&gt;<br />
-   struct pair {<br />
-T    typedef T1 first_type;<br />
-T    typedef T2 second_type;<br />
-<br />
-T    T1 first;<br />
-T    T2 second;<br />
-T    pair();<br />
-T    pair(const T1&amp; x, const T2&amp; y);<br />
-T    template&lt;class U, class V&gt; pair(const pair&lt;U, V&gt; &amp;p);<br />
-   };<br />
-<br />
-   20.3  Function objects                          [lib.function.objects]<br />
-<br />
-   Header &lt;functional&gt; synopsis<br />
-<br />
-    // _lib.base_, base:<br />
-V   template &lt;class Arg, class Result&gt; struct unary_function;<br />
-V   template &lt;class Arg1, class Arg2, class Result&gt; struct binary_function;<br />
-<br />
-    // _lib.arithmetic.operations_, arithmetic operations:<br />
-V   template &lt;class T&gt; struct plus;<br />
-V   template &lt;class T&gt; struct minus;<br />
-V   template &lt;class T&gt; struct multiplies;<br />
-V   template &lt;class T&gt; struct divides;<br />
-V   template &lt;class T&gt; struct modulus;<br />
-V   template &lt;class T&gt; struct negate;<br />
-    // _lib.comparisons_, comparisons:<br />
-V   template &lt;class T&gt; struct equal_to;<br />
-V   template &lt;class T&gt; struct not_equal_to;<br />
-V   template &lt;class T&gt; struct greater;<br />
-V   template &lt;class T&gt; struct less;<br />
-V   template &lt;class T&gt; struct greater_equal;<br />
-V   template &lt;class T&gt; struct less_equal;<br />
-    // _lib.logical.operations_, logical operations:<br />
-V   template &lt;class T&gt; struct logical_and;<br />
-V   template &lt;class T&gt; struct logical_or;<br />
-V   template &lt;class T&gt; struct logical_not;<br />
-    // _lib.negators_, negators:<br />
-    template &lt;class Predicate&gt; struct unary_negate;<br />
-V   template &lt;class Predicate&gt;<br />
-      unary_negate&lt;Predicate&gt;  not1(const Predicate&amp;);<br />
-V   template &lt;class Predicate&gt; struct binary_negate;<br />
-V   template &lt;class Predicate&gt;<br />
-      binary_negate&lt;Predicate&gt; not2(const Predicate&amp;);<br />
-    // _lib.binders_, binders:<br />
-V   template &lt;class Operation&gt;  class binder1st;<br />
-V   template &lt;class Operation, class T&gt;<br />
-      binder1st&lt;Operation&gt; bind1st(const Operation&amp;, const T&amp;);<br />
-V   template &lt;class Operation&gt; class binder2nd;<br />
-V   template &lt;class Operation, class T&gt;<br />
-      binder2nd&lt;Operation&gt; bind2nd(const Operation&amp;, const T&amp;);<br />
-    // _lib.function.pointer.adaptors_, adaptors:<br />
-V   template &lt;class Arg, class Result&gt; class pointer_to_unary_function;<br />
-V   template &lt;class Arg, class Result&gt;<br />
-      pointer_to_unary_function&lt;Arg,Result&gt; ptr_fun(Result (*)(Arg));<br />
-V   template &lt;class Arg1, class Arg2, class Result&gt;<br />
-      class pointer_to_binary_function;<br />
-V   template &lt;class Arg1, class Arg2, class Result&gt;<br />
-      pointer_to_binary_function&lt;Arg1,Arg2,Result&gt;<br />
-        ptr_fun(Result (*)(Arg1,Arg2));<br />
-<br />
-    // _lib.member.pointer.adaptors_, adaptors:<br />
-V   template&lt;class S, class T&gt; class mem_fun_t;<br />
-V   template&lt;class S, class T, class A&gt; class mem_fun1_t;<br />
-V   template&lt;class S, class T&gt;<br />
-        mem_fun_t&lt;S,T&gt; mem_fun(S (T::*f)());<br />
-V   template&lt;class S, class T, class A&gt;<br />
-        mem_fun1_t&lt;S,T,A&gt; mem_fun(S (T::*f)(A));<br />
-V   template&lt;class S, class T&gt; class mem_fun_ref_t;<br />
-V   template&lt;class S, class T, class A&gt; class mem_fun1_ref_t;<br />
-V   template&lt;class S, class T&gt;<br />
-        mem_fun_ref_t&lt;S,T&gt; mem_fun_ref(S (T::*f)());<br />
-V   template&lt;class S, class T, class A&gt;<br />
-        mem_fun1_ref_t&lt;S,T,A&gt; mem_fun_ref(S (T::*f)(A));<br />
-<br />
-V   template &lt;class S, class T&gt; class const_mem_fun_t;<br />
-V   template &lt;class S, class T, class A&gt; class const_mem_fun1_t;<br />
-V   template &lt;class S, class T&gt;<br />
-      const_mem_fun_t&lt;S,T&gt; mem_fun(S (T::*f)() const);<br />
-V   template &lt;class S, class T, class A&gt;<br />
-      const_mem_fun1_t&lt;S,T,A&gt; mem_fun(S (T::*f)(A) const);<br />
-V   template &lt;class S, class T&gt; class const_mem_fun_ref_t;<br />
-V   template &lt;class S, class T, class A&gt; class const_mem_fun1_ref_t;<br />
-V   template &lt;class S, class T&gt;<br />
-      const_mem_fun_ref_t&lt;S,T&gt; mem_fun_ref(S (T::*f)() const);<br />
-V   template &lt;class S, class T, class A&gt;<br />
-      const_mem_fun1_ref_t&lt;S,T,A&gt; mem_fun_ref(S (T::*f)(A) const);<br />
-   }<br />
-<br />
-   20.3.1  Base                                                [lib.base]<br />
-<br />
-V   template &lt;class Arg, class Result&gt;<br />
-    struct unary_function {<br />
-V     typedef Arg    argument_type;<br />
-V     typedef Result result_type;<br />
-    };<br />
-V   template &lt;class Arg1, class Arg2, class Result&gt;<br />
-    struct binary_function {<br />
-V     typedef Arg1   first_argument_type;<br />
-V     typedef Arg2   second_argument_type;<br />
-V     typedef Result result_type;<br />
-    };<br />
-<br />
-   20.3.2  Arithmetic operations              [lib.arithmetic.operations]<br />
-<br />
-T  template &lt;class T&gt; struct plus : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct minus : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct multiplies : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct divides : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct modulus : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct negate : unary_function&lt;T,T&gt; {<br />
-V   T operator()(const T&amp; x) const;<br />
-   };<br />
-<br />
-   20.3.3  Comparisons                                  [lib.comparisons]<br />
-<br />
-T  template &lt;class T&gt; struct equal_to : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct not_equal_to : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct greater : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct less : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct greater_equal : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct less_equal : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-   20.3.4  Logical operations                    [lib.logical.operations]<br />
-<br />
-T  template &lt;class T&gt; struct logical_and : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct logical_or : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct logical_not : unary_function&lt;T,bool&gt; {<br />
-V   bool operator()(const T&amp; x) const;<br />
-   };<br />
-<br />
-   20.3.5  Negators                                        [lib.negators]<br />
-<br />
-T  template &lt;class Predicate&gt;<br />
-    class unary_negate<br />
-      : public unary_function&lt;typename Predicate::argument_type,bool&gt; {<br />
-   public:<br />
-T   explicit unary_negate(const Predicate&amp; pred);<br />
-V   bool operator()(const typename Predicate::argument_type&amp; x) const;<br />
-   };<br />
-<br />
-T  template &lt;class Predicate&gt;<br />
-    class binary_negate<br />
-      : public binary_function&lt;typename Predicate::first_argument_type,<br />
-          typename Predicate::second_argument_type, bool&gt; {<br />
-    public:<br />
-T     explicit binary_negate(const Predicate&amp; pred);<br />
-V     bool operator()(const typename Predicate::first_argument_type&amp;  x,<br />
-          const typename Predicate::second_argument_type&amp; y) const;<br />
-    };<br />
-<br />
-<br />
-   20.3.6  Binders                                          [lib.binders]<br />
-<br />
-   20.3.6.1  Template class binder1st                    [lib.binder.1st]<br />
-T   template &lt;class Operation&gt;<br />
-    class binder1st<br />
-      : public unary_function&lt;typename Operation::second_argument_type,<br />
-                              typename Operation::result_type&gt; {<br />
-    protected:<br />
-T     Operation                      op;<br />
-T     typename Operation::first_argument_type value;<br />
-    public:<br />
-V     binder1st(const Operation&amp; x,<br />
-                const typename Operation::first_argument_type&amp; y);<br />
-V     typename Operation::result_type<br />
-        operator()(const typename Operation::second_argument_type&amp; x) const;<br />
-    };<br />
-<br />
-   20.3.6.2  bind1st                                       [lib.bind.1st]<br />
-<br />
-V  template &lt;class Operation, class T&gt;<br />
-    binder1st&lt;Operation&gt; bind1st(const Operation&amp; op, const T&amp; x);<br />
-<br />
-   20.3.6.3  Template class binder2nd                    [lib.binder.2nd]<br />
-T   template &lt;class Operation&gt;<br />
-    class binder2nd<br />
-      : public unary_function&lt;typename Operation::first_argument_type,<br />
-                              typename Operation::result_type&gt; {<br />
-    protected:<br />
-T     Operation                       op;<br />
-T     typename Operation::second_argument_type value;<br />
-    public:<br />
-V     binder2nd(const Operation&amp; x,<br />
-                const typename Operation::second_argument_type&amp; y);<br />
-V     typename Operation::result_type<br />
-        operator()(const typename Operation::first_argument_type&amp; x) const;<br />
-    };<br />
-<br />
-   20.3.6.4  bind2nd                                       [lib.bind.2nd]<br />
-<br />
-T  template &lt;class Operation, class T&gt;<br />
-    binder2nd&lt;Operation&gt; bind2nd(const Operation&amp; op, const T&amp; x);<br />
-<br />
-<br />
-   20.3.7  Adaptors for pointers to       [lib.function.pointer.adaptors]<br />
-       functions<br />
-<br />
-   1 To  allow  pointers to (unary and binary) functions to work with func-<br />
-   tion adaptors the library provides:<br />
-<br />
-T   template &lt;class Arg, class Result&gt;<br />
-    class pointer_to_unary_function : public unary_function&lt;Arg, Result&gt; {<br />
-    public:<br />
-T     explicit pointer_to_unary_function(Result (*f)(Arg));<br />
-V     Result operator()(Arg x) const;<br />
-    };<br />
-<br />
-T  template &lt;class Arg, class Result&gt;<br />
-    pointer_to_unary_function&lt;Arg, Result&gt; ptr_fun(Result (*f)(Arg));<br />
-<br />
-T       template &lt;class Arg1, class Arg2, class Result&gt;<br />
-        class pointer_to_binary_function :<br />
-          public binary_function&lt;Arg1,Arg2,Result&gt; {<br />
-        public:<br />
-T         explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2));<br />
-V         Result operator()(Arg1 x, Arg2 y) const;<br />
-        };<br />
-<br />
-<br />
-   20.3.8  Adaptors for pointers to         [lib.member.pointer.adaptors]<br />
-       members<br />
-<br />
-T  template &lt;class S, class T&gt; class mem_fun_t<br />
-          : public unary_function&lt;T*, S&gt; {<br />
-   public:<br />
-T   explicit mem_fun_t(S (T::*p)());<br />
-V   S operator()(T* p) const;<br />
-   };<br />
-<br />
-T   template &lt;class S, class T, class A&gt; class mem_fun1_t<br />
-          : public binary_function&lt;T*, A, S&gt; {<br />
-    public:<br />
-T     explicit mem_fun1_t(S (T::*p)(A));<br />
-V     S operator()(T* p, A x) const;<br />
-   };<br />
-<br />
-V   template&lt;class S, class T&gt; mem_fun_t&lt;S,T&gt;<br />
-       mem_fun(S (T::*f)());<br />
-V   template&lt;class S, class T, class A&gt; mem_fun1_t&lt;S,T,A&gt;<br />
-       mem_fun(S (T::*f)(A));<br />
-<br />
-T   template &lt;class S, class T&gt; class mem_fun_ref_t<br />
-          : public unary_function&lt;T, S&gt; {<br />
-    public:<br />
-T     explicit mem_fun_ref_t(S (T::*p)());<br />
-V     S operator()(T&amp; p) const;<br />
-   };<br />
-<br />
-T   template &lt;class S, class T, class A&gt; class mem_fun1_ref_t<br />
-          : public binary_function&lt;T, A, S&gt; {<br />
-    public:<br />
-T     explicit mem_fun1_ref_t(S (T::*p)(A));<br />
-V     S operator()(T&amp; p, A x) const;<br />
-   };<br />
-<br />
-T   template&lt;class S, class T&gt; mem_fun_ref_t&lt;S,T&gt;<br />
-       mem_fun_ref(S (T::*f)());<br />
-<br />
-T   template&lt;class S, class T, class A&gt; mem_fun1_ref_t&lt;S,T,A&gt;<br />
-       mem_fun_ref(S (T::*f)(A));<br />
-<br />
-T  template &lt;class S, class T&gt; class const_mem_fun_t<br />
-        : public unary_function&lt;T*, S&gt; {<br />
-   public:<br />
-T   explicit const_mem_fun_t(S (T::*p)() const);<br />
-V   S operator()(const T* p) const;<br />
-   };<br />
-<br />
-T  template &lt;class S, class T, class A&gt; class const_mem_fun1_t<br />
-        : public binary_function&lt;T*, A, S&gt; {<br />
-   public:<br />
-T   explicit const mem_fun1_t(S (T::*p)(A) const);<br />
-V   S operator()(const T* p, A x) const;<br />
-   };<br />
-<br />
-V   template&lt;class S, class T&gt; const_mem_fun_t&lt;S,T&gt;<br />
-       mem_fun(S (T::*f)() const);<br />
-V   template&lt;class S, class T, class A&gt; const_mem_fun1_t&lt;S,T,A&gt;<br />
-       mem_fun(S (T::*f)(A) const);<br />
-<br />
-T   template &lt;class S, class T&gt; class const_mem_fun_ref_t<br />
-          : public unary_function&lt;T, S&gt; {<br />
-    public:<br />
-T     explicit const_mem_fun_ref_t(S (T::*p)() const);<br />
-V     S operator()(const T&amp; p) const;<br />
-   };<br />
-<br />
-T   template &lt;class S, class T, class A&gt; class const_mem_fun1_ref_t<br />
-          : public binary_function&lt;T, A, S&gt; {<br />
-    public:<br />
-T     explicit const_mem_fun1_ref_t(S (T::*p)(A) const);<br />
-V     S operator()(const T&amp; p, A x) const;<br />
-   };<br />
-<br />
-T   template&lt;class S, class T&gt; const_mem_fun_ref_t&lt;S,T&gt;<br />
-       mem_fun_ref(S (T::*f)() const);<br />
-<br />
-T   template&lt;class S, class T, class A&gt; const_mem_fun1_ref_t&lt;S,T,A&gt;<br />
-        mem_fun_ref(S (T::*f)(A) const);<br />
-<br />
-   20.4  Memory                                              [lib.memory]<br />
-<br />
-   Header &lt;memory&gt; synopsis<br />
-<br />
-    // _lib.default.allocator_, the default allocator:<br />
-T   template &lt;class T&gt; class allocator;<br />
-T   template &lt;&gt; class allocator&lt;void&gt;;<br />
-T   template &lt;class T, class U&gt;<br />
-      bool operator==(const allocator&lt;T&gt;&amp;, const allocator&lt;U&gt;&amp;) throw();<br />
-T   template &lt;class T, class U&gt;<br />
-      bool operator!=(const allocator&lt;T&gt;&amp;, const allocator&lt;U&gt;&amp;) throw();<br />
-    // _lib.storage.iterator_, raw storage iterator:<br />
-T   template &lt;class OutputIterator, class T&gt; class raw_storage_iterator;<br />
-    // _lib.temporary.buffer_, temporary buffers:<br />
-T   template &lt;class T&gt;<br />
-      pair&lt;T*,ptrdiff_t&gt; get_temporary_buffer(ptrdiff_t n);<br />
-T   template &lt;class T&gt;<br />
-      void return_temporary_buffer(T* p);<br />
-    // _lib.specialized.algorithms_, specialized algorithms:<br />
-T   template &lt;class InputIterator, class ForwardIterator&gt;<br />
-      ForwardIterator<br />
-        uninitialized_copy(InputIterator first, InputIterator last,<br />
-                           ForwardIterator result);<br />
-T   template &lt;class ForwardIterator, class T&gt;<br />
-      void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
-                              const T&amp; x);<br />
-T   template &lt;class ForwardIterator, class Size, class T&gt;<br />
-      void uninitialized_fill_n(ForwardIterator first, Size n, const T&amp; x);<br />
-    // _lib.auto.ptr_, pointers:<br />
-X   template&lt;class X&gt; class auto_ptr;<br />
-   }<br />
-<br />
-   20.4.1  The default allocator                  [lib.default.allocator]<br />
-<br />
-T   template &lt;class T&gt; class allocator;<br />
-    // specialize for void:<br />
-T   template &lt;&gt; class allocator&lt;void&gt; {<br />
-    public:<br />
-T     typedef void*       pointer;<br />
-T     typedef const void* const_pointer;<br />
-      // reference-to-void members are impossible.<br />
-T     typedef void  value_type;<br />
-T     template &lt;class U&gt; struct rebind { typedef allocator&lt;U&gt; other; };<br />
-    };<br />
-<br />
-T   template &lt;class T&gt; class allocator {<br />
-     public:<br />
-T     typedef size_t    size_type;<br />
-T     typedef ptrdiff_t difference_type;<br />
-T     typedef T*        pointer;<br />
-T     typedef const T*  const_pointer;<br />
-T     typedef T&amp;        reference;<br />
-T     typedef const T&amp;  const_reference;<br />
-T     typedef T         value_type;<br />
-T     template &lt;class U&gt; struct rebind { typedef allocator&lt;U&gt; other; };<br />
-T     allocator() throw();<br />
-T     allocator(const allocator&amp;) throw();<br />
-T     template &lt;class U&gt; allocator(const allocator&lt;U&gt;&amp;) throw();<br />
-T    ~allocator() throw();<br />
-T     pointer address(reference x) const;<br />
-T     const_pointer address(const_reference x) const;<br />
-T     pointer allocate(<br />
-        size_type, allocator&lt;void&gt;::const_pointer hint = 0);<br />
-T     void deallocate(pointer p, size_type n);<br />
-T     size_type max_size() const throw();<br />
-T     void construct(pointer p, const T&amp; val);<br />
-T     void destroy(pointer p);<br />
-    };<br />
-<br />
-   20.4.1.2  allocator globals                    [lib.allocator.globals]<br />
-<br />
-T  template &lt;class T1, class T2&gt;<br />
-    bool operator==(const allocator&lt;T1&gt;&amp;, const allocator&lt;T2&gt;&amp;) throw();<br />
-T  template &lt;class T1, class T2&gt;<br />
-    bool operator!=(const allocator&lt;T1&gt;&amp;, const allocator&lt;T2&gt;&amp;) throw();<br />
-<br />
-   20.4.2  Raw storage iterator                    [lib.storage.iterator]<br />
-<br />
-T   template &lt;class OutputIterator, class T&gt;<br />
-    class raw_storage_iterator<br />
-      : public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
-    public:<br />
-T     explicit raw_storage_iterator(OutputIterator x);<br />
-T     raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator*();<br />
-T     raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator=(const T&amp; element);<br />
-T     raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator++();<br />
-T     raw_storage_iterator&lt;OutputIterator,T&gt;  operator++(int);<br />
-    };<br />
-<br />
-   20.4.3  Temporary buffers                       [lib.temporary.buffer]<br />
-<br />
-T  template &lt;class T&gt;<br />
-    pair&lt;T*, ptrdiff_t&gt; get_temporary_buffer(ptrdiff_t n);<br />
-<br />
-T  template &lt;class T&gt; void return_temporary_buffer(T* p);<br />
-<br />
-   20.4.4  Specialized algorithms            [lib.specialized.algorithms]<br />
-<br />
-   20.4.4.1  uninitialized_copy                  [lib.uninitialized.copy]<br />
-<br />
-V  template &lt;class InputIterator, class ForwardIterator&gt;<br />
-    ForwardIterator<br />
-      uninitialized_copy(InputIterator first, InputIterator last,<br />
-                         ForwardIterator result);<br />
-<br />
-   20.4.4.2  uninitialized_fill                  [lib.uninitialized.fill]<br />
-<br />
-V  template &lt;class ForwardIterator, class T&gt;<br />
-    void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
-                            const T&amp; x);<br />
-<br />
-   20.4.4.3  uninitialized_fill_n              [lib.uninitialized.fill.n]<br />
-<br />
-V  template &lt;class ForwardIterator, class Size, class T&gt;<br />
-    void uninitialized_fill_n(ForwardIterator first, Size n, const T&amp; x);<br />
-<br />
-   20.4.5  Template class auto_ptr                         [lib.auto.ptr]<br />
-<br />
-X   template&lt;class X&gt; class auto_ptr {<br />
-      template &lt;class Y&gt; struct auto_ptr_ref {};<br />
-    public:<br />
-T     typedef X element_type;<br />
-      // _lib.auto.ptr.cons_ construct/copy/destroy:<br />
-T     explicit auto_ptr(X* p =0) throw();<br />
-T     auto_ptr(auto_ptr&amp;) throw();<br />
-T     template&lt;class Y&gt; auto_ptr(auto_ptr&lt;Y&gt;&amp;) throw();<br />
-T     auto_ptr&amp; operator=(auto_ptr&amp;) throw();<br />
-T     template&lt;class Y&gt; auto_ptr&amp; operator=(auto_ptr&lt;Y&gt;&amp;) throw();<br />
-T    ~auto_ptr() throw();<br />
-      // _lib.auto.ptr.members_ members:<br />
-T     X&amp; operator*() const throw();<br />
-T     X* operator-&gt;() const throw();<br />
-T     X* get() const throw();<br />
-T     X* release() throw();<br />
-T     void reset(X* p =0) throw();<br />
-<br />
-      // _lib.auto.ptr.conv_ conversions:<br />
-X     auto_ptr(auto_ptr_ref&lt;X&gt;) throw();<br />
-X     template&lt;class Y&gt; operator auto_ptr_ref&lt;Y&gt;() throw();<br />
-X     template&lt;class Y&gt; operator auto_ptr&lt;Y&gt;() throw();<br />
-    };<br />
-<br />
-   20.4.6  C Library                                       [lib.c.malloc]<br />
-<br />
-                    Table 7--Header &lt;cstdlib&gt; synopsis<br />
-<br />
-X                    Functions:   calloc   malloc<br />
-                                  free     realloc<br />
-<br />
-<br />
-                    Table 8--Header &lt;cstring&gt; synopsis<br />
-<br />
-X                    Macro:       NULL<br />
-X                    Type:        size_t<br />
-X                    Functions:   memchr    memcmp<br />
-X                    memcpy       memmove   memset<br />
-<br />
-                     Table 9--Header &lt;ctime&gt; synopsis<br />
-<br />
-X          Macros:   NULL<br />
-X          Types:    size_t   clock_t    time_t<br />
-X          Struct:   tm<br />
-           Functions:<br />
-X          asctime   clock    difftime   localtime   strftime<br />
-X          ctime     gmtime   mktime     time<br />
-<br />
-   21.1.1  Character traits requirements        [lib.char.traits.require]<br />
-<br />
-   2 The struct template<br />
-T  template&lt;class charT&gt; struct char_traits;<br />
-   shall be provided in the header &lt;string&gt; as a basis for  explicit spe-<br />
-   cializations.<br />
-<br />
-<br />
-   21.1.3.1  struct                [lib.char.traits.specializations.char]<br />
-       char_traits&lt;char&gt;<br />
-<br />
-T   template&lt;&gt;<br />
-    struct char_traits&lt;char&gt; {<br />
-T     typedef char        char_type;<br />
-T     typedef int         int_type;<br />
-T     typedef streamoff   off_type;<br />
-T     typedef streampos   pos_type;<br />
-T     typedef mbstate_t   state_type;<br />
-<br />
-T     static void assign(char_type&amp; c1, const char_type&amp; c2);<br />
-T     static bool eq(const char_type&amp; c1, const char_type&amp; c2);<br />
-T     static bool lt(const char_type&amp; c1, const char_type&amp; c2);<br />
-<br />
-T     static int compare(const char_type* s1, const char_type* s2, size_t n);<br />
-T     static size_t length(const char_type* s);<br />
-T     static const char_type* find(const char_type* s, size_t n,<br />
-                                   const char_type&amp; a);<br />
-T     static char_type* move(char_type* s1, const char_type* s2, size_t n);<br />
-T     static char_type* copy(char_type* s1, const char_type* s2, size_t n);<br />
-T     static char_type* assign(char_type* s, size_t n, char_type a);<br />
-<br />
-T     static int_type not_eof(const int_type&amp; c);<br />
-T     static char_type to_char_type(const int_type&amp; c);<br />
-T     static int_type to_int_type(const char_type&amp; c);<br />
-T     static bool eq_int_type(const int_type&amp; c1, const int_type&amp; c2);<br />
-T     static int_type eof();<br />
-    };<br />
-<br />
-   21.1.3.2  struct             [lib.char.traits.specializations.wchar.t]<br />
-       char_traits&lt;wchar_t&gt;<br />
-<br />
-V   template&lt;&gt;<br />
-    struct char_traits&lt;wchar_t&gt; {<br />
-V     typedef wchar_t      char_type;<br />
-V     typedef wint_t       int_type;<br />
-V     typedef streamoff   off_type;<br />
-V     typedef wstreampos   pos_type;<br />
-V     typedef mbstate_t    state_type;<br />
-<br />
-V     static void assign(char_type&amp; c1, const char_type&amp; c2);<br />
-V     static bool eq(const char_type&amp; c1, const char_type&amp; c2);<br />
-V     static bool lt(const char_type&amp; c1, const char_type&amp; c2);<br />
-<br />
-V     static int compare(const char_type* s1, const char_type* s2, size_t n);<br />
-V     static size_t length(const char_type* s);<br />
-V     static const char_type* find(const char_type* s, size_t n,<br />
-                                   const char_type&amp; a);<br />
-V     static char_type* move(char_type* s1, const char_type* s2, size_t n);<br />
-V     static char_type* copy(char_type* s1, const char_type* s2, size_t n);<br />
-V     static char_type* assign(char_type* s, size_t n, char_type a);<br />
-<br />
-V     static int_type not_eof(const int_type&amp; c);<br />
-V     static char_type to_char_type(const int_type&amp; c);<br />
-V     static int_type to_int_type(const char_type&amp; c);<br />
-V     static bool eq_int_type(const int_type&amp; c1, const int_type&amp; c2);<br />
-V     static int_type eof();<br />
-    };<br />
-<br />
-   21.2  String classes                              [lib.string.classes]<br />
-<br />
-    // _lib.char.traits_, character traits:<br />
-V   template&lt;class charT&gt;<br />
-      struct char_traits;<br />
-V   template &lt;&gt; struct char_traits&lt;char&gt;;<br />
-V   template &lt;&gt; struct char_traits&lt;wchar_t&gt;;<br />
-<br />
-    // _lib.basic.string_, basic_string:<br />
-V   template&lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-             class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_string;<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                  const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(const charT* lhs,<br />
-                  const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(charT lhs, const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                  const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs, charT rhs);<br />
-<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator==(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator==(const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator==(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator!=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator!=(const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator!=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt; (const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt; (const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt;=(const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt;=(const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-<br />
-    // _lib.string.special_:<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-       void swap(basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                 basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-     basic_istream&lt;charT,traits&gt;&amp;<br />
-      operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp; is,<br />
-                 basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
-T   template&lt;class charT, class traits, class Allocator&gt;<br />
-     basic_ostream&lt;charT, traits&gt;&amp;<br />
-      operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp; os,<br />
-                 const basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-     basic_istream&lt;charT,traits&gt;&amp;<br />
-       getline(basic_istream&lt;charT,traits&gt;&amp; is,<br />
-               basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-               charT delim);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-     basic_istream&lt;charT,traits&gt;&amp;<br />
-       getline(basic_istream&lt;charT,traits&gt;&amp; is,<br />
-               basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
-V   typedef basic_string&lt;char&gt; string;<br />
-T   typedef basic_string&lt;wchar_t&gt; wstring;<br />
-   }<br />
-<br />
-   21.3  Template class basic_string                   [lib.basic.string]<br />
-<br />
-V  namespace std {<br />
-    template&lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-             class Allocator = allocator&lt;charT&gt; &gt;<br />
-    class basic_string {<br />
-    public:<br />
-      // types:<br />
-      typedef          traits                     traits_type;<br />
-      typedef typename traits::char_type          value_type;<br />
-      typedef          Allocator                  allocator_type;<br />
-      typedef typename Allocator::size_type       size_type;<br />
-      typedef typename Allocator::difference_type difference_type;<br />
-      typedef typename Allocator::reference       reference;<br />
-      typedef typename Allocator::const_reference const_reference;<br />
-      typedef typename Allocator::pointer         pointer;<br />
-      typedef typename Allocator::const_pointer   const_pointer;<br />
-      typedef implementation defined             iterator;<br />
-      typedef implementation defined             const_iterator;<br />
-      typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;<br />
-      typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      static const size_type npos = -1;<br />
-<br />
-      // _lib.string.cons_ construct/copy/destroy:<br />
-V     explicit basic_string(const Allocator&amp; a = Allocator());<br />
-V     basic_string(const basic_string&amp; str, size_type pos = 0,<br />
-                   size_type n = npos, const Allocator&amp; a = Allocator());<br />
-V     basic_string(const charT* s,<br />
-                   size_type n, const Allocator&amp; a = Allocator());<br />
-V     basic_string(const charT* s, const Allocator&amp; a = Allocator());<br />
-V     basic_string(size_type n, charT c, const Allocator&amp; a = Allocator());<br />
-V     template&lt;class InputIterator&gt;<br />
-        basic_string(InputIterator begin, InputIterator end,<br />
-                     const Allocator&amp; a = Allocator());<br />
-V    ~basic_string();<br />
-V     basic_string&amp; operator=(const basic_string&amp; str);<br />
-V     basic_string&amp; operator=(const charT* s);<br />
-V     basic_string&amp; operator=(charT c);<br />
-      // _lib.string.iterators_ iterators:<br />
-V     iterator       begin();<br />
-V     const_iterator begin() const;<br />
-V     iterator       end();<br />
-V     const_iterator end() const;<br />
-<br />
-V     reverse_iterator       rbegin();<br />
-V     const_reverse_iterator rbegin() const;<br />
-V     reverse_iterator       rend();<br />
-V     const_reverse_iterator rend() const;<br />
-      // _lib.string.capacity_ capacity:<br />
-V     size_type size() const;<br />
-V     size_type length() const;<br />
-V     size_type max_size() const;<br />
-V     void resize(size_type n, charT c);<br />
-V     void resize(size_type n);<br />
-V     size_type capacity() const;<br />
-V     void reserve(size_type res_arg = 0);<br />
-V     void clear();<br />
-V     bool empty() const;<br />
-      // _lib.string.access_ element access:<br />
-V     const_reference operator[](size_type pos) const;<br />
-V     reference       operator[](size_type pos);<br />
-V     const_reference at(size_type n) const;<br />
-V     reference       at(size_type n);<br />
-      // _lib.string.modifiers_ modifiers:<br />
-V     basic_string&amp; operator+=(const basic_string&amp; str);<br />
-V     basic_string&amp; operator+=(const charT* s);<br />
-V     basic_string&amp; operator+=(charT c);<br />
-V     basic_string&amp; append(const basic_string&amp; str);<br />
-V     basic_string&amp; append(const basic_string&amp; str, size_type pos,<br />
-                           size_type n);<br />
-V     basic_string&amp; append(const charT* s, size_type n);<br />
-V     basic_string&amp; append(const charT* s);<br />
-V     basic_string&amp; append(size_type n, charT c);<br />
-V     template&lt;class InputIterator&gt;<br />
-        basic_string&amp; append(InputIterator first, InputIterator last);<br />
-V     void push_back(const charT);<br />
-<br />
-V     basic_string&amp; assign(const basic_string&amp;);<br />
-V     basic_string&amp; assign(const basic_string&amp; str, size_type pos,<br />
-                           size_type n);<br />
-V     basic_string&amp; assign(const charT* s, size_type n);<br />
-V     basic_string&amp; assign(const charT* s);<br />
-V     basic_string&amp; assign(size_type n, charT c);<br />
-V     template&lt;class InputIterator&gt;<br />
-        basic_string&amp; assign(InputIterator first, InputIterator last);<br />
-V     basic_string&amp; insert(size_type pos1, const basic_string&amp; str);<br />
-V     basic_string&amp; insert(size_type pos1, const basic_string&amp; str,<br />
-                           size_type pos2, size_type n);<br />
-V     basic_string&amp; insert(size_type pos, const charT* s, size_type n);<br />
-V     basic_string&amp; insert(size_type pos, const charT* s);<br />
-V     basic_string&amp; insert(size_type pos, size_type n, charT c);<br />
-V     iterator insert(iterator p, charT c);<br />
-V     void     insert(iterator p, size_type n, charT c);<br />
-V     template&lt;class InputIterator&gt;<br />
-        void insert(iterator p, InputIterator first, InputIterator last);<br />
-V     basic_string&amp; erase(size_type pos = 0, size_type n = npos);<br />
-V     iterator erase(iterator position);<br />
-V     iterator erase(iterator first, iterator last);<br />
-V     basic_string&amp; replace(size_type pos1, size_type n1,<br />
-                            const basic_string&amp; str);<br />
-V     basic_string&amp; replace(size_type pos1, size_type n1,<br />
-                            const basic_string&amp; str,<br />
-                            size_type pos2, size_type n2);<br />
-V     basic_string&amp; replace(size_type pos, size_type n1, const charT* s,<br />
-                            size_type n2);<br />
-V     basic_string&amp; replace(size_type pos, size_type n1, const charT* s);<br />
-V     basic_string&amp; replace(size_type pos, size_type n1, size_type n2,<br />
-                            charT c);<br />
-V     basic_string&amp; replace(iterator i1, iterator i2, const basic_string&amp; str);<br />
-V     basic_string&amp; replace(iterator i1, iterator i2, const charT* s,<br />
-                            size_type n);<br />
-V     basic_string&amp; replace(iterator i1, iterator i2, const charT* s);<br />
-V     basic_string&amp; replace(iterator i1, iterator i2,<br />
-                            size_type n, charT c);<br />
-V     template&lt;class InputIterator&gt;<br />
-        basic_string&amp; replace(iterator i1, iterator i2,<br />
-                              InputIterator j1, InputIterator j2);<br />
-V     size_type copy(charT* s, size_type n, size_type pos = 0) const;<br />
-V     void swap(basic_string&lt;charT,traits,Allocator&gt;&amp;);<br />
-      // _lib.string.ops_ string operations:<br />
-V     const charT* c_str() const;         // explicit<br />
-V     const charT* data() const;<br />
-V     allocator_type get_allocator() const;<br />
-V     size_type find (const basic_string&amp; str, size_type pos = 0) const;<br />
-V     size_type find (const charT* s, size_type pos, size_type n) const;<br />
-V     size_type find (const charT* s, size_type pos = 0) const;<br />
-V     size_type find (charT c, size_type pos = 0) const;<br />
-V     size_type rfind(const basic_string&amp; str, size_type pos = npos) const;<br />
-V     size_type rfind(const charT* s, size_type pos, size_type n) const;<br />
-V     size_type rfind(const charT* s, size_type pos = npos) const;<br />
-V     size_type rfind(charT c, size_type pos = npos) const;<br />
-<br />
-V     size_type find_first_of(const basic_string&amp; str,<br />
-                              size_type pos = 0) const;<br />
-V     size_type find_first_of(const charT* s,<br />
-                              size_type pos, size_type n) const;<br />
-V     size_type find_first_of(const charT* s, size_type pos = 0) const;<br />
-V     size_type find_first_of(charT c, size_type pos = 0) const;<br />
-V     size_type find_last_of (const basic_string&amp; str,<br />
-                              size_type pos = npos) const;<br />
-V     size_type find_last_of (const charT* s,<br />
-                              size_type pos, size_type n) const;<br />
-V     size_type find_last_of (const charT* s, size_type pos = npos) const;<br />
-V     size_type find_last_of (charT c, size_type pos = npos) const;<br />
-V     size_type find_first_not_of(const basic_string&amp; str,<br />
-                                  size_type pos = 0) const;<br />
-V     size_type find_first_not_of(const charT* s, size_type pos,<br />
-                                  size_type n) const;<br />
-V     size_type find_first_not_of(const charT* s, size_type pos = 0) const;<br />
-V     size_type find_first_not_of(charT c, size_type pos = 0) const;<br />
-V     size_type find_last_not_of (const basic_string&amp; str,<br />
-                                  size_type pos = npos) const;<br />
-V     size_type find_last_not_of (const charT* s, size_type pos,<br />
-                                  size_type n) const;<br />
-V     size_type find_last_not_of (const charT* s,<br />
-                                  size_type pos = npos) const;<br />
-V     size_type find_last_not_of (charT c, size_type pos = npos) const;<br />
-V     basic_string substr(size_type pos = 0, size_type n = npos) const;<br />
-V     int compare(const basic_string&amp; str) const;<br />
-V     int compare(size_type pos1, size_type n1,<br />
-                  const basic_string&amp; str) const;<br />
-V     int compare(size_type pos1, size_type n1,<br />
-                  const basic_string&amp; str,<br />
-                  size_type pos2, size_type n2) const;<br />
-V     int compare(const charT* s) const;<br />
-V     int compare(size_type pos1, size_type n1,<br />
-                  const charT* s, size_type n2 = npos) const;<br />
-    };<br />
-   }<br />
-<br />
-   21.4  Null-terminated sequence utilities               [lib.c.strings]<br />
-<br />
-                    Table 10--Header &lt;cctype&gt; synopsis<br />
-<br />
-            isalnum   isdigit   isprint   isupper    tolower<br />
-X           isalpha   isgraph   ispunct   isxdigit   toupper<br />
-            iscntrl   islower   isspace<br />
-<br />
-                   Table 11--Header &lt;cwctype&gt; synopsis<br />
-<br />
-X  Macro:     WEOF &lt;cwctype&gt;<br />
-X  Types:     wctrans_t   wctype_t   wint_t &lt;cwctype&gt;<br />
-   Functions:<br />
-X  iswalnum   iswctype    iswlower   iswspace    towctrans   wctrans<br />
-X  iswalpha   iswdigit    iswprint   iswupper    towlower    wctype<br />
-X  iswcntrl   iswgraph    iswpunct   iswxdigit   towupper<br />
-<br />
-                   Table 12--Header &lt;cstring&gt; synopsis<br />
-<br />
-X           Macro:    NULL &lt;cstring&gt;<br />
-X           Type:     size_t &lt;cstring&gt;<br />
-            Functions:<br />
-X           memchr    strcat    strcspn    strncpy   strtok<br />
-X           memcmp    strchr    strerror   strpbrk   strxfrm<br />
-X           memcpy    strcmp    strlen     strrchr<br />
-X           memmove   strcoll   strncat    strspn<br />
-X           memset    strcpy    strncmp    strstr<br />
-<br />
-                    Table 13--Header &lt;cwchar&gt; synopsis<br />
-   Macros:    NULL &lt;cwchar&gt;   WCHAR_MAX         WCHAR_MIN   WEOF &lt;cwchar&gt;<br />
-   Types:     mbstate_t       wint_t &lt;cwchar&gt;   size_t<br />
-   Functions:<br />
-X  btowc      getwchar        ungetwc           wcscpy      wcsrtombs   wmemchr<br />
-X  fgetwc     mbrlen          vfwprintf         wcscspn     wcsspn      wmemcmp<br />
-X  fgetws     mbrtowc         vswprintf         wcsftime    wcsstr      wmemcpy<br />
-X  fputwc     mbsinit         vwprintf          wcslen      wcstod      wmemmove<br />
-X  fputws     mbsrtowcs       wcrtomb           wcsncat     wcstok      wmemset<br />
-X  fwide      putwc           wcscat            wcsncmp     wcstol      wprintf<br />
-X  fwprintf   putwchar        wcschr            wcsncpy     wcstoul     wscanf<br />
-X  fwscanf    swprintf        wcscmp            wcspbrk     wcsxfrm<br />
-X  getwc      swscanf         wcscoll           wcsrchr     wctob<br />
-<br />
-                   Table 14--Header &lt;cstdlib&gt; synopsis<br />
-<br />
-               Macros:   MB_CUR_MAX<br />
-               Functions:<br />
-X              atol      mblen        strtod    wctomb<br />
-X              atof      mbstowcs     strtol    wcstombs<br />
-X              atoi      mbtowc       strtoul<br />
-<br />
-X  const char* strchr(const char* s, int c);<br />
-X       char* strchr(      char* s, int c);<br />
-<br />
-X  const char* strpbrk(const char* s1, const char* s2);<br />
-X       char* strpbrk(      char* s1, const char* s2);<br />
-<br />
-X  const char* strrchr(const char* s, int c);<br />
-X       char* strrchr(      char* s, int c);<br />
-<br />
-X  const char* strstr(const char* s1, const char* s2);<br />
-X       char* strstr(      char* s1, const char* s2);<br />
-<br />
-X  const void* memchr(const void* s, int c, size_t n);<br />
-X       void* memchr(      void* s, int c, size_t n);<br />
-<br />
-X  const wchar_t* wcschr(const wchar_t* s, wchar_t c);<br />
-X       wchar_t* wcschr(      wchar_t* s, wchar_t c);<br />
-<br />
-X  const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);<br />
-X       wchar_t* wcspbrk(      wchar_t* s1, const wchar_t* s2);<br />
-<br />
-X  const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);<br />
-X       wchar_t* wcsrchr(      wchar_t* s, wchar_t c);<br />
-<br />
-X  const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);<br />
-X       wchar_t* wcsstr(      wchar_t* s1, const wchar_t* s2);<br />
-<br />
-X  const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);<br />
-X       wchar_t* wmemchr(      wchar_t* s, wchar_t c, size_t n);<br />
-<br />
-   [for initial efforts on the above, see shadow/string.h]<br />
-<br />
-   22.1  Locales                                            [lib.locales]<br />
-<br />
-   Header &lt;locale&gt; synopsis<br />
-<br />
-    // _lib.locale_, locale:<br />
-T   class locale;<br />
-T   template &lt;class Facet&gt; const Facet&amp; use_facet(const locale&amp;);<br />
-T   template &lt;class Facet&gt; bool         has_facet(const locale&amp;) throw();<br />
-<br />
-    // _lib.locale.convenience_, convenience interfaces:<br />
-T   template &lt;class charT&gt; bool isspace (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isprint (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool iscntrl (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isupper (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool islower (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isalpha (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isdigit (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool ispunct (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isxdigit(charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isalnum (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isgraph (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; charT toupper(charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; charT tolower(charT c, const locale&amp; loc);<br />
-    // _lib.category.ctype_ and _lib.facet.ctype.special_, ctype:<br />
-    class ctype_base;<br />
-T   template &lt;class charT&gt; class ctype;<br />
-T   template &lt;&gt;            class ctype&lt;char&gt;;             // specialization<br />
-S   template &lt;class charT&gt; class ctype_byname;<br />
-S   template &lt;&gt;            class ctype_byname&lt;char&gt;;      // specialization<br />
-T   class codecvt_base;<br />
-X   template &lt;class internT, class externT, class stateT&gt; class codecvt;<br />
-S   template &lt;class internT, class externT, class stateT&gt; class codecvt_byname;<br />
-    // _lib.category.numeric_ and _lib.facet.numpunct_, numeric:<br />
-X   template &lt;class charT, class InputIterator&gt;  class num_get;<br />
-X   template &lt;class charT, class OutputIterator&gt; class num_put;<br />
-T   template &lt;class charT&gt; class numpunct;<br />
-S   template &lt;class charT&gt; class numpunct_byname;<br />
-    // _lib.category.collate_, collation:<br />
-T   template &lt;class charT&gt; class collate;<br />
-S   template &lt;class charT&gt; class collate_byname;<br />
-    // _lib.category.time_, date and time:<br />
-T   class time_base;<br />
-S   template &lt;class charT, class InputIterator&gt;  class time_get;<br />
-S   template &lt;class charT, class InputIterator&gt;  class time_get_byname;<br />
-S   template &lt;class charT, class OutputIterator&gt; class time_put;<br />
-S   template &lt;class charT, class OutputIterator&gt; class time_put_byname;<br />
-    // _lib.category.monetary_, money:<br />
-T   class money_base;<br />
-S   template &lt;class charT, class InputIterator&gt;  class money_get;<br />
-S   template &lt;class charT, class OutputIterator&gt; class money_put;<br />
-S   template &lt;class charT, bool Intl&gt; class moneypunct;<br />
-S   template &lt;class charT, bool Intl&gt; class moneypunct_byname;<br />
-    // _lib.category.messages_, message retrieval:<br />
-T   class messages_base;<br />
-S   template &lt;class charT&gt; class messages;<br />
-S   template &lt;class charT&gt; class messages_byname;<br />
-<br />
-<br />
-   22.1.1  Class locale                                      [lib.locale]<br />
-<br />
-X   class locale {<br />
-    public:<br />
-      // types:<br />
-T     class facet;<br />
-T     class id;<br />
-T     typedef int category;<br />
-T     static const category   // values assigned here are for exposition only<br />
-T       none     = 0,<br />
-T       collate  = 0x010, ctype    = 0x020,<br />
-T       monetary = 0x040, numeric  = 0x080,<br />
-T       time     = 0x100, messages = 0x200,<br />
-T       all = collate | ctype | monetary | numeric | time  | messages;<br />
-      // construct/copy/destroy:<br />
-T     locale() throw()<br />
-T     locale(const locale&amp; other) throw()<br />
-X     explicit locale(const char* std_name);<br />
-X     locale(const locale&amp; other, const char* std_name, category);<br />
-T     template &lt;class Facet&gt; locale(const locale&amp; other, Facet* f);<br />
-T     locale(const locale&amp; other, const locale&amp; one, category);<br />
-T    ~locale() throw();           // non-virtual<br />
-T     const locale&amp; operator=(const locale&amp; other) throw();<br />
-T     template &lt;class Facet&gt; locale combine(const locale&amp; other) const;<br />
-      // locale operations:<br />
-X     basic_string&lt;char&gt;                  name() const;<br />
-T     bool operator==(const locale&amp; other) const;<br />
-T     bool operator!=(const locale&amp; other) const;<br />
-T     template &lt;class charT, class Traits, class Allocator&gt;<br />
-        bool operator()(const basic_string&lt;charT,Traits,Allocator&gt;&amp; s1,<br />
-                        const basic_string&lt;charT,Traits,Allocator&gt;&amp; s2) const;<br />
-      // global locale objects:<br />
-T     static       locale  global(const locale&amp;);<br />
-T     static const locale&amp; classic();<br />
-    };<br />
-<br />
-   22.1.1.1  locale types                              [lib.locale.types]<br />
-<br />
-   22.1.1.1.1  Type locale::category                [lib.locale.category]<br />
-<br />
-T  typedef int category;<br />
-<br />
-T   none, collate, ctype, monetary, numeric, time, and messages<br />
-<br />
-      [required locale members]<br />
-T     collate&lt;char&gt;, collate&lt;wchar_t&gt;<br />
-T     ctype&lt;char&gt;, ctype&lt;wchar_t&gt;<br />
-T     codecvt&lt;char,char,mbstate_t&gt;,<br />
-S     codecvt&lt;wchar_t,char,mbstate_t&gt;<br />
-T     moneypunct&lt;char&gt;, moneypunct&lt;wchar_t&gt;<br />
-T     moneypunct&lt;char,true&gt;, moneypunct&lt;wchar_t,true&gt;,<br />
-S     money_get&lt;char&gt;, money_get&lt;wchar_t<br />
-S     money_put&lt;char&gt;, money_put&lt;wchar_t&gt;<br />
-T     numpunct&lt;char&gt;, numpunct&lt;wchar_t&gt;,<br />
-X     num_get&lt;char&gt;, num_get&lt;wchar_t&gt;<br />
-X     num_put&lt;char&gt;, num_put&lt;wchar_t&gt;<br />
-S     time_get&lt;char&gt;, time_get&lt;wchar_t&gt;,<br />
-S     time_put&lt;char&gt;, time_put&lt;wchar_t&gt;<br />
-S     messages&lt;char&gt;, messages&lt;wchar_t&gt;<br />
-<br />
-      [required instantiations]<br />
-S    collate_byname&lt;char&gt;, collate_byname&lt;wchar_t&gt;<br />
-S    ctype_byname&lt;char&gt;, ctype_byname&lt;wchar_t&gt;<br />
-S    codecvt_byname&lt;char,char,mbstate_t&gt;,<br />
-S    codecvt_byname&lt;wchar_t,char,mbstate_t&gt;<br />
-S    moneypunct_byname&lt;char,International&gt;,<br />
-S    moneypunct_byname&lt;wchar_t,International&gt;,<br />
-S    money_get&lt;C,InputIterator&gt;,<br />
-S    money_put&lt;C,OutputIterator&gt;<br />
-S    numpunct_byname&lt;char&gt;, numpunct_byname&lt;wchar_t&gt;<br />
-X    num_get&lt;C,InputIterator&gt;, num_put&lt;C,OutputIterator&gt;<br />
-S    time_get&lt;char,InputIterator&gt;,<br />
-S    time_get_byname&lt;char,InputIterator&gt;,<br />
-S    time_get&lt;wchar_t,OutputIterator&gt;,<br />
-S    time_get_byname&lt;wchar_t,OutputIterator&gt;,<br />
-S    time_put&lt;char,OutputIterator&gt;,<br />
-S    time_put_byname&lt;char,OutputIterator&gt;,<br />
-S    time_put&lt;wchar_t,OutputIterator&gt;<br />
-S    time_put_byname&lt;wchar_t,OutputIterator&gt;<br />
-S    messages_byname&lt;char&gt;, messages_byname&lt;wchar_t&gt;<br />
-<br />
-<br />
-   22.1.1.1.2  Class locale::facet                     [lib.locale.facet]<br />
-<br />
-T   class locale::facet {<br />
-    protected:<br />
-T     explicit facet(size_t refs = 0);<br />
-T     virtual ~facet();<br />
-    private:<br />
-T     facet(const facet&amp;);                // not defined<br />
-T     void operator=(const facet&amp;);       // not defined<br />
-    };<br />
-   }<br />
-<br />
-<br />
-   22.1.1.1.3  Class locale::id                           [lib.locale.id]<br />
-<br />
-T   class locale::id {<br />
-    public:<br />
-T     id();<br />
-    private:<br />
-T     void operator=(const id&amp;);  // not defined<br />
-T     id(const id&amp;);              // not defined<br />
-    };<br />
-   }<br />
-<br />
-<br />
-   22.2.1  The ctype category                        [lib.category.ctype]<br />
-<br />
-T   class ctype_base {<br />
-    public:<br />
-T     enum mask {         // numeric values are for exposition only.<br />
-T       space=, print=, cntrl=, upper=, lower=,<br />
-T       alpha=, digit=, punct=, xdigit=,<br />
-T       alnum=, graph=<br />
-      };<br />
-    };<br />
-<br />
-<br />
-   22.2.1.1  Template class ctype                      [lib.locale.ctype]<br />
-<br />
-T   template &lt;class charT&gt;<br />
-    class ctype : public locale::facet, public ctype_base {<br />
-    public:<br />
-T     typedef charT char_type;<br />
-T     explicit ctype(size_t refs = 0);<br />
-T     bool         is(mask m, charT c) const;<br />
-T     const charT* is(const charT* low, const charT* high, mask* vec) const;<br />
-T     const charT* scan_is(mask m,<br />
-                           const charT* low, const charT* high) const;<br />
-T     const charT* scan_not(mask m,<br />
-                            const charT* low, const charT* high) const;<br />
-T     charT        toupper(charT c) const;<br />
-T     const charT* toupper(charT* low, const charT* high) const;<br />
-T     charT        tolower(charT c) const;<br />
-T     const charT* tolower(charT* low, const charT* high) const;<br />
-T     charT        widen(char c) const;<br />
-T     const char*  widen(const char* low, const char* high, charT* to) const;<br />
-T     char         narrow(charT c, char dfault) const;<br />
-T     const charT* narrow(const charT* low, const charT*, char dfault,<br />
-                          char* to) const;<br />
-T     static locale::id id;<br />
-<br />
-    protected:<br />
-T    ~ctype();                    // virtual<br />
-T     virtual bool         do_is(mask m, charT c) const;<br />
-T     virtual const charT* do_is(const charT* low, const charT* high,<br />
-                                 mask* vec) const;<br />
-T     virtual const charT* do_scan_is(mask m,<br />
-                              const charT* low, const charT* high) const;<br />
-T     virtual const charT* do_scan_not(mask m,<br />
-                              const charT* low, const charT* high) const;<br />
-T     virtual charT        do_toupper(charT) const;<br />
-T     virtual const charT* do_toupper(charT* low, const charT* high) const;<br />
-T     virtual charT        do_tolower(charT) const;<br />
-T     virtual const charT* do_tolower(charT* low, const charT* high) const;<br />
-T     virtual charT        do_widen(char) const;<br />
-T     virtual const char*  do_widen(const char* low, const char* high,<br />
-                                    charT* dest) const;<br />
-T     virtual char         do_narrow(charT, char dfault) const;<br />
-T     virtual const charT* do_narrow(const charT* low, const charT* high,<br />
-                                     char dfault, char* dest) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.1.2  Template class ctype_byname        [lib.locale.ctype.byname]<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class ctype_byname : public ctype&lt;charT&gt; {<br />
-    public:<br />
-T     typedef ctype&lt;charT&gt;::mask mask;<br />
-S     explicit ctype_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~ctype_byname();             // virtual<br />
-S     virtual bool         do_is(mask m, charT c) const;<br />
-S     virtual const charT* do_is(const charT* low, const charT* high,<br />
-                                 mask* vec) const;<br />
-S     virtual const char*  do_scan_is(mask m,<br />
-                               const charT* low, const charT* high) const;<br />
-S     virtual const char*  do_scan_not(mask m,<br />
-                               const charT* low, const charT* high) const;<br />
-S     virtual charT        do_toupper(charT) const;<br />
-S     virtual const charT* do_toupper(charT* low, const charT* high) const;<br />
-S     virtual charT        do_tolower(charT) const;<br />
-S     virtual const charT* do_tolower(charT* low, const charT* high) const;<br />
-S     virtual charT        do_widen(char) const;<br />
-S     virtual const char*  do_widen(const char* low, const char* high,<br />
-                                    charT* dest) const;<br />
-S     virtual char         do_narrow(charT, char dfault) const;<br />
-S     virtual const charT* do_narrow(const charT* low, const charT* high,<br />
-                                     char dfault, char* dest) const;<br />
-    };<br />
-<br />
-   22.2.1.3  ctype specializations              [lib.facet.ctype.special]<br />
-<br />
-T   template &lt;&gt; class ctype&lt;char&gt;<br />
-      : public locale::facet, public ctype_base {<br />
-    public:<br />
-T     typedef char char_type;<br />
-T     explicit ctype(const mask* tab = 0, bool del = false,<br />
-                     size_t refs = 0);<br />
-T     bool is(mask m, char c) const;<br />
-T     const char* is(const char* low, const char* high, mask* vec) const;<br />
-T     const char* scan_is (mask m,<br />
-                           const char* low, const char* high) const;<br />
-T     const char* scan_not(mask m,<br />
-                           const char* low, const char* high) const;<br />
-T     char        toupper(char c) const;<br />
-T     const char* toupper(char* low, const char* high) const;<br />
-T     char        tolower(char c) const;<br />
-T     const char* tolower(char* low, const char* high) const;<br />
-T     char  widen(char c) const;<br />
-T     const char* widen(const char* low, const char* high, char* to) const;<br />
-T     char  narrow(char c, char dfault) const;<br />
-T     const char* narrow(const char* low, const char* high, char dfault,<br />
-                         char* to) const;<br />
-T     static locale::id id;<br />
-T     static const size_t table_size = IMPLEMENTATION_DEFINED;<br />
-<br />
-    protected:<br />
-T     const mask* table() const throw();<br />
-T     static const mask* classic_table() throw();<br />
-T    ~ctype();                    // virtual<br />
-T     virtual char        do_toupper(char c) const;<br />
-T     virtual const char* do_toupper(char* low, const char* high) const;<br />
-T     virtual char        do_tolower(char c) const;<br />
-T     virtual const char* do_tolower(char* low, const char* high) const;<br />
-<br />
-T     virtual char        do_widen(char c) const;<br />
-T     virtual const char* do_widen(const char* low,<br />
-                                   const char* high,<br />
-                                   char* to) const;<br />
-T     virtual char        do_narrow(char c, char dfault) const;<br />
-T     virtual const char* do_narrow(const char* low,<br />
-                                    const char* high,<br />
-                                    char dfault, char* to) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.1.4  Class                      [lib.locale.ctype.byname.special]<br />
-       ctype_byname&lt;char&gt;<br />
-<br />
-X   template &lt;&gt; class ctype_byname&lt;char&gt; : public ctype&lt;char&gt; {<br />
-    public:<br />
-S     explicit ctype_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~ctype_byname();             // virtual<br />
-S     virtual char        do_toupper(char c) const;<br />
-S     virtual const char* do_toupper(char* low, const char* high) const;<br />
-S     virtual char        do_tolower(char c) const;<br />
-S     virtual const char* do_tolower(char* low, const char* high) const;<br />
-<br />
-S     virtual char        do_widen(char c) const;<br />
-S     virtual const char* do_widen(char* low,<br />
-                                   const char* high,<br />
-                                   char* to) const;<br />
-S     virtual char        do_widen(char c) const;<br />
-S     virtual const char* do_widen(char* low, const char* high) const;<br />
-<br />
-    };<br />
-<br />
-<br />
-<br />
-   22.2.1.5  Template class codecvt                  [lib.locale.codecvt]<br />
-<br />
-T  class codecvt_base {<br />
-   public:<br />
-T   enum result { ok, partial, error, noconv };<br />
-   };<br />
-<br />
-T  template &lt;class internT, class externT, class stateT&gt;<br />
-   class codecvt : public locale::facet, public codecvt_base {<br />
-   public:<br />
-T   typedef internT  intern_type;<br />
-T   typedef externT  extern_type;<br />
-T   typedef stateT state_type;<br />
-T   explicit codecvt(size_t refs = 0)<br />
-T   result out(stateT&amp; state,<br />
-     const internT* from, const internT* from_end, const internT*&amp; from_next,<br />
-           externT*   to,       externT* to_limit, externT*&amp; to_next) const;<br />
-T   result unshift(stateT&amp; state,<br />
-           externT*   to,        externT* to_limit, externT*&amp; to_next) const;<br />
-T   result in(stateT&amp; state,<br />
-     const externT* from, const externT* from_end, const externT*&amp; from_next,<br />
-           internT*   to,       internT* to_limit, internT*&amp; to_next) const;<br />
-T   int encoding() const throw();<br />
-T   bool always_noconv() const throw();<br />
-T   int length(const stateT&amp;, const externT* from, const externT* end,<br />
-               size_t max) const;<br />
-T   int max_length() const throw();<br />
-T   static locale::id id;<br />
-<br />
-   protected:<br />
-T   ~codecvt();                   // virtual<br />
-T   virtual result do_out(stateT&amp; state,<br />
-     const internT* from, const internT* from_end, const internT*&amp; from_next,<br />
-           externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
-T   virtual result do_in(stateT&amp; state,<br />
-T    const externT* from, const externT* from_end, const externT*&amp; from_next,<br />
-           internT* to,         internT* to_limit, internT*&amp; to_next) const;<br />
-T   virtual result do_unshift(stateT&amp; state,<br />
-           externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
-T   virtual int do_encoding() const throw();<br />
-T   virtual bool do_always_noconv() const throw();<br />
-T   virtual int do_length(const stateT&amp;, const externT* from,<br />
-                          const externT* end, size_t max) const;<br />
-T   virtual int do_max_length() const throw();<br />
-   };<br />
-   }<br />
-<br />
-<br />
-   22.2.1.6  Template class                   [lib.locale.codecvt.byname]<br />
-       codecvt_byname<br />
-<br />
-X  template &lt;class internT, class externT, class stateT&gt;<br />
-   class codecvt_byname : public codecvt&lt;internT, externT, stateT&gt; {<br />
-   public:<br />
-S   explicit codecvt_byname(const char*, size_t refs = 0);<br />
-   protected:<br />
-S  ~codecvt_byname();             // virtual<br />
-S   virtual result do_out(stateT&amp; state,<br />
-      const internT* from, const internT* from_end, const internT*&amp; from_next,<br />
-            externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
-S   virtual result do_in(stateT&amp; state,<br />
-      const externT* from, const externT* from_end, const externT*&amp; from_next,<br />
-            internT* to,         internT* to_limit, internT*&amp; to_next) const;<br />
-S   virtual result do_unshift(stateT&amp; state,<br />
-            externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
-S   virtual int do_encoding() const throw();<br />
-S   virtual bool do_always_noconv() const throw();<br />
-S   virtual int do_length(const stateT&amp;, const externT* from,<br />
-                          const externT* end, size_t max) const;<br />
-S   virtual result do_unshift(stateT&amp; state,<br />
-           externT* to, externT* to_limit, externT*&amp; to_next) const;<br />
-S   virtual int do_max_length() const throw();<br />
-    };<br />
-<br />
-<br />
-   22.2.2.1  Template class num_get                  [lib.locale.num.get]<br />
-<br />
-X   template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
-    class num_get : public locale::facet {<br />
-    public:<br />
-T     typedef charT            char_type;<br />
-T     typedef InputIterator    iter_type;<br />
-T     explicit num_get(size_t refs = 0);<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, bool&amp; v)           const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp; ,<br />
-                    ios_base::iostate&amp; err, long&amp; v)           const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, unsigned short&amp; v) const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, unsigned int&amp; v)   const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, unsigned long&amp; v)  const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, float&amp; v)          const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, double&amp; v)         const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, long double&amp; v)    const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, void*&amp; v)          const;<br />
-T     static locale::id id;<br />
-<br />
-    protected:<br />
-T    ~num_get();                  // virtual<br />
-T     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, bool&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, long&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, unsigned short&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, unsigned int&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, unsigned long&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, float&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, double&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, long double&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, void*&amp; v) const;<br />
-    };<br />
-<br />
-<br />
-<br />
-   22.2.2.2  Template class num_put                   [lib.locale.nm.put]<br />
-<br />
-X   template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
-    class num_put : public locale::facet {<br />
-    public:<br />
-T     typedef charT            char_type;<br />
-T     typedef OutputIterator   iter_type;<br />
-T     explicit num_put(size_t refs = 0);<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill, bool v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill, long v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    unsigned long v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    double v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    long double v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    const void* v) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~num_put();                  // virtual<br />
-T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               bool v) const;<br />
-T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               long v) const;<br />
-T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               unsigned long) const;<br />
-S     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               double v) const;<br />
-S     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               long double v) const;<br />
-T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               const void* v) const;<br />
-    };<br />
-   }<br />
-<br />
-   22.2.3.1  Template class numpunct                [lib.locale.numpunct]<br />
-<br />
-T   template &lt;class charT&gt;<br />
-    class numpunct : public locale::facet {<br />
-    public:<br />
-T     typedef charT               char_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit numpunct(size_t refs = 0);<br />
-T     char_type    decimal_point()   const;<br />
-T     char_type    thousands_sep()   const;<br />
-T     string       grouping()        const;<br />
-T     string_type  truename()        const;<br />
-T     string_type  falsename()       const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~numpunct();                 // virtual<br />
-T     virtual char_type    do_decimal_point() const;<br />
-T     virtual char_type    do_thousands_sep() const;<br />
-T     virtual string       do_grouping()      const;<br />
-T     virtual string_type  do_truename()      const;      // for bool<br />
-T     virtual string_type  do_falsename()     const;      // for bool<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   22.2.3.2  Template class                  [lib.locale.numpunct.byname]<br />
-       numpunct_byname<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class numpunct_byname : public numpunct&lt;charT&gt; {<br />
-   // this class is specialized for char and wchar_t.<br />
-    public:<br />
-T     typedef charT                char_type;<br />
-T     typedef basic_string&lt;charT&gt;  string_type;<br />
-S     explicit numpunct_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~numpunct_byname();          // virtual<br />
-S     virtual char_type    do_decimal_point() const;<br />
-S     virtual char_type    do_thousands_sep() const;<br />
-S     virtual string       do_grouping()      const;<br />
-S     virtual string_type  do_truename()      const;      // for bool<br />
-S     virtual string_type  do_falsename()     const;      // for bool<br />
-    };<br />
-<br />
-<br />
-   22.2.4.1  Template class collate                  [lib.locale.collate]<br />
-<br />
-T   template &lt;class charT&gt;<br />
-    class collate : public locale::facet {<br />
-    public:<br />
-T     typedef charT               char_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit collate(size_t refs = 0);<br />
-T     int compare(const charT* low1, const charT* high1,<br />
-                  const charT* low2, const charT* high2) const;<br />
-T     string_type transform(const charT* low, const charT* high) const;<br />
-T     long hash(const charT* low, const charT* high) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~collate();                  // virtual<br />
-T     virtual int    do_compare(const charT* low1, const charT* high1,<br />
-                                const charT* low2, const charT* high2) const;<br />
-T     virtual string_type do_transform<br />
-                               (const charT* low, const charT* high) const;<br />
-T     virtual long   do_hash   (const charT* low, const charT* high) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.4.2  Template class                   [lib.locale.collate.byname]<br />
-       collate_byname<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class collate_byname : public collate&lt;charT&gt; {<br />
-    public:<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit collate_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~collate_byname();           // virtual<br />
-S     virtual int    do_compare(const charT* low1, const charT* high1,<br />
-                                const charT* low2, const charT* high2) const;<br />
-S     virtual string_type do_transform<br />
-                               (const charT* low, const charT* high) const;<br />
-S     virtual long   do_hash   (const charT* low, const charT* high) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.5.1  Template class time_get                [lib.locale.time.get]<br />
-<br />
-T   class time_base {<br />
-    public:<br />
-T     enum dateorder { no_order, dmy, mdy, ymd, ydm };<br />
-    };<br />
-<br />
-    [Note: semantics of time_get members are implementation-defined.<br />
-     To complete implementation requires documenting behavior.]<br />
-<br />
-X   template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
-    class time_get : public locale::facet, public time_base {<br />
-    public:<br />
-T     typedef charT            char_type;<br />
-T     typedef InputIterator    iter_type;<br />
-T     explicit time_get(size_t refs = 0);<br />
-<br />
-T     dateorder date_order()  const { return do_date_order(); }<br />
-T     iter_type get_time(iter_type s, iter_type end, ios_base&amp; f,<br />
-                         ios_base::iostate&amp; err, tm* t)  const;<br />
-T     iter_type get_date(iter_type s, iter_type end, ios_base&amp; f,<br />
-                         ios_base::iostate&amp; err, tm* t)  const;<br />
-T     iter_type get_weekday(iter_type s, iter_type end, ios_base&amp; f,<br />
-                            ios_base::iostate&amp; err, tm* t) const;<br />
-T     iter_type get_monthname(iter_type s, iter_type end, ios_base&amp; f,<br />
-                              ios_base::iostate&amp; err, tm* t) const;<br />
-T     iter_type get_year(iter_type s, iter_type end, ios_base&amp; f,<br />
-                         ios_base::iostate&amp; err, tm* t) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-     ~time_get();                 // virtual<br />
-X     virtual dateorder do_date_order()  const;<br />
-S     virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&amp;,<br />
-                                       ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_monthname(iter_type s, ios_base&amp;,<br />
-                                         ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-    };<br />
-<br />
-<br />
-<br />
-   22.2.5.2  Template class                  [lib.locale.time.get.byname]<br />
-       time_get_byname<br />
-<br />
-X   template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
-    class time_get_byname : public time_get&lt;charT, InputIterator&gt; {<br />
-    public:<br />
-T     typedef time_base::dateorder dateorder;<br />
-T     typedef InputIterator        iter_type<br />
-<br />
-S     explicit time_get_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~time_get_byname();          // virtual<br />
-S     virtual dateorder do_date_order()  const;<br />
-S     virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-T     virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&amp;,<br />
-                                       ios_base::iostate&amp; err, tm* t) const;<br />
-T     virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&amp;,<br />
-                                         ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-    };<br />
-   }<br />
-<br />
-   22.2.5.3  Template class time_put                [lib.locale.time.put]<br />
-<br />
-X   template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
-    class time_put : public locale::facet {<br />
-    public:<br />
-T     typedef charT            char_type;<br />
-T     typedef OutputIterator   iter_type;<br />
-T     explicit time_put(size_t refs = 0);<br />
-      // the following is implemented in terms of other member functions.<br />
-S     iter_type put(iter_type s, ios_base&amp; f, char_type fill, const tm* tmb,<br />
-                    const charT* pattern, const charT* pat_end) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    const tm* tmb, char format, char modifier = 0) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~time_put();                 // virtual<br />
-S     virtual iter_type do_put(iter_type s, ios_base&amp;, char_type, const tm* t,<br />
-                               char format, char modifier) const;<br />
-    };<br />
-<br />
-<br />
-<br />
-   22.2.5.4  Template class                  [lib.locale.time.put.byname]<br />
-       time_put_byname<br />
-<br />
-T   template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
-    class time_put_byname : public time_put&lt;charT, OutputIterator&gt;<br />
-    {<br />
-    public:<br />
-T     typedef charT          char_type;<br />
-T     typedef OutputIterator iter_type;<br />
-<br />
-T     explicit time_put_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-T    ~time_put_byname();          // virtual<br />
-S     virtual iter_type do_put(iter_type s, ios_base&amp;, char_type, const tm* t,<br />
-                               char format, char modifier) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.6.1  Template class money_get              [lib.locale.money.get]<br />
-<br />
-X   template &lt;class charT,<br />
-              class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
-    class money_get : public locale::facet {<br />
-    public:<br />
-T     typedef charT               char_type;<br />
-T     typedef InputIterator       iter_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit money_get(size_t refs = 0);<br />
-T     iter_type get(iter_type s, iter_type end, bool intl,<br />
-                    ios_base&amp; f, ios_base::iostate&amp; err,<br />
-                    long double&amp; units) const;<br />
-T     iter_type get(iter_type s, iter_type end, bool intl,<br />
-                    ios_base&amp; f, ios_base::iostate&amp; err,<br />
-                    string_type&amp; digits) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~money_get();                // virtual<br />
-S     virtual iter_type do_get(iter_type, iter_type, bool, ios_base&amp;,<br />
-                       ios_base::iostate&amp; err, long double&amp; units) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, bool, ios_base&amp;,<br />
-                       ios_base::iostate&amp; err, string_type&amp; digits) const;<br />
-    };<br />
-<br />
-   22.2.6.2  Template class money_put              [lib.locale.money.put]<br />
-<br />
-X   template &lt;class charT,<br />
-              class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
-    class money_put : public locale::facet {<br />
-    public:<br />
-T     typedef charT               char_type;<br />
-T     typedef OutputIterator      iter_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit money_put(size_t refs = 0);<br />
-T     iter_type put(iter_type s, bool intl, ios_base&amp; f,<br />
-                    char_type fill, long double units) const;<br />
-T     iter_type put(iter_type s, bool intl, ios_base&amp; f,<br />
-                    char_type fill, const string_type&amp; digits) const;<br />
-T     static locale::id id;<br />
-<br />
-    protected:<br />
-T    ~money_put();                // virtual<br />
-S     virtual iter_type<br />
-        do_put(iter_type, bool, ios_base&amp;, char_type fill,<br />
-               long double units) const;<br />
-S     virtual iter_type<br />
-        do_put(iter_type, bool, ios_base&amp;, char_type fill,<br />
-               const string_type&amp; digits) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.6.3  Template class moneypunct            [lib.locale.moneypunct]<br />
-<br />
-T   class money_base {<br />
-    public:<br />
-T     enum part { none, space, symbol, sign, value };<br />
-T     struct pattern { char field[4]; };<br />
-    };<br />
-<br />
-X   template &lt;class charT, bool International = false&gt;<br />
-    class moneypunct : public locale::facet, public money_base {<br />
-    public:<br />
-T     typedef charT char_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit moneypunct(size_t refs = 0);<br />
-T     charT        decimal_point() const;<br />
-T     charT        thousands_sep() const;<br />
-T     string       grouping()      const;<br />
-T     string_type  curr_symbol()   const;<br />
-T     string_type  positive_sign() const;<br />
-T     string_type  negative_sign() const;<br />
-T     int          frac_digits()   const;<br />
-T     pattern      pos_format()    const;<br />
-T     pattern      neg_format()    const;<br />
-T     static locale::id id;<br />
-T     static const bool intl = International;<br />
-    protected:<br />
-T    ~moneypunct();               // virtual<br />
-S     virtual charT        do_decimal_point() const;<br />
-S     virtual charT        do_thousands_sep() const;<br />
-S     virtual string       do_grouping()      const;<br />
-S     virtual string_type  do_curr_symbol()   const;<br />
-S     virtual string_type  do_positive_sign() const;<br />
-S     virtual string_type  do_negative_sign() const;<br />
-S     virtual int          do_frac_digits()   const;<br />
-T     virtual pattern      do_pos_format()    const;<br />
-T     virtual pattern      do_neg_format()    const;<br />
-    };<br />
-   }<br />
-<br />
-   22.2.6.4  Template class                [lib.locale.moneypunct.byname]<br />
-       moneypunct_byname<br />
-<br />
-X   template &lt;class charT, bool Intl = false&gt;<br />
-    class moneypunct_byname : public moneypunct&lt;charT, Intl&gt; {<br />
-    public:<br />
-T     typedef money_base::pattern pattern;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-<br />
-T     explicit moneypunct_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-T    ~moneypunct_byname();        // virtual<br />
-S     virtual charT        do_decimal_point() const;<br />
-S     virtual charT        do_thousands_sep() const;<br />
-S     virtual string       do_grouping()      const;<br />
-S     virtual string_type  do_curr_symbol()   const;<br />
-S     virtual string_type  do_positive_sign() const;<br />
-S     virtual string_type  do_negative_sign() const;<br />
-S     virtual int          do_frac_digits()   const;<br />
-S     virtual pattern      do_pos_format()    const;<br />
-S     virtual pattern      do_neg_format()    const;<br />
-    };<br />
-<br />
-   22.2.7.1  Template class messages                [lib.locale.messages]<br />
-<br />
-T   class messages_base {<br />
-    public:<br />
-T     typedef int catalog;<br />
-    };<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class messages : public locale::facet, public messages_base {<br />
-    public:<br />
-T     typedef charT char_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit messages(size_t refs = 0);<br />
-T     catalog open(const basic_string&lt;char&gt;&amp; fn, const locale&amp;) const;<br />
-T     string_type  get(catalog c, int set, int msgid,<br />
-                       const string_type&amp; dfault) const;<br />
-T     void    close(catalog c) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~messages();                 // virtual<br />
-S     virtual catalog do_open(const basic_string&lt;char&gt;&amp;, const locale&amp;) const;<br />
-S     virtual string_type  do_get(catalog, int set, int msgid,<br />
-                             const string_type&amp; dfault) const;<br />
-S     virtual void    do_close(catalog) const;<br />
-    };<br />
-<br />
-   22.2.7.2  Template class                  [lib.locale.messages.byname]<br />
-       messages_byname<br />
-<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class messages_byname : public messages&lt;charT&gt; {<br />
-    public:<br />
-T     typedef messages_base::catalog catalog;<br />
-T     typedef basic_string&lt;charT&gt;    string_type;<br />
-<br />
-T     explicit messages_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-T    ~messages_byname();          // virtual<br />
-S     virtual catalog do_open(const basic_string&lt;char&gt;&amp;, const locale&amp;) const;<br />
-S     virtual string_type  do_get(catalog, int set, int msgid,<br />
-                             const string_type&amp; dfault) const;<br />
-S     virtual void    do_close(catalog) const;<br />
-    };<br />
-<br />
-<br />
-   22.3  C Library Locales                                [lib.c.locales]<br />
-<br />
-<br />
-                   Table 13--Header &lt;clocale&gt; synopsis<br />
-            Macros:<br />
-X                        LC_ALL        LC_COLLATE   LC_CTYPE<br />
-X                        LC_MONETARY   LC_NUMERIC   LC_TIME<br />
-X                        NULL<br />
-X           Struct:      lconv<br />
-X           Functions:   localeconv    setlocale<br />
-<br />
-<br />
-   23.2  Sequences                                        [lib.sequences]<br />
-<br />
-   &lt;deque&gt;, &lt;list&gt;, &lt;queue&gt;, &lt;stack&gt;, and &lt;vector&gt;.<br />
-<br />
-   Header &lt;deque&gt; synopsis<br />
-<br />
-T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class deque;<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(deque&lt;T,Allocator&gt;&amp; x, deque&lt;T,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   Header &lt;list&gt; synopsis<br />
-<br />
-T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class list;<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(list&lt;T,Allocator&gt;&amp; x, list&lt;T,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   Header &lt;queue&gt; synopsis<br />
-<br />
-   namespace std {<br />
-T   template &lt;class T, class Container = deque&lt;T&gt; &gt; class queue;<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator==(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt; (const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator!=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt; (const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt;=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt;=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container = vector&lt;T&gt;,<br />
-              class Compare = less&lt;typename Container::value_type&gt; &gt;<br />
-T   class priority_queue;<br />
-   }<br />
-<br />
-   Header &lt;stack&gt; synopsis<br />
-<br />
-   namespace std {<br />
-T   template &lt;class T, class Container = deque&lt;T&gt; &gt; class stack;<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator==(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt; (const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator!=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt; (const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt;=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt;=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-   }<br />
-<br />
-   Header &lt;vector&gt; synopsis<br />
-<br />
-T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class vector;<br />
-<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(vector&lt;T,Allocator&gt;&amp; x, vector&lt;T,Allocator&gt;&amp; y);<br />
-<br />
-T   template &lt;class Allocator&gt; class vector&lt;bool,Allocator&gt;;<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator==(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&lt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator!=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&gt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&gt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&lt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      void swap(vector&lt;bool,Allocator&gt;&amp; x, vector&lt;bool,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   23.2.1  Template class deque                               [lib.deque]<br />
-<br />
-    template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;<br />
-T   class deque {<br />
-    public:<br />
-      // types:<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef T                                     value_type;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      // _lib.deque.cons_ construct/copy/destroy:<br />
-T     explicit deque(const Allocator&amp; = Allocator());<br />
-T     explicit deque(size_type n, const T&amp; value = T(),<br />
-          const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        deque(InputIterator first, InputIterator last,<br />
-              const Allocator&amp; = Allocator());<br />
-T     deque(const deque&lt;T,Allocator&gt;&amp; x);<br />
-T    ~deque();<br />
-T     deque&lt;T,Allocator&gt;&amp; operator=(const deque&lt;T,Allocator&gt;&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void assign(InputIterator first, InputIterator last);<br />
-T     void assign(size_type n, const T&amp; t);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // _lib.deque.capacity_ capacity:<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-T     void      resize(size_type sz, T c = T());<br />
-T     bool      empty() const;<br />
-<br />
-      // element access:<br />
-T     reference       operator[](size_type n);<br />
-T     const_reference operator[](size_type n) const;<br />
-T     reference       at(size_type n);<br />
-T     const_reference at(size_type n) const;<br />
-T     reference       front();<br />
-T     const_reference front() const;<br />
-T     reference       back();<br />
-T     const_reference back() const;<br />
-      // _lib.deque.modifiers_ modifiers:<br />
-T     void push_front(const T&amp; x);<br />
-T     void push_back(const T&amp; x);<br />
-T     iterator insert(iterator position, const T&amp; x);<br />
-T     void     insert(iterator position, size_type n, const T&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert (iterator position,<br />
-                     InputIterator first, InputIterator last);<br />
-T     void pop_front();<br />
-T     void pop_back();<br />
-T     iterator erase(iterator position);<br />
-T     iterator erase(iterator first, iterator last);<br />
-T     void     swap(deque&lt;T,Allocator&gt;&amp;);<br />
-T     void     clear();<br />
-    };<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(deque&lt;T,Allocator&gt;&amp; x, deque&lt;T,Allocator&gt;&amp; y);<br />
-<br />
-<br />
-   23.2.2  Template class list                                 [lib.list]<br />
-<br />
-T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;<br />
-    class list {<br />
-    public:<br />
-      // types:<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef T                                     value_type;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-<br />
-      // _lib.list.cons_ construct/copy/destroy:<br />
-T     explicit list(const Allocator&amp; = Allocator());<br />
-T     explicit list(size_type n, const T&amp; value = T(),<br />
-                    const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        list(InputIterator first, InputIterator last,<br />
-             const Allocator&amp; = Allocator());<br />
-T     list(const list&lt;T,Allocator&gt;&amp; x);<br />
-T    ~list();<br />
-T     list&lt;T,Allocator&gt;&amp; operator=(const list&lt;T,Allocator&gt;&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void assign(InputIterator first, InputIterator last);<br />
-T     void assign(size_type n, const T&amp; t);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // _lib.list.capacity_ capacity:<br />
-T     bool      empty() const;<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-T     void      resize(size_type sz, T c = T());<br />
-      // element access:<br />
-T     reference       front();<br />
-T     const_reference front() const;<br />
-T     reference       back();<br />
-T     const_reference back() const;<br />
-      // _lib.list.modifiers_ modifiers:<br />
-T     void push_front(const T&amp; x);<br />
-T     void pop_front();<br />
-T     void push_back(const T&amp; x);<br />
-T     void pop_back();<br />
-T     iterator insert(iterator position, const T&amp; x);<br />
-T     void     insert(iterator position, size_type n, const T&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert(iterator position, InputIterator first,<br />
-                    InputIterator last);<br />
-T     iterator erase(iterator position);<br />
-T     iterator erase(iterator position, iterator last);<br />
-T     void     swap(list&lt;T,Allocator&gt;&amp;);<br />
-T     void     clear();<br />
-      // _lib.list.ops_ list operations:<br />
-T     void splice(iterator position, list&lt;T,Allocator&gt;&amp; x);<br />
-T     void splice(iterator position, list&lt;T,Allocator&gt;&amp; x, iterator i);<br />
-T     void splice(iterator position, list&lt;T,Allocator&gt;&amp; x, iterator first,<br />
-                  iterator last);<br />
-T     void remove(const T&amp; value);<br />
-T     template &lt;class Predicate&gt; void remove_if(Predicate pred);<br />
-<br />
-T     void unique();<br />
-T     template &lt;class BinaryPredicate&gt;<br />
-        void unique(BinaryPredicate binary_pred);<br />
-T     void merge(list&lt;T,Allocator&gt;&amp; x);<br />
-T     template &lt;class Compare&gt; void merge(list&lt;T,Allocator&gt;&amp; x, Compare comp);<br />
-        void sort();<br />
-T     template &lt;class Compare&gt; void sort(Compare comp);<br />
-        void reverse();<br />
-    };<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(list&lt;T,Allocator&gt;&amp; x, list&lt;T,Allocator&gt;&amp; y);<br />
-<br />
-<br />
-   23.2.3.1  Template class queue                             [lib.queue]<br />
-<br />
-T   template &lt;class T, class Container = deque&lt;T&gt; &gt;<br />
-    class queue {<br />
-    public:<br />
-T     typedef typename Container::value_type            value_type;<br />
-T     typedef typename Container::size_type             size_type;<br />
-T     typedef          Container                        container_type;<br />
-    protected:<br />
-T     Container c;<br />
-    public:<br />
-T     explicit queue(const Container&amp; = Container());<br />
-<br />
-T     bool      empty() const             { return c.empty(); }<br />
-T     size_type size()  const             { return c.size(); }<br />
-T     value_type&amp;       front()           { return c.front(); }<br />
-T     const value_type&amp; front() const     { return c.front(); }<br />
-T     value_type&amp;       back()            { return c.back(); }<br />
-T     const value_type&amp; back() const      { return c.back(); }<br />
-T     void push(const value_type&amp; x)      { c.push_back(x); }<br />
-T     void pop()                          { c.pop_front(); }<br />
-    };<br />
-<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator==(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt; (const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator!=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt; (const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt;=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt;=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-<br />
-   23.2.3.2  Template class priority_queue           [lib.priority.queue]<br />
-<br />
-T   template &lt;class T, class Container = vector&lt;T&gt;,<br />
-              class Compare = less&lt;typename Container::value_type&gt; &gt;<br />
-    class priority_queue {<br />
-    public:<br />
-T     typedef typename Container::value_type            value_type;<br />
-T     typedef typename Container::size_type             size_type;<br />
-T     typedef          Container                        container_type;<br />
-    protected:<br />
-T     Container c;<br />
-T     Compare comp;<br />
-    public:<br />
-T     explicit priority_queue(const Compare&amp; x = Compare(),<br />
-                              const Container&amp; = Container());<br />
-T     template &lt;class InputIterator&gt;<br />
-        priority_queue(InputIterator first, InputIterator last,<br />
-                       const Compare&amp; x = Compare(),<br />
-                       const Container&amp; = Container());<br />
-<br />
-T     bool      empty() const       { return c.empty(); }<br />
-T     size_type size()  const       { return c.size(); }<br />
-T     const value_type&amp; top() const { return c.front(); }<br />
-T     void push(const value_type&amp; x);<br />
-T     void pop();<br />
-    };<br />
-<br />
-   23.2.3.3  Template class stack                             [lib.stack]<br />
-<br />
-T   template &lt;class T, class Container = deque&lt;T&gt; &gt;<br />
-    class stack {<br />
-    public:<br />
-T     typedef typename Container::value_type            value_type;<br />
-T     typedef typename Container::size_type             size_type;<br />
-T     typedef          Container                        container_type;<br />
-    protected:<br />
-T     Container c;<br />
-    public:<br />
-T     explicit stack(const Container&amp; = Container());<br />
-<br />
-T     bool      empty() const             { return c.empty(); }<br />
-T     size_type size()  const             { return c.size(); }<br />
-T     value_type&amp;       top()             { return c.back(); }<br />
-T     const value_type&amp; top() const       { return c.back(); }<br />
-T     void push(const value_type&amp; x)      { c.push_back(x); }<br />
-T     void pop()                          { c.pop_back(); }<br />
-    };<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator==(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt; (const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator!=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt; (const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt;=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt;=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-<br />
-   23.2.4  Template class vector                             [lib.vector]<br />
-<br />
-    template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;<br />
-T   class vector {<br />
-    public:<br />
-      // types:<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef T                                     value_type;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      // _lib.vector.cons_ construct/copy/destroy:<br />
-T     explicit vector(const Allocator&amp; = Allocator());<br />
-T     explicit vector(size_type n, const T&amp; value = T(),<br />
-          const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        vector(InputIterator first, InputIterator last,<br />
-          const Allocator&amp; = Allocator());<br />
-T     vector(const vector&lt;T,Allocator&gt;&amp; x);<br />
-T    ~vector();<br />
-T     vector&lt;T,Allocator&gt;&amp; operator=(const vector&lt;T,Allocator&gt;&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void assign(InputIterator first, InputIterator last);<br />
-T     void assign(size_type n, const T&amp; u);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // _lib.vector.capacity_ capacity:<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-T     void      resize(size_type sz, T c = T());<br />
-T     size_type capacity() const;<br />
-T     bool      empty() const;<br />
-T     void      reserve(size_type n);<br />
-<br />
-      // element access:<br />
-T     reference       operator[](size_type n);<br />
-T     const_reference operator[](size_type n) const;<br />
-T     const_reference at(size_type n) const;<br />
-T     reference       at(size_type n);<br />
-T     reference       front();<br />
-T     const_reference front() const;<br />
-T     reference       back();<br />
-T     const_reference back() const;<br />
-      // _lib.vector.modifiers_ modifiers:<br />
-T     void push_back(const T&amp; x);<br />
-T     void pop_back();<br />
-T     iterator insert(iterator position, const T&amp; x);<br />
-T     void     insert(iterator position, size_type n, const T&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-          void insert(iterator position,<br />
-                      InputIterator first, InputIterator last);<br />
-T     iterator erase(iterator position);<br />
-T     iterator erase(iterator first, iterator last);<br />
-T     void     swap(vector&lt;T,Allocator&gt;&amp;);<br />
-T     void     clear();<br />
-    };<br />
-<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(vector&lt;T,Allocator&gt;&amp; x, vector&lt;T,Allocator&gt;&amp; y);<br />
-<br />
-<br />
-   23.2.5  Class vector&lt;bool&gt;                           [lib.vector.bool]<br />
-<br />
-T   template &lt;class Allocator&gt; class vector&lt;bool, Allocator&gt; {<br />
-    public:<br />
-      // types:<br />
-T     typedef bool                                  const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef bool                                  value_type;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef implementation defined                pointer;<br />
-T     typedef implementation defined                const_pointer<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      // bit reference:<br />
-T     class reference {<br />
-       friend class vector;<br />
-T      reference();<br />
-      public:<br />
-T      ~reference();<br />
-T       operator bool() const;<br />
-T       reference&amp; operator=(const bool x);<br />
-T       reference&amp; operator=(const reference&amp; x);<br />
-T       void flip();              // flips the bit<br />
-      };<br />
-<br />
-      // construct/copy/destroy:<br />
-T     explicit vector(const Allocator&amp; = Allocator());<br />
-T     explicit vector(size_type n, const bool&amp; value = bool(),<br />
-                      const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        vector(InputIterator first, InputIterator last,<br />
-          const Allocator&amp; = Allocator());<br />
-T     vector(const vector&lt;bool,Allocator&gt;&amp; x);<br />
-T    ~vector();<br />
-T     vector&lt;bool,Allocator&gt;&amp; operator=(const vector&lt;bool,Allocator&gt;&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void assign(InputIterator first, InputIterator last);<br />
-T     void assign(size_type n, const T&amp; t);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-T     void      resize(size_type sz, bool c = false);<br />
-T     size_type capacity() const;<br />
-T     bool      empty() const;<br />
-T     void      reserve(size_type n);<br />
-      // element access:<br />
-T     reference       operator[](size_type n);<br />
-T     const_reference operator[](size_type n) const;<br />
-T     const_reference at(size_type n) const;<br />
-T     reference       at(size_type n);<br />
-T     reference       front();<br />
-T     const_reference front() const;<br />
-T     reference       back();<br />
-T     const_reference back() const;<br />
-      // modifiers:<br />
-T     void push_back(const bool&amp; x);<br />
-T     void pop_back();<br />
-T     iterator insert(iterator position, const bool&amp; x);<br />
-T     void     insert (iterator position, size_type n, const bool&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-          void insert(iterator position,<br />
-                      InputIterator first, InputIterator last);<br />
-T     iterator erase(iterator position);<br />
-T     iterator erase(iterator first, iterator last);<br />
-T     void swap(vector&lt;bool,Allocator&gt;&amp;);<br />
-T     static void swap(reference x, reference y);<br />
-T     void flip();                // flips all bits<br />
-T     void clear();<br />
-    };<br />
-<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator==(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&lt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator!=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&gt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&gt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&lt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Allocator&gt;<br />
-      void swap(vector&lt;bool,Allocator&gt;&amp; x, vector&lt;bool,Allocator&gt;&amp; y);<br />
-<br />
-   23.3  Associative containers                         [lib.associative]<br />
-<br />
- &lt;map&gt; and &lt;set&gt;:<br />
-<br />
-   Header &lt;map&gt; synopsis<br />
-<br />
-    template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
-T     class map;<br />
-<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator==(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator!=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      void swap(map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
-      class multimap;<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator==(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator!=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   Header &lt;set&gt; synopsis<br />
-<br />
-    template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;Key&gt; &gt;<br />
-T     class set;<br />
-<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator==(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator!=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      void swap(set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;Key&gt; &gt;<br />
-      class multiset;<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator==(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator!=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      void swap(multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   23.3.1  Template class map                                   [lib.map]<br />
-<br />
-    template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
-T     class map {<br />
-    public:<br />
-      // types:<br />
-T     typedef Key                                   key_type;<br />
-T     typedef T                                     mapped_type;<br />
-T     typedef pair&lt;const Key, T&gt;                    value_type;<br />
-T     typedef Compare                               key_compare;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-T     class value_compare<br />
-        : public binary_function&lt;value_type,value_type,bool&gt; {<br />
-      friend class map;<br />
-      protected:<br />
-T       Compare comp;<br />
-T       value_compare(Compare c) : comp(c) {}<br />
-      public:<br />
-T       bool operator()(const value_type&amp; x, const value_type&amp; y) const {<br />
-          return comp(x.first, y.first);<br />
-        }<br />
-      };<br />
-<br />
-      // _lib.map.cons_ construct/copy/destroy:<br />
-T     explicit map(const Compare&amp; comp = Compare(),<br />
-                   const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        map(InputIterator first, InputIterator last,<br />
-            const Compare&amp; comp = Compare(), const Allocator&amp; = Allocator());<br />
-T     map(const map&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
-T    ~map();<br />
-T     map&lt;Key,T,Compare,Allocator&gt;&amp;<br />
-        operator=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     bool      empty() const;<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-      // _lib.map.access_ element access:<br />
-T     T&amp; operator[](const key_type&amp; x);<br />
-      // modifiers:<br />
-T     pair&lt;iterator, bool&gt; insert(const value_type&amp; x);<br />
-T     iterator             insert(iterator position, const value_type&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert(InputIterator first, InputIterator last);<br />
-T     void      erase(iterator position);<br />
-T     size_type erase(const key_type&amp; x);<br />
-T     void      erase(iterator first, iterator last);<br />
-T     void swap(map&lt;Key,T,Compare,Allocator&gt;&amp;);<br />
-T     void clear();<br />
-      // observers:<br />
-T     key_compare   key_comp() const;<br />
-T     value_compare value_comp() const;<br />
-      // _lib.map.ops_ map operations:<br />
-T     iterator       find(const key_type&amp; x);<br />
-T     const_iterator find(const key_type&amp; x) const;<br />
-T     size_type      count(const key_type&amp; x) const;<br />
-T     iterator       lower_bound(const key_type&amp; x);<br />
-T     const_iterator lower_bound(const key_type&amp; x) const;<br />
-T     iterator       upper_bound(const key_type&amp; x);<br />
-T     const_iterator upper_bound(const key_type&amp; x) const;<br />
-T     pair&lt;iterator,iterator&gt;<br />
-          equal_range(const key_type&amp; x);<br />
-T     pair&lt;const_iterator,const_iterator&gt;<br />
-          equal_range(const key_type&amp; x) const;<br />
-    };<br />
-<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator==(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator!=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      void swap(map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-<br />
-   23.3.2  Template class multimap                         [lib.multimap]<br />
-<br />
-    template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
-T   class multimap {<br />
-    public:<br />
-      // types:<br />
-T     typedef Key                                   key_type;<br />
-T     typedef T                                     mapped_type;<br />
-T     typedef pair&lt;const Key,T&gt;                     value_type;<br />
-T     typedef Compare                               key_compare;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-T     class value_compare<br />
-        : public binary_function&lt;value_type,value_type,bool&gt; {<br />
-      friend class multimap;<br />
-      protected:<br />
-T       Compare comp;<br />
-T       value_compare(Compare c) : comp(c) {}<br />
-      public:<br />
-T       bool operator()(const value_type&amp; x, const value_type&amp; y) const {<br />
-          return comp(x.first, y.first);<br />
-        }<br />
-      };<br />
-      // construct/copy/destroy:<br />
-T     explicit multimap(const Compare&amp; comp = Compare(),<br />
-                        const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        multimap(InputIterator first, InputIterator last,<br />
-                 const Compare&amp; comp = Compare(),<br />
-                 const Allocator&amp; = Allocator());<br />
-T     multimap(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
-T    ~multimap();<br />
-T     multimap&lt;Key,T,Compare,Allocator&gt;&amp;<br />
-        operator=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
-T     allocator_type get_allocator() const;<br />
-<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     bool           empty() const;<br />
-T     size_type      size() const;<br />
-T     size_type      max_size() const;<br />
-      // modifiers:<br />
-T     iterator insert(const value_type&amp; x);<br />
-T     iterator insert(iterator position, const value_type&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert(InputIterator first, InputIterator last);<br />
-T     void      erase(iterator position);<br />
-T     size_type erase(const key_type&amp; x);<br />
-T     void      erase(iterator first, iterator last);<br />
-T     void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp;);<br />
-T     void clear();<br />
-      // observers:<br />
-T     key_compare    key_comp() const;<br />
-T     value_compare  value_comp() const;<br />
-      // map operations:<br />
-T     iterator       find(const key_type&amp; x);<br />
-T     const_iterator find(const key_type&amp; x) const;<br />
-T     size_type      count(const key_type&amp; x) const;<br />
-T     iterator       lower_bound(const key_type&amp; x);<br />
-T     const_iterator lower_bound(const key_type&amp; x) const;<br />
-T     iterator       upper_bound(const key_type&amp; x);<br />
-T     const_iterator upper_bound(const key_type&amp; x) const;<br />
-T     pair&lt;iterator,iterator&gt;             equal_range(const key_type&amp; x);<br />
-T     pair&lt;const_iterator,const_iterator&gt; equal_range(const key_type&amp; x) const;<br />
-    };<br />
-<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator==(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator!=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-<br />
-<br />
-   23.3.3  Template class set                                   [lib.set]<br />
-<br />
-    template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;Key&gt; &gt;<br />
-T   class set {<br />
-    public:<br />
-      // types:<br />
-T     typedef Key                                   key_type;<br />
-T     typedef Key                                   value_type;<br />
-T     typedef Compare                               key_compare;<br />
-T     typedef Compare                               value_compare;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      // _lib.set.cons_ construct/copy/destroy:<br />
-T     explicit set(const Compare&amp; comp = Compare(),<br />
-                   const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        set(InputIterator first, InputIterator last,<br />
-            const Compare&amp; comp = Compare(), const Allocator&amp; = Allocator());<br />
-T     set(const set&lt;Key,Compare,Allocator&gt;&amp; x);<br />
-T    ~set();<br />
-T     set&lt;Key,Compare,Allocator&gt;&amp;<br />
-        operator=(const set&lt;Key,Compare,Allocator&gt;&amp; x);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     bool          empty() const;<br />
-T     size_type     size() const;<br />
-T     size_type     max_size() const;<br />
-      // modifiers:<br />
-T     pair&lt;iterator,bool&gt; insert(const value_type&amp; x);<br />
-T     iterator            insert(iterator position, const value_type&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-T         void insert(InputIterator first, InputIterator last);<br />
-T     void      erase(iterator position);<br />
-T     size_type erase(const key_type&amp; x);<br />
-T     void      erase(iterator first, iterator last);<br />
-T     void swap(set&lt;Key,Compare,Allocator&gt;&amp;);<br />
-T     void clear();<br />
-<br />
-      // observers:<br />
-T     key_compare   key_comp() const;<br />
-T     value_compare value_comp() const;<br />
-      // set operations:<br />
-T     iterator  find(const key_type&amp; x) const;<br />
-T     size_type count(const key_type&amp; x) const;<br />
-T     iterator  lower_bound(const key_type&amp; x) const;<br />
-T     iterator  upper_bound(const key_type&amp; x) const;<br />
-T     pair&lt;iterator,iterator&gt; equal_range(const key_type&amp; x) const;<br />
-    };<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator==(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator!=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      void swap(set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-<br />
-   23.3.4  Template class multiset                         [lib.multiset]<br />
-<br />
-    template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;Key&gt; &gt;<br />
-T   class multiset {<br />
-    public:<br />
-      // types:<br />
-T     typedef Key                                   key_type;<br />
-T     typedef Key                                   value_type;<br />
-T     typedef Compare                               key_compare;<br />
-T     typedef Compare                               value_compare;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-<br />
-      // construct/copy/destroy:<br />
-T     explicit multiset(const Compare&amp; comp = Compare(),<br />
-                        const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        multiset(InputIterator first, InputIterator last,<br />
-                 const Compare&amp; comp = Compare(),<br />
-                 const Allocator&amp; = Allocator());<br />
-T     multiset(const multiset&lt;Key,Compare,Allocator&gt;&amp; x);<br />
-T    ~multiset();<br />
-T     multiset&lt;Key,Compare,Allocator&gt;&amp;<br />
-          operator=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     bool          empty() const;<br />
-T     size_type     size() const;<br />
-T     size_type     max_size() const;<br />
-      // modifiers:<br />
-T     iterator insert(const value_type&amp; x);<br />
-T     iterator insert(iterator position, const value_type&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert(InputIterator first, InputIterator last);<br />
-T     void      erase(iterator position);<br />
-T     size_type erase(const key_type&amp; x);<br />
-T     void      erase(iterator first, iterator last);<br />
-T     void swap(multiset&lt;Key,Compare,Allocator&gt;&amp;);<br />
-T     void clear();<br />
-      // observers:<br />
-T     key_compare   key_comp() const;<br />
-T     value_compare value_comp() const;<br />
-      // set operations:<br />
-T     iterator  find(const key_type&amp; x) const;<br />
-T     size_type count(const key_type&amp; x) const;<br />
-T     iterator  lower_bound(const key_type&amp; x) const;<br />
-T     iterator  upper_bound(const key_type&amp; x) const;<br />
-T     pair&lt;iterator,iterator&gt; equal_range(const key_type&amp; x) const;<br />
-    };<br />
-<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator==(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator!=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      void swap(multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-<br />
-   23.3.5  Template class bitset                    [lib.template.bitset]<br />
-<br />
-   Header &lt;bitset&gt; synopsis<br />
-<br />
-T   template &lt;size_t N&gt; class bitset;<br />
-    // _lib.bitset.operators_ bitset operations:<br />
-T   template &lt;size_t N&gt;<br />
-      bitset&lt;N&gt; operator&amp;(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);<br />
-T   template &lt;size_t N&gt;<br />
-      bitset&lt;N&gt; operator|(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);<br />
-T   template &lt;size_t N&gt;<br />
-      bitset&lt;N&gt; operator^(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);<br />
-T   template &lt;class charT, class traits, size_t N&gt;<br />
-      basic_istream&lt;charT, traits&gt;&amp;<br />
-      operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp; is, bitset&lt;N&gt;&amp; x);<br />
-T   template &lt;class charT, class traits, size_t N&gt;<br />
-      basic_ostream&lt;charT, traits&gt;&amp;<br />
-      operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp; os, const bitset&lt;N&gt;&amp; x);<br />
-<br />
-T   template&lt;size_t N&gt; class bitset {<br />
-    public:<br />
-      // bit reference:<br />
-T     class reference {<br />
-        friend class bitset;<br />
-T       reference();<br />
-      public:<br />
-T      ~reference();<br />
-T       reference&amp; operator=(bool x);             // for b[i] = x;<br />
-T       reference&amp; operator=(const reference&amp;);   // for b[i] = b[j];<br />
-T       bool operator~() const;                   // flips the bit<br />
-T       operator bool() const;                    // for x = b[i];<br />
-T       reference&amp; flip();                        // for b[i].flip();<br />
-      };<br />
-<br />
-      // _lib.bitset.cons_ constructors:<br />
-T     bitset();<br />
-T     bitset(unsigned long val);<br />
-T     template&lt;class charT, class traits, class Allocator&gt;<br />
-        explicit bitset(<br />
-          const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-          typename basic_string&lt;charT,traits,Allocator&gt;::size_type pos = 0,<br />
-          typename basic_string&lt;charT,traits,Allocator&gt;::size_type n =<br />
-            basic_string&lt;charT,traits,Allocator&gt;::npos);<br />
-      // _lib.bitset.members_ bitset operations:<br />
-T     bitset&lt;N&gt;&amp; operator&amp;=(const bitset&lt;N&gt;&amp; rhs);<br />
-T     bitset&lt;N&gt;&amp; operator|=(const bitset&lt;N&gt;&amp; rhs);<br />
-T     bitset&lt;N&gt;&amp; operator^=(const bitset&lt;N&gt;&amp; rhs);<br />
-T     bitset&lt;N&gt;&amp; operator&lt;&lt;=(size_t pos);<br />
-T     bitset&lt;N&gt;&amp; operator&gt;&gt;=(size_t pos);<br />
-T     bitset&lt;N&gt;&amp; set();<br />
-T     bitset&lt;N&gt;&amp; set(size_t pos, int val = true);<br />
-T     bitset&lt;N&gt;&amp; reset();<br />
-T     bitset&lt;N&gt;&amp; reset(size_t pos);<br />
-T     bitset&lt;N&gt;  operator~() const;<br />
-T     bitset&lt;N&gt;&amp; flip();<br />
-T     bitset&lt;N&gt;&amp; flip(size_t pos);<br />
-      // element access:<br />
-T     reference operator[](size_t pos);         // for b[i];<br />
-T     unsigned long  to_ulong() const;<br />
-T     template &lt;class charT, class traits, class Allocator&gt;<br />
-        basic_string&lt;charT, traits, Allocator&gt; to_string() const;<br />
-T     size_t count() const;<br />
-T     size_t size()  const;<br />
-T     bool operator==(const bitset&lt;N&gt;&amp; rhs) const;<br />
-T     bool operator!=(const bitset&lt;N&gt;&amp; rhs) const;<br />
-T     bool test(size_t pos) const;<br />
-T     bool any() const;<br />
-T     bool none() const;<br />
-T     bitset&lt;N&gt; operator&lt;&lt;(size_t pos) const;<br />
-T     bitset&lt;N&gt; operator&gt;&gt;(size_t pos) const;<br />
-    };<br />
-<br />
-<br />
-<br />
-<br />
-   24.2  Header &lt;iterator&gt; synopsis               [lib.iterator.synopsis]<br />
-<br />
-    // _lib.iterator.primitives_, primitives:<br />
-T   template&lt;class Iterator&gt; struct iterator_traits;<br />
-T   template&lt;class T&gt; struct iterator_traits&lt;T*&gt;;<br />
-<br />
-X   template&lt;class Category, class T, class Distance = ptrdiff_t,<br />
-             class Pointer = T*, class Reference = T&amp;&gt; struct iterator;<br />
-T   struct input_iterator_tag {};<br />
-T   struct output_iterator_tag {};<br />
-T   struct forward_iterator_tag: public input_iterator_tag {};<br />
-T   struct bidirectional_iterator_tag: public forward_iterator_tag {};<br />
-T   struct random_access_iterator_tag: public bidirectional_iterator_tag {};<br />
-    // _lib.iterator.operations_, iterator operations:<br />
-T   template &lt;class InputIterator, class Distance&gt;<br />
-      void advance(InputIterator&amp; i, Distance n);<br />
-T   template &lt;class InputIterator&gt;<br />
-      typename iterator_traits&lt;InputIterator&gt;::difference_type<br />
-      distance(InputIterator first, InputIterator last);<br />
-    // _lib.predef.iterators_, predefined iterators:<br />
-X   template &lt;class Iterator&gt; class reverse_iterator;<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator==(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&lt;(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator!=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&gt;(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&gt;=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&lt;=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      typename reverse_iterator&lt;Iterator&gt;::difference_type operator-(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      reverse_iterator&lt;Iterator&gt;<br />
-        operator+(<br />
-          typename reverse_iterator&lt;Iterator&gt;::difference_type n,<br />
-          const reverse_iterator&lt;Iterator&gt;&amp; x);<br />
-<br />
-X   template &lt;class Container&gt; class back_insert_iterator;<br />
-T   template &lt;class Container&gt;<br />
-      back_insert_iterator&lt;Container&gt; back_inserter(Container&amp; x);<br />
-X   template &lt;class Container&gt; class front_insert_iterator;<br />
-T   template &lt;class Container&gt;<br />
-      front_insert_iterator&lt;Container&gt; front_inserter(Container&amp; x);<br />
-X   template &lt;class Container&gt; class insert_iterator;<br />
-T   template &lt;class Container, class Iterator&gt;<br />
-      insert_iterator&lt;Container&gt; inserter(Container&amp; x, Iterator i);<br />
-    // _lib.stream.iterators_, stream iterators:<br />
-X   template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt;,<br />
-              class Distance = ptrdiff_t&gt;<br />
-      class istream_iterator;<br />
-    template &lt;class T, class charT, class traits, class Distance&gt;<br />
-X     bool operator==(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
-                      const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
-    template &lt;class T, class charT, class traits, class Distance&gt;<br />
-X     bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
-                      const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
-X   template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt; &gt;<br />
-        class ostream_iterator;<br />
-X   template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class istreambuf_iterator;<br />
-X   template &lt;class charT, class traits&gt;<br />
-      bool operator==(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
-                      const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
-X   template &lt;class charT, class traits&gt;<br />
-      bool operator!=(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
-                      const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
-T   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class ostreambuf_iterator;<br />
-<br />
-   24.3  Iterator primitives                    [lib.iterator.primitives]<br />
-<br />
-T   template&lt;class Iterator&gt; struct iterator_traits {<br />
-T     typedef typename Iterator::difference_type difference_type;<br />
-T     typedef typename Iterator::value_type value_type;<br />
-T     typedef typename Iterator::pointer pointer;<br />
-T     typedef typename Iterator::reference reference;<br />
-T     typedef typename Iterator::iterator_category iterator_category;<br />
-    };<br />
-<br />
-T   template&lt;class T&gt; struct iterator_traits&lt;T*&gt; {<br />
-T     typedef ptrdiff_t difference_type;<br />
-T     typedef T value_type;<br />
-T     typedef T* pointer;<br />
-T     typedef T&amp; reference;<br />
-T     typedef random_access_iterator_tag iterator_category;<br />
-    };<br />
-<br />
-T   template&lt;class T&gt; struct iterator_traits&lt;const T*&gt; {<br />
-T     typedef ptrdiff_t difference_type;<br />
-T     typedef T value_type;<br />
-T     typedef const T* pointer;<br />
-T     typedef const T&amp; reference;<br />
-T     typedef random_access_iterator_tag iterator_category;<br />
-    };<br />
-<br />
-   24.3.2  Basic iterator                            [lib.iterator.basic]<br />
-<br />
-    template&lt;class Category, class T, class Distance = ptrdiff_t,<br />
-             class Pointer = T*, class Reference = T&amp;&gt;<br />
-X     struct iterator {<br />
-T         typedef T         value_type;<br />
-T         typedef Distance  difference_type;<br />
-T         typedef Pointer   pointer;<br />
-T         typedef Reference reference;<br />
-T         typedef Category  iterator_category;<br />
-    };<br />
-<br />
-   24.3.3  Standard iterator tags                 [lib.std.iterator.tags]<br />
-<br />
-T   struct input_iterator_tag {};<br />
-T   struct output_iterator_tag {};<br />
-T   struct forward_iterator_tag: public input_iterator_tag {};<br />
-T   struct bidirectional_iterator_tag: public forward_iterator_tag {};<br />
-T   struct random_access_iterator_tag: public bidirectional_iterator_tag {};<br />
-<br />
-<br />
-   24.4.1  Reverse iterators                      [lib.reverse.iterators]<br />
-<br />
-    template &lt;class Iterator&gt;<br />
-X   class reverse_iterator : public<br />
-          iterator&lt;typename iterator_traits&lt;Iterator&gt;::iterator_category,<br />
-                   typename iterator_traits&lt;Iterator&gt;::value_type,<br />
-                   typename iterator_traits&lt;Iterator&gt;::difference_type,<br />
-                   typename iterator_traits&lt;Iterator&gt;::pointer,<br />
-                   typename iterator_traits&lt;Iterator&gt;::reference&gt; {<br />
-    protected:<br />
-T     Iterator current;<br />
-    public:<br />
-T     typedef Iterator<br />
-          iterator_type;<br />
-T     typedef typename iterator_traits&lt;Iterator&gt;::difference_type<br />
-          difference_type;<br />
-T     typedef typename iterator_traits&lt;Iterator&gt;::reference<br />
-          reference;<br />
-T     typedef typename iterator_traits&lt;Iterator&gt;::pointer<br />
-          pointer;<br />
-<br />
-T     reverse_iterator();<br />
-T     explicit reverse_iterator(Iterator x);<br />
-T     template &lt;class U&gt; reverse_iterator(const reverse_iterator&lt;U&gt;&amp; u);<br />
-T     Iterator base() const;      // explicit<br />
-T     reference operator*() const;<br />
-T     pointer   operator-&gt;() const;<br />
-T     reverse_iterator&amp; operator++();<br />
-T     reverse_iterator  operator++(int);<br />
-T     reverse_iterator&amp; operator--();<br />
-T     reverse_iterator  operator--(int);<br />
-<br />
-T     reverse_iterator  operator+ (difference_type n) const;<br />
-T     reverse_iterator&amp; operator+=(difference_type n);<br />
-T     reverse_iterator  operator- (difference_type n) const;<br />
-T     reverse_iterator&amp; operator-=(difference_type n);<br />
-T     reference operator[](difference_type n) const;<br />
-    };<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator==(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&lt;(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator!=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&gt;(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&gt;=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&lt;=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      typename reverse_iterator&lt;Iterator&gt;::difference_type operator-(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      reverse_iterator&lt;Iterator&gt; operator+(<br />
-        typename reverse_iterator&lt;Iterator&gt;::difference_type n,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x);<br />
-<br />
-<br />
-   24.4.2.1  Template class                    [lib.back.insert.iterator]<br />
-       back_insert_iterator<br />
-<br />
-    template &lt;class Container&gt;<br />
-X   class back_insert_iterator :<br />
-          public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
-    protected:<br />
-T     Container* container;<br />
-    public:<br />
-T     typedef Container container_type;<br />
-T     explicit back_insert_iterator(Container&amp; x);<br />
-T     back_insert_iterator&lt;Container&gt;&amp;<br />
-        operator=(typename Container::const_reference value);<br />
-<br />
-T     back_insert_iterator&lt;Container&gt;&amp; operator*();<br />
-T     back_insert_iterator&lt;Container&gt;&amp; operator++();<br />
-T     back_insert_iterator&lt;Container&gt;  operator++(int);<br />
-    };<br />
-T   template &lt;class Container&gt;<br />
-      back_insert_iterator&lt;Container&gt; back_inserter(Container&amp; x);<br />
-<br />
-<br />
-<br />
-   24.4.2.3  Template class                   [lib.front.insert.iterator]<br />
-       front_insert_iterator<br />
-<br />
-    template &lt;class Container&gt;<br />
-X   class front_insert_iterator :<br />
-          public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
-    protected:<br />
-T     Container* container;<br />
-    public:<br />
-T     typedef Container container_type;<br />
-T     explicit front_insert_iterator(Container&amp; x);<br />
-T     front_insert_iterator&lt;Container&gt;&amp;<br />
-        operator=(typename Container::const_reference value);<br />
-T     front_insert_iterator&lt;Container&gt;&amp; operator*();<br />
-T     front_insert_iterator&lt;Container&gt;&amp; operator++();<br />
-T     front_insert_iterator&lt;Container&gt;  operator++(int);<br />
-    };<br />
-T   template &lt;class Container&gt;<br />
-      front_insert_iterator&lt;Container&gt; front_inserter(Container&amp; x);<br />
-<br />
-<br />
-   24.4.2.5  Template class insert_iterator         [lib.insert.iterator]<br />
-<br />
-    template &lt;class Container&gt;<br />
-X   class insert_iterator :<br />
-          public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
-    protected:<br />
-T     Container* container;<br />
-T     typename Container::iterator iter;<br />
-    public:<br />
-T     typedef Container container_type;<br />
-T     insert_iterator(Container&amp; x, typename Container::iterator i);<br />
-T     insert_iterator&lt;Container&gt;&amp;<br />
-        operator=(typename Container::const_reference value);<br />
-T     insert_iterator&lt;Container&gt;&amp; operator*();<br />
-T     insert_iterator&lt;Container&gt;&amp; operator++();<br />
-T     insert_iterator&lt;Container&gt;&amp; operator++(int);<br />
-    };<br />
-T   template &lt;class Container, class Iterator&gt;<br />
-      insert_iterator&lt;Container&gt; inserter(Container&amp; x, Iterator i);<br />
-<br />
-   24.5.1  Template class istream_iterator         [lib.istream.iterator]<br />
-<br />
-    template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt;,<br />
-        class Distance = ptrdiff_t&gt;<br />
-X   class istream_iterator:<br />
-      public iterator&lt;input_iterator_tag, T, Distance, const T*, const T&amp;&gt; {<br />
-    public:<br />
-T     typedef charT char_type<br />
-T     typedef traits traits_type;<br />
-T     typedef basic_istream&lt;charT,traits&gt; istream_type;<br />
-T     istream_iterator();<br />
-T     istream_iterator(istream_type&amp; s);<br />
-T     istream_iterator(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x);<br />
-T    ~istream_iterator();<br />
-<br />
-T     const T&amp; operator*() const;<br />
-T     const T* operator-&gt;() const;<br />
-T     istream_iterator&lt;T,charT,traits,Distance&gt;&amp; operator++();<br />
-T     istream_iterator&lt;T,charT,traits,Distance&gt;  operator++(int);<br />
-    };<br />
-<br />
-T   template &lt;class T, class charT, class traits, class Distance&gt;<br />
-      bool operator==(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
-                      const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
-T   template &lt;class T, class charT, class traits, class Distance&gt;<br />
-      bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
-                      const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
-<br />
-<br />
-   24.5.2  Template class ostream_iterator         [lib.ostream.iterator]<br />
-<br />
-    template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class ostream_iterator:<br />
-      public iterator&lt;output_iterator_tag, void, void, void, void&gt; {<br />
-    public:<br />
-T     typedef charT char_type;<br />
-T     typedef traits traits_type;<br />
-T     typedef basic_ostream&lt;charT,traits&gt; ostream_type;<br />
-T     ostream_iterator(ostream_type&amp; s);<br />
-T     ostream_iterator(ostream_type&amp; s, const charT* delimiter);<br />
-T     ostream_iterator(const ostream_iterator&lt;T,charT,traits&gt;&amp; x);<br />
-T    ~ostream_iterator();<br />
-T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator=(const T&amp; value);<br />
-<br />
-T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator*();<br />
-T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator++();<br />
-T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator++(int);<br />
-    };<br />
-<br />
-<br />
-   24.5.3  Template class                       [lib.istreambuf.iterator]<br />
-       istreambuf_iterator<br />
-<br />
-    template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class istreambuf_iterator<br />
-       : public iterator&lt;input_iterator_tag, charT,<br />
-                         typename traits::off_type, charT*, charT&amp;&gt; {<br />
-    public:<br />
-T     typedef charT                         char_type;<br />
-T     typedef traits                        traits_type;<br />
-T     typedef typename traits::int_type     int_type;<br />
-T     typedef basic_streambuf&lt;charT,traits&gt; streambuf_type;<br />
-T     typedef basic_istream&lt;charT,traits&gt;   istream_type;<br />
-T     class proxy;                        // exposition only<br />
-T     istreambuf_iterator() throw();<br />
-T     istreambuf_iterator(istream_type&amp; s) throw();<br />
-T     istreambuf_iterator(streambuf_type* s) throw();<br />
-T     istreambuf_iterator(const proxy&amp; p) throw();<br />
-T     charT operator*() const;<br />
-T     istreambuf_iterator&lt;charT,traits&gt;&amp; operator++();<br />
-T     proxy operator++(int);<br />
-X     bool equal(istreambuf_iterator&amp; b);<br />
-    };<br />
-<br />
-T   template &lt;class charT, class traits&gt;<br />
-      bool operator==(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
-                      const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
-<br />
-T   template &lt;class charT, class traits&gt;<br />
-      bool operator!=(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
-                      const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
-<br />
-   24.5.3.1  Template class              [lib.istreambuf.iterator::proxy]<br />
-       istreambuf_iterator::proxy<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-T     class istreambuf_iterator&lt;charT, traits&gt;::proxy<br />
-    {<br />
-T     charT keep_;<br />
-T     basic_streambuf&lt;charT,traits&gt;* sbuf_;<br />
-T     proxy(charT c,<br />
-            basic_streambuf&lt;charT,traits&gt;* sbuf);<br />
-        : keep_(c), sbuf_(sbuf) {}<br />
-    public:<br />
-T     charT operator*() { return keep_; }<br />
-    };<br />
-<br />
-<br />
-<br />
-   24.5.4  Template class                       [lib.ostreambuf.iterator]<br />
-       ostreambuf_iterator<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-T   class ostreambuf_iterator:<br />
-      public iterator&lt;output_iterator_tag, void, void, void, void&gt; {<br />
-    public:<br />
-T     typedef charT                         char_type;<br />
-T     typedef traits                        traits_type;<br />
-T     typedef basic_streambuf&lt;charT,traits&gt; streambuf_type;<br />
-T     typedef basic_ostream&lt;charT,traits&gt;   ostream_type;<br />
-    public:<br />
-T     ostreambuf_iterator(ostream_type&amp; s) throw();<br />
-T     ostreambuf_iterator(streambuf_type* s) throw();<br />
-T     ostreambuf_iterator&amp; operator=(charT c);<br />
-T     ostreambuf_iterator&amp; operator*();<br />
-T     ostreambuf_iterator&amp; operator++();<br />
-T     ostreambuf_iterator&amp; operator++(int);<br />
-T     bool failed() const throw();<br />
-    };<br />
-<br />
-<br />
-   Header &lt;algorithm&gt; synopsis<br />
-<br />
-<br />
-    // _lib.alg.nonmodifying_, non-modifying sequence operations:<br />
-T   template&lt;class InputIterator, class Function&gt;<br />
-      Function for_each(InputIterator first, InputIterator last, Function f);<br />
-T   template&lt;class InputIterator, class T&gt;<br />
-      InputIterator find(InputIterator first, InputIterator last,<br />
-                         const T&amp; value);<br />
-T   template&lt;class InputIterator, class Predicate&gt;<br />
-      InputIterator find_if(InputIterator first, InputIterator last,<br />
-                            Predicate pred);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      ForwardIterator1<br />
-        find_end(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                 ForwardIterator2 first2, ForwardIterator2 last2);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2,<br />
-             class BinaryPredicate&gt;<br />
-      ForwardIterator1<br />
-        find_end(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                 ForwardIterator2 first2, ForwardIterator2 last2,<br />
-                 BinaryPredicate pred);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      ForwardIterator1<br />
-        find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                      ForwardIterator2 first2, ForwardIterator2 last2);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2,<br />
-             class BinaryPredicate&gt;<br />
-      ForwardIterator1<br />
-        find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                 ForwardIterator2 first2, ForwardIterator2 last2,<br />
-                 BinaryPredicate pred);<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      ForwardIterator adjacent_find(ForwardIterator first,<br />
-                                    ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class BinaryPredicate&gt;<br />
-      ForwardIterator adjacent_find(ForwardIterator first,<br />
-          ForwardIterator last, BinaryPredicate pred);<br />
-T   template&lt;class InputIterator, class T&gt;<br />
-      typename iterator_traits&lt;InputIterator&gt;::difference_type<br />
-        count(InputIterator first, InputIterator last, const T&amp; value);<br />
-T   template&lt;class InputIterator, class Predicate&gt;<br />
-      typename iterator_traits&lt;InputIterator&gt;::difference_type<br />
-        count_if(InputIterator first, InputIterator last, Predicate pred);<br />
-T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
-      pair&lt;InputIterator1, InputIterator2&gt;<br />
-        mismatch(InputIterator1 first1, InputIterator1 last1,<br />
-                 InputIterator2 first2);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class BinaryPredicate&gt;<br />
-      pair&lt;InputIterator1, InputIterator2&gt;<br />
-        mismatch(InputIterator1 first1, InputIterator1 last1,<br />
-                 InputIterator2 first2, BinaryPredicate pred);<br />
-<br />
-T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
-      bool equal(InputIterator1 first1, InputIterator1 last1,<br />
-                 InputIterator2 first2);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class BinaryPredicate&gt;<br />
-      bool equal(InputIterator1 first1, InputIterator1 last1,<br />
-                 InputIterator2 first2, BinaryPredicate pred);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                              ForwardIterator2 first2, ForwardIterator2 last2);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2,<br />
-             class BinaryPredicate&gt;<br />
-      ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                              ForwardIterator2 first2, ForwardIterator2 last2,<br />
-                              BinaryPredicate pred);<br />
-T   template&lt;class ForwardIterator, class Size, class T&gt;<br />
-      ForwardIterator  search_n(ForwardIterator first, ForwardIterator last,<br />
-                              Size count, const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class Size, class T, class BinaryPredicate&gt;<br />
-      ForwardIterator1 search_n(ForwardIterator first, ForwardIterator last,<br />
-                              Size count, const T&amp; value,<br />
-                              BinaryPredicate pred);<br />
-    // _lib.alg.modifying.operations_, modifying sequence operations:<br />
-    // _lib.alg.copy_, copy:<br />
-T   template&lt;class InputIterator, class OutputIterator&gt;<br />
-      OutputIterator copy(InputIterator first, InputIterator last,<br />
-                          OutputIterator result);<br />
-T   template&lt;class BidirectionalIterator1, class BidirectionalIterator2&gt;<br />
-      BidirectionalIterator2<br />
-        copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last,<br />
-                      BidirectionalIterator2 result);<br />
-    // _lib.alg.swap_, swap:<br />
-T   template&lt;class T&gt; void swap(T&amp; a, T&amp; b);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      ForwardIterator2 swap_ranges(ForwardIterator1 first1,<br />
-          ForwardIterator1 last1, ForwardIterator2 first2);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      void iter_swap(ForwardIterator1 a, ForwardIterator2 b);<br />
-T   template&lt;class InputIterator, class OutputIterator, class UnaryOperation&gt;<br />
-      OutputIterator transform(InputIterator first, InputIterator last,<br />
-                               OutputIterator result, UnaryOperation op);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class BinaryOperation&gt;<br />
-      OutputIterator transform(InputIterator1 first1, InputIterator1 last1,<br />
-                               InputIterator2 first2, OutputIterator result,<br />
-                               BinaryOperation binary_op);<br />
-<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      void replace(ForwardIterator first, ForwardIterator last,<br />
-                   const T&amp; old_value, const T&amp; new_value);<br />
-T   template&lt;class ForwardIterator, class Predicate, class T&gt;<br />
-      void replace_if(ForwardIterator first, ForwardIterator last,<br />
-                      Predicate pred, const T&amp; new_value);<br />
-T   template&lt;class InputIterator, class OutputIterator, class T&gt;<br />
-      OutputIterator replace_copy(InputIterator first, InputIterator last,<br />
-                                  OutputIterator result,<br />
-                                  const T&amp; old_value, const T&amp; new_value);<br />
-T   template&lt;class Iterator, class OutputIterator, class Predicate, class T&gt;<br />
-      OutputIterator replace_copy_if(Iterator first, Iterator last,<br />
-                                     OutputIterator result,<br />
-                                     Predicate pred, const T&amp; new_value);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      void fill(ForwardIterator first, ForwardIterator last, const T&amp; value);<br />
-T   template&lt;class OutputIterator, class Size, class T&gt;<br />
-      void fill_n(OutputIterator first, Size n, const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class Generator&gt;<br />
-      void generate(ForwardIterator first, ForwardIterator last, Generator gen);<br />
-T   template&lt;class OutputIterator, class Size, class Generator&gt;<br />
-      void generate_n(OutputIterator first, Size n, Generator gen);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      ForwardIterator remove(ForwardIterator first, ForwardIterator last,<br />
-                             const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class Predicate&gt;<br />
-      ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,<br />
-                                Predicate pred);<br />
-T   template&lt;class InputIterator, class OutputIterator, class T&gt;<br />
-      OutputIterator remove_copy(InputIterator first, InputIterator last,<br />
-                                 OutputIterator result, const T&amp; value);<br />
-T   template&lt;class InputIterator, class OutputIterator, class Predicate&gt;<br />
-      OutputIterator remove_copy_if(InputIterator first, InputIterator last,<br />
-                                    OutputIterator result, Predicate pred);<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      ForwardIterator unique(ForwardIterator first, ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class BinaryPredicate&gt;<br />
-      ForwardIterator unique(ForwardIterator first, ForwardIterator last,<br />
-                             BinaryPredicate pred);<br />
-T   template&lt;class InputIterator, class OutputIterator&gt;<br />
-      OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
-                                 OutputIterator result);<br />
-T   template&lt;class InputIterator, class OutputIterator, class BinaryPredicate&gt;<br />
-      OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
-                                 OutputIterator result, BinaryPredicate pred);<br />
-T   template&lt;class BidirectionalIterator&gt;<br />
-      void reverse(BidirectionalIterator first, BidirectionalIterator last);<br />
-T   template&lt;class BidirectionalIterator, class OutputIterator&gt;<br />
-      OutputIterator reverse_copy(BidirectionalIterator first,<br />
-                                  BidirectionalIterator last,<br />
-                                  OutputIterator result);<br />
-<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      void rotate(ForwardIterator first, ForwardIterator middle,<br />
-                  ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class OutputIterator&gt;<br />
-      OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle,<br />
-                                 ForwardIterator last, OutputIterator result);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void random_shuffle(RandomAccessIterator first,<br />
-                          RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class RandomNumberGenerator&gt;<br />
-      void random_shuffle(RandomAccessIterator first,<br />
-                          RandomAccessIterator last,<br />
-                          RandomNumberGenerator&amp; rand);<br />
-    // _lib.alg.partitions_, partitions:<br />
-T   template&lt;class BidirectionalIterator, class Predicate&gt;<br />
-      BidirectionalIterator partition(BidirectionalIterator first,<br />
-                                      BidirectionalIterator last,<br />
-                                      Predicate pred);<br />
-T   template&lt;class BidirectionalIterator, class Predicate&gt;<br />
-      BidirectionalIterator stable_partition(BidirectionalIterator first,<br />
-                                             BidirectionalIterator last,<br />
-                                             Predicate pred);<br />
-    // _lib.alg.sorting_, sorting and related operations:<br />
-    // _lib.alg.sort_, sorting:<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void sort(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void sort(RandomAccessIterator first, RandomAccessIterator last,<br />
-                Compare comp);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void stable_sort(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void stable_sort(RandomAccessIterator first, RandomAccessIterator last,<br />
-                       Compare comp);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void partial_sort(RandomAccessIterator first,<br />
-                        RandomAccessIterator middle,<br />
-                        RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void partial_sort(RandomAccessIterator first,<br />
-                        RandomAccessIterator middle,<br />
-                        RandomAccessIterator last, Compare comp);<br />
-T   template&lt;class InputIterator, class RandomAccessIterator&gt;<br />
-      RandomAccessIterator<br />
-        partial_sort_copy(InputIterator first, InputIterator last,<br />
-                          RandomAccessIterator result_first,<br />
-                          RandomAccessIterator result_last);<br />
-T   template&lt;class InputIterator, class RandomAccessIterator, class Compare&gt;<br />
-      RandomAccessIterator<br />
-        partial_sort_copy(InputIterator first, InputIterator last,<br />
-                          RandomAccessIterator result_first,<br />
-                          RandomAccessIterator result_last,<br />
-                          Compare comp);<br />
-<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void nth_element(RandomAccessIterator first, RandomAccessIterator nth,<br />
-                       RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void nth_element(RandomAccessIterator first, RandomAccessIterator nth,<br />
-                       RandomAccessIterator last, Compare comp);<br />
-    // _lib.alg.binary.search_, binary search:<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
-                                  const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
-      ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
-                                  const T&amp; value, Compare comp);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
-                                  const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
-      ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
-                                  const T&amp; value, Compare comp);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      pair&lt;ForwardIterator, ForwardIterator&gt;<br />
-        equal_range(ForwardIterator first, ForwardIterator last,<br />
-                    const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
-      pair&lt;ForwardIterator, ForwardIterator&gt;<br />
-        equal_range(ForwardIterator first, ForwardIterator last,<br />
-                    const T&amp; value, Compare comp);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      bool binary_search(ForwardIterator first, ForwardIterator last,<br />
-                         const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
-      bool binary_search(ForwardIterator first, ForwardIterator last,<br />
-                         const T&amp; value, Compare comp);<br />
-    // _lib.alg.merge_, merge:<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
-                           InputIterator2 first2, InputIterator2 last2,<br />
-                           OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class Compare&gt;<br />
-      OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
-                           InputIterator2 first2, InputIterator2 last2,<br />
-                           OutputIterator result, Compare comp);<br />
-T   template&lt;class BidirectionalIterator&gt;<br />
-      void inplace_merge(BidirectionalIterator first,<br />
-                         BidirectionalIterator middle,<br />
-                         BidirectionalIterator last);<br />
-T   template&lt;class BidirectionalIterator, class Compare&gt;<br />
-      void inplace_merge(BidirectionalIterator first,<br />
-                         BidirectionalIterator middle,<br />
-                         BidirectionalIterator last, Compare comp);<br />
-<br />
-    // _lib.alg.set.operations_, set operations:<br />
-T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
-      bool includes(InputIterator1 first1, InputIterator1 last1,<br />
-                    InputIterator2 first2, InputIterator2 last2);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class Compare&gt;<br />
-      bool includes(InputIterator1 first1, InputIterator1 last1,<br />
-                    InputIterator2 first2, InputIterator2 last2, Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,<br />
-                               InputIterator2 first2, InputIterator2 last2,<br />
-                               OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class Compare&gt;<br />
-      OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,<br />
-                               InputIterator2 first2, InputIterator2 last2,<br />
-                               OutputIterator result, Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator set_intersection<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2,<br />
-           OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class Compare&gt;<br />
-      OutputIterator set_intersection<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2,<br />
-           OutputIterator result, Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator set_difference<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2,<br />
-           OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class Compare&gt;<br />
-      OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1,<br />
-                                    InputIterator2 first2, InputIterator2 last2,<br />
-                                    OutputIterator result, Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator<br />
-        set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,<br />
-                                 InputIterator2 first2, InputIterator2 last2,<br />
-                                 OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-              class Compare&gt;<br />
-      OutputIterator<br />
-        set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,<br />
-                                 InputIterator2 first2, InputIterator2 last2,<br />
-                                 OutputIterator result, Compare comp);<br />
-    // _lib.alg.heap.operations_, heap operations:<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void push_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void push_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
-                     Compare comp);<br />
-<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void pop_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void pop_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
-                    Compare comp);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void make_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void make_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
-                     Compare comp);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void sort_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void sort_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
-                     Compare comp);<br />
-    // _lib.alg.min.max_, minimum and maximum:<br />
-T   template&lt;class T&gt; const T&amp; min(const T&amp; a, const T&amp; b);<br />
-T   template&lt;class T, class Compare&gt;<br />
-      const T&amp; min(const T&amp; a, const T&amp; b, Compare comp);<br />
-T   template&lt;class T&gt; const T&amp; max(const T&amp; a, const T&amp; b);<br />
-T   template&lt;class T, class Compare&gt;<br />
-      const T&amp; max(const T&amp; a, const T&amp; b, Compare comp);<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      ForwardIterator min_element(ForwardIterator first, ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class Compare&gt;<br />
-      ForwardIterator min_element(ForwardIterator first, ForwardIterator last,<br />
-                                Compare comp);<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      ForwardIterator max_element(ForwardIterator first, ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class Compare&gt;<br />
-      ForwardIterator max_element(ForwardIterator first, ForwardIterator last,<br />
-                                Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
-      bool lexicographical_compare<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class Compare&gt;<br />
-      bool lexicographical_compare<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2,<br />
-           Compare comp);<br />
-<br />
-    // _lib.alg.permutation.generators_, permutations<br />
-T   template&lt;class BidirectionalIterator&gt;<br />
-      bool next_permutation(BidirectionalIterator first,<br />
-                            BidirectionalIterator last);<br />
-T   template&lt;class BidirectionalIterator, class Compare&gt;<br />
-      bool next_permutation(BidirectionalIterator first,<br />
-                            BidirectionalIterator last, Compare comp);<br />
-T   template&lt;class BidirectionalIterator&gt;<br />
-      bool prev_permutation(BidirectionalIterator first,<br />
-                            BidirectionalIterator last);<br />
-T   template&lt;class BidirectionalIterator, class Compare&gt;<br />
-      bool prev_permutation(BidirectionalIterator first,<br />
-                            BidirectionalIterator last, Compare comp);<br />
-<br />
-<br />
-   25.4  C library algorithms                         [lib.alg.c.library]<br />
-<br />
-   1 Header &lt;cstdlib&gt; (partial, Table 2):<br />
-<br />
-                    Table 2--Header &lt;cstdlib&gt; synopsis<br />
-<br />
-                      Functions:   bsearch   qsort<br />
-<br />
-<br />
-X  extern "C" void *bsearch(const void *key, const void *base,<br />
-                          size_t nmemb, size_t size,<br />
-                          int (*compar)(const void *, const void *));<br />
-X  extern "C++" void *bsearch(const void *key, const void *base,<br />
-                          size_t nmemb, size_t size,<br />
-                          int (*compar)(const void *, const void *));<br />
-<br />
-X  extern "C" void qsort(void* base, size_t nmemb, size_t size,<br />
-                  int (*compar)(const void*, const void*));<br />
-X  extern "C++" void qsort(void* base, size_t nmemb, size_t size,<br />
-                  int (*compar)(const void*, const void*));<br />
-<br />
-<br />
-<br />
-   26.2  Complex numbers                            [lib.complex.numbers]<br />
-<br />
-<br />
-   26.2.1  Header &lt;complex&gt; synopsis               [lib.complex.synopsis]<br />
-<br />
-T   template&lt;class T&gt; class complex;<br />
-T   template&lt;&gt; class complex&lt;float&gt;;<br />
-T   template&lt;&gt; class complex&lt;double&gt;;<br />
-T   template&lt;&gt; class complex&lt;long double&gt;;<br />
-    // _lib.complex.ops_ operators:<br />
-T   template&lt;class T&gt;<br />
-      complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator==<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; bool operator==(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T, class charT, class traits&gt;<br />
-      basic_istream&lt;charT, traits&gt;&amp;<br />
-      operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp;, complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T, class charT, class traits&gt;<br />
-      basic_ostream&lt;charT, traits&gt;&amp;<br />
-      operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-    // _lib.complex.value.ops_ values:<br />
-T   template&lt;class T&gt; T real(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; T imag(const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; T abs(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; T arg(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; T norm(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; conj(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp;, const T&amp;);<br />
-    // _lib.complex.transcendentals_ transcendentals:<br />
-T   template&lt;class T&gt; complex&lt;T&gt; cos  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; cosh (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; exp  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; log  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; log10(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, int);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; pow(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; sin  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; sinh (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; sqrt (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; tan  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; tanh (const complex&lt;T&gt;&amp;);<br />
-   }<br />
-<br />
-   26.2.2  Template class complex                           [lib.complex]<br />
-<br />
-    template&lt;class T&gt;<br />
-T   class complex {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     complex(const T&amp; re = T(), const T&amp; im = T());<br />
-T     complex(const complex&amp;);<br />
-T     template&lt;class X&gt; complex(const complex&lt;X&gt;&amp;);<br />
-<br />
-T     T real() const;<br />
-T     T imag() const;<br />
-<br />
-T     complex&lt;T&gt;&amp; operator= (const T&amp;);<br />
-T     complex&lt;T&gt;&amp; operator+=(const T&amp;);<br />
-T     complex&lt;T&gt;&amp; operator-=(const T&amp;);<br />
-T     complex&lt;T&gt;&amp; operator*=(const T&amp;);<br />
-T     complex&lt;T&gt;&amp; operator/=(const T&amp;);<br />
-<br />
-T     complex&amp; operator=(const complex&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
-    };<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; bool operator==(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T, class charT, class traits&gt;<br />
-      basic_istream&lt;charT, traits&gt;&amp;<br />
-      operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp;, complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T, class charT, class traits&gt;<br />
-      basic_ostream&lt;charT, traits&gt;&amp;<br />
-      operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-<br />
-   26.2.3  complex specializations                  [lib.complex.special]<br />
-<br />
-T   template&lt;&gt; class complex&lt;float&gt; {<br />
-    public:<br />
-T     typedef float value_type;<br />
-<br />
-T     complex(float re = 0.0f, float im = 0.0f);<br />
-T     explicit complex(const complex&lt;double&gt;&amp;);<br />
-T     explicit complex(const complex&lt;long double&gt;&amp;);<br />
-T     float real() const;<br />
-T     float imag() const;<br />
-<br />
-T     complex&lt;float&gt;&amp; operator= (float);<br />
-T     complex&lt;float&gt;&amp; operator+=(float);<br />
-T     complex&lt;float&gt;&amp; operator-=(float);<br />
-T     complex&lt;float&gt;&amp; operator*=(float);<br />
-T     complex&lt;float&gt;&amp; operator/=(float);<br />
-<br />
-T     complex&lt;float&gt;&amp; operator=(const complex&lt;float&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
-    };<br />
-T   template&lt;&gt; class complex&lt;double&gt; {<br />
-    public:<br />
-T     typedef double value_type;<br />
-<br />
-T     complex(double re = 0.0, double im = 0.0);<br />
-T     complex(const complex&lt;float&gt;&amp;);<br />
-T     explicit complex(const complex&lt;long double&gt;&amp;);<br />
-T     double real() const;<br />
-T     double imag() const;<br />
-<br />
-T     complex&lt;double&gt;&amp; operator= (double);<br />
-T     complex&lt;double&gt;&amp; operator+=(double);<br />
-T     complex&lt;double&gt;&amp; operator-=(double);<br />
-T     complex&lt;double&gt;&amp; operator*=(double);<br />
-T     complex&lt;double&gt;&amp; operator/=(double);<br />
-<br />
-T     complex&lt;double&gt;&amp; operator=(const complex&lt;double&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
-    };<br />
-<br />
-T   template&lt;&gt; class complex&lt;long double&gt; {<br />
-    public:<br />
-T     typedef long double value_type;<br />
-<br />
-T     complex(long double re = 0.0L, long double im = 0.0L);<br />
-T     complex(const complex&lt;float&gt;&amp;);<br />
-T     complex(const complex&lt;double&gt;&amp;);<br />
-T     long double real() const;<br />
-T     long double imag() const;<br />
-<br />
-T     complex&lt;long double&gt;&amp; operator=(const complex&lt;long double&gt;&amp;);<br />
-T     complex&lt;long double&gt;&amp; operator= (long double);<br />
-T     complex&lt;long double&gt;&amp; operator+=(long double);<br />
-T     complex&lt;long double&gt;&amp; operator-=(long double);<br />
-T     complex&lt;long double&gt;&amp; operator*=(long double);<br />
-T     complex&lt;long double&gt;&amp; operator/=(long double);<br />
-<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
-    };<br />
-<br />
-   26.3  Numeric arrays                                    [lib.numarray]<br />
-<br />
-   26.3.1  Header &lt;valarray&gt; synopsis             [lib.valarray.synopsis]<br />
-<br />
-T   template&lt;class T&gt; class valarray;         // An array of type T<br />
-T   class slice;<br />
-T   template&lt;class T&gt; class slice_array;<br />
-T   class gslice;<br />
-T   template&lt;class T&gt; class gslice_array;<br />
-T   template&lt;class T&gt; class mask_array;       // a masked array<br />
-T   template&lt;class T&gt; class indirect_array;   // an indirected array<br />
-<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator*<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator* (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator* (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator/<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator/ (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator/ (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator%<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator% (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator% (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator+<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator+ (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator+ (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator-<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator- (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator- (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator^<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator^ (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator^ (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&amp;<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&amp; (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&amp; (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator|<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator| (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator| (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator||<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator||(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator||(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator==(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator==(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator==(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator!=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator!=(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator!=(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator&lt; (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt; (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt; (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator&gt; (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt; (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt; (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator&lt;=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt;=(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt;=(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator&gt;=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt;=(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt;=(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; abs  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; acos (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; asin (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; atan (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; atan2<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; atan2(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; atan2(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; cos  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; cosh (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; exp  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; log  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; log10(const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; pow(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; pow(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; pow(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; sin  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; sinh (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; sqrt (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; tan  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; tanh (const valarray&lt;T&gt;&amp;);<br />
-   }<br />
-<br />
-<br />
-   26.3.2  Template class valarray                [lib.template.valarray]<br />
-<br />
-T   template&lt;class T&gt; class valarray {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-      // _lib.valarray.cons_ construct/destroy:<br />
-T     valarray();<br />
-T     explicit valarray(size_t);<br />
-T     valarray(const T&amp;, size_t);<br />
-T     valarray(const T*, size_t);<br />
-T     valarray(const valarray&amp;);<br />
-T     valarray(const slice_array&lt;T&gt;&amp;);<br />
-T     valarray(const gslice_array&lt;T&gt;&amp;);<br />
-T     valarray(const mask_array&lt;T&gt;&amp;);<br />
-T     valarray(const indirect_array&lt;T&gt;&amp;);<br />
-T    ~valarray();<br />
-<br />
-      // _lib.valarray.assign_ assignment:<br />
-T     valarray&lt;T&gt;&amp; operator=(const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const slice_array&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const gslice_array&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const mask_array&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const indirect_array&lt;T&gt;&amp;);<br />
-      // _lib.valarray.access_ element access:<br />
-T     T                 operator[](size_t) const;<br />
-T     T&amp;                operator[](size_t);<br />
-      // _lib.valarray.sub_ subset operations:<br />
-T     valarray&lt;T&gt;       operator[](slice) const;<br />
-T     slice_array&lt;T&gt;    operator[](slice);<br />
-T     valarray&lt;T&gt;       operator[](const gslice&amp;) const;<br />
-T     gslice_array&lt;T&gt;   operator[](const gslice&amp;);<br />
-T     valarray&lt;T&gt;       operator[](const valarray&lt;bool&gt;&amp;) const;<br />
-T     mask_array&lt;T&gt;     operator[](const valarray&lt;bool&gt;&amp;);<br />
-T     valarray&lt;T&gt;       operator[](const valarray&lt;size_t&gt;&amp;) const;<br />
-T     indirect_array&lt;T&gt; operator[](const valarray&lt;size_t&gt;&amp;);<br />
-      // _lib.valarray.unary_ unary operators:<br />
-T     valarray&lt;T&gt; operator+() const;<br />
-T     valarray&lt;T&gt; operator-() const;<br />
-T     valarray&lt;T&gt; operator~() const;<br />
-T     valarray&lt;T&gt; operator!() const;<br />
-      // _lib.valarray.cassign_ computed assignment:<br />
-T     valarray&lt;T&gt;&amp; operator*= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator/= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator%= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator+= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator-= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator^= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&amp;= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator|= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&lt;&lt;=(const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&gt;&gt;=(const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator*= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator/= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator%= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator+= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator-= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator^= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator|= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&amp;= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&lt;&lt;=(const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&gt;&gt;=(const valarray&lt;T&gt;&amp;);<br />
-      // _lib.valarray.members_ member functions:<br />
-T     size_t size() const;<br />
-T     T    sum() const;<br />
-T     T    min() const;<br />
-T     T    max() const;<br />
-<br />
-T     valarray&lt;T&gt; shift (int) const;<br />
-T     valarray&lt;T&gt; cshift(int) const;<br />
-T     valarray&lt;T&gt; apply(T func(T)) const;<br />
-T     valarray&lt;T&gt; apply(T func(const T&amp;)) const;<br />
-T     void resize(size_t sz, T c = T());<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   26.3.4  Class slice                                  [lib.class.slice]<br />
-<br />
-T   class slice {<br />
-    public:<br />
-T     slice();<br />
-T     slice(size_t, size_t, size_t);<br />
-<br />
-T     size_t start() const;<br />
-T     size_t size() const;<br />
-T     size_t stride() const;<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   26.3.5  Template class slice_array          [lib.template.slice.array]<br />
-<br />
-T   template &lt;class T&gt; class slice_array {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator=(const T&amp;);<br />
-T    ~slice_array();<br />
-    private:<br />
-T     slice_array();<br />
-T     slice_array(const slice_array&amp;);<br />
-T     slice_array&amp; operator=(const slice_array&amp;);<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   26.3.6  The gslice class                            [lib.class.gslice]<br />
-<br />
-T   class gslice {<br />
-    public:<br />
-T     gslice();<br />
-T     gslice(size_t s, const valarray&lt;size_t&gt;&amp; l, const valarray&lt;size_t&gt;&amp; d);<br />
-<br />
-T     size_t           start() const;<br />
-T     valarray&lt;size_t&gt; size() const;<br />
-T     valarray&lt;size_t&gt; stride() const;<br />
-    };<br />
-<br />
-<br />
-   26.3.7  Template class gslice_array        [lib.template.gslice.array]<br />
-<br />
-T   template &lt;class T&gt; class gslice_array {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator=(const T&amp;);<br />
-T    ~gslice_array();<br />
-    private:<br />
-T     gslice_array();<br />
-T     gslice_array(const gslice_array&amp;);<br />
-T     gslice_array&amp; operator=(const gslice_array&amp;);<br />
-    };<br />
-<br />
-<br />
-   26.3.8  Template class mask_array            [lib.template.mask.array]<br />
-<br />
-T   template &lt;class T&gt; class mask_array {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator=(const T&amp;);<br />
-T    ~mask_array();<br />
-    private:<br />
-T     mask_array();<br />
-T     mask_array(const mask_array&amp;);<br />
-T     mask_array&amp; operator=(const mask_array&amp;);<br />
-      //  remainder implementation defined<br />
-    };<br />
-<br />
-<br />
-   26.3.9  Template class                   [lib.template.indirect.array]<br />
-       indirect_array<br />
-<br />
-T   template &lt;class T&gt; class indirect_array {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator=(const T&amp;);<br />
-T    ~indirect_array();<br />
-    private:<br />
-T     indirect_array();<br />
-T     indirect_array(const indirect_array&amp;);<br />
-T     indirect_array&amp; operator=(const indirect_array&amp;);<br />
-      //  remainder implementation defined<br />
-    };<br />
-<br />
-   26.4  Generalized numeric operations                 [lib.numeric.ops]<br />
-<br />
-   Header &lt;numeric&gt; synopsis<br />
-<br />
-T   template &lt;class InputIterator, class T&gt;<br />
-      T accumulate(InputIterator first, InputIterator last, T init);<br />
-<br />
-T   template &lt;class InputIterator, class T, class BinaryOperation&gt;<br />
-      T accumulate(InputIterator first, InputIterator last, T init,<br />
-                   BinaryOperation binary_op);<br />
-<br />
-T   template &lt;class InputIterator1, class InputIterator2, class T&gt;<br />
-      T inner_product(InputIterator1 first1, InputIterator1 last1,<br />
-                      InputIterator2 first2, T init);<br />
-<br />
-T   template &lt;class InputIterator1, class InputIterator2, class T,<br />
-              class BinaryOperation1, class BinaryOperation2&gt;<br />
-      T inner_product(InputIterator1 first1, InputIterator1 last1,<br />
-                      InputIterator2 first2, T init,<br />
-                      BinaryOperation1 binary_op1,<br />
-                      BinaryOperation2 binary_op2);<br />
-<br />
-T   template &lt;class InputIterator, class OutputIterator&gt;<br />
-      OutputIterator partial_sum(InputIterator first,<br />
-                                 InputIterator last,<br />
-                                 OutputIterator result);<br />
-<br />
-T   template &lt;class InputIterator, class OutputIterator,<br />
-              class BinaryOperation&gt;<br />
-      OutputIterator partial_sum(InputIterator first,<br />
-                                 InputIterator last,<br />
-                                 OutputIterator result,<br />
-                                 BinaryOperation binary_op);<br />
-<br />
-T   template &lt;class InputIterator, class OutputIterator&gt;<br />
-      OutputIterator adjacent_difference(InputIterator first,<br />
-                                         InputIterator last,<br />
-                                         OutputIterator result);<br />
-<br />
-T   template &lt;class InputIterator, class OutputIterator,<br />
-              class BinaryOperation&gt;<br />
-      OutputIterator adjacent_difference(InputIterator first,<br />
-                                         InputIterator last,<br />
-                                         OutputIterator result,<br />
-                                         BinaryOperation binary_op);<br />
-<br />
-<br />
-   26.5  C Library                                           [lib.c.math]<br />
-<br />
-                     Table 2--Header &lt;cmath&gt; synopsis<br />
-X               Macro:   HUGE_VAL<br />
-                Functions:<br />
-X               acos     cos        fmod    modf   tan<br />
-X               asin     cosh       frexp   pow    tanh<br />
-X               atan     exp        ldexp   sin<br />
-X               atan2    fabs       log     sinh<br />
-X               ceil     floor      log10   sqrt<br />
-<br />
-                    Table 3--Header &lt;cstdlib&gt; synopsis<br />
-X                     Macros:   RAND_MAX<br />
-X                     Types:    div_t      ldiv_t<br />
-                      Functions:<br />
-X                     abs       labs       srand<br />
-X                     div       ldiv       rand<br />
-<br />
-X  long   abs(long);               // labs()<br />
-X  ldiv_t div(long, long);         // ldiv()<br />
-<br />
-X  float abs  (float);<br />
-X  float acos (float);<br />
-X  float asin (float);<br />
-X  float atan (float);<br />
-X  float atan2(float, float);<br />
-X  float ceil (float);<br />
-X  float cos  (float);<br />
-X  float cosh (float);<br />
-X  float exp  (float);<br />
-X  float fabs (float);<br />
-X  float floor(float);<br />
-X  float fmod (float, float);<br />
-X  float frexp(float, int*);<br />
-X  float ldexp(float, int);<br />
-X  float log  (float);<br />
-X  float log10(float);<br />
-X  float modf (float, float*);<br />
-X  float pow  (float, float);<br />
-X  float pow  (float, int);<br />
-X  float sin  (float);<br />
-X  float sinh (float);<br />
-X  float sqrt (float);<br />
-X  float tan  (float);<br />
-X  float tanh (float);<br />
-<br />
-X  double abs(double);            // fabs()<br />
-X  double pow(double, int);<br />
-<br />
-X  long double abs  (long double);<br />
-X  long double acos (long double);<br />
-X  long double asin (long double);<br />
-X  long double atan (long double);<br />
-X  long double atan2(long double, long double);<br />
-X  long double ceil (long double);<br />
-X  long double cos  (long double);<br />
-X  long double cosh (long double);<br />
-X  long double exp  (long double);<br />
-X  long double fabs (long double);<br />
-X  long double floor(long double);<br />
-X  long double fmod (long double, long double);<br />
-X  long double frexp(long double, int*);<br />
-X  long double ldexp(long double, int);<br />
-X  long double log  (long double);<br />
-X  long double log10(long double);<br />
-X  long double modf (long double, long double*);<br />
-X  long double pow  (long double, long double);<br />
-X  long double pow  (long double, int);<br />
-X  long double sin  (long double);<br />
-X  long double sinh (long double);<br />
-X  long double sqrt (long double);<br />
-X  long double tan  (long double);<br />
-X  long double tanh (long double);<br />
-<br />
-   Header &lt;iosfwd&gt; synopsis<br />
-<br />
-X   template&lt;class charT&gt; class char_traits;<br />
-X   template&lt;&gt; class char_traits&lt;char&gt;;<br />
-X   template&lt;&gt; class char_traits&lt;wchar_t&gt;;<br />
-X   template&lt;class T&gt; class allocator;<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ios;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_streambuf;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_istream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ostream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_iostream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_stringbuf;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_istringstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_ostringstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_stringstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_filebuf;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ifstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ofstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_fstream;<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class istreambuf_iterator;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class ostreambuf_iterator;<br />
-X   typedef basic_ios&lt;char&gt;       ios;<br />
-X   typedef basic_ios&lt;wchar_t&gt;    wios;<br />
-X   typedef basic_streambuf&lt;char&gt; streambuf;<br />
-X   typedef basic_istream&lt;char&gt;   istream;<br />
-X   typedef basic_ostream&lt;char&gt;   ostream;<br />
-X   typedef basic_iostream&lt;char&gt;  iostream;<br />
-X   typedef basic_stringbuf&lt;char&gt;     stringbuf;<br />
-X   typedef basic_istringstream&lt;char&gt; istringstream;<br />
-X   typedef basic_ostringstream&lt;char&gt; ostringstream;<br />
-X   typedef basic_stringstream&lt;char&gt;  stringstream;<br />
-X   typedef basic_filebuf&lt;char&gt;  filebuf;<br />
-X   typedef basic_ifstream&lt;char&gt; ifstream;<br />
-X   typedef basic_ofstream&lt;char&gt; ofstream;<br />
-X   typedef basic_fstream&lt;char&gt;  fstream;<br />
-X   typedef basic_streambuf&lt;wchar_t&gt; wstreambuf;<br />
-X   typedef basic_istream&lt;wchar_t&gt;   wistream;<br />
-X   typedef basic_ostream&lt;wchar_t&gt;   wostream;<br />
-X   typedef basic_iostream&lt;wchar_t&gt;  wiostream;<br />
-X   typedef basic_stringbuf&lt;wchar_t&gt;     wstringbuf;<br />
-X   typedef basic_istringstream&lt;wchar_t&gt; wistringstream;<br />
-X   typedef basic_ostringstream&lt;wchar_t&gt; wostringstream;<br />
-X   typedef basic_stringstream&lt;wchar_t&gt;  wstringstream;<br />
-<br />
-X   typedef basic_filebuf&lt;wchar_t&gt;  wfilebuf;<br />
-X   typedef basic_ifstream&lt;wchar_t&gt; wifstream;<br />
-X   typedef basic_ofstream&lt;wchar_t&gt; wofstream;<br />
-X   typedef basic_fstream&lt;wchar_t&gt;  wfstream;<br />
-X   template &lt;class state&gt; class fpos;<br />
-X   typedef fpos&lt;char_traits&lt;char&gt;::state_type&gt;    streampos;<br />
-X   typedef fpos&lt;char_traits&lt;wchar_t&gt;::state_type&gt; wstreampos;<br />
-<br />
-   27.3  Standard iostream objects                 [lib.iostream.objects]<br />
-<br />
-   Header &lt;iostream&gt; synopsis<br />
-<br />
-T  [must also include &lt;istream&gt; and &lt;ostream&gt;]<br />
-T   extern istream cin;<br />
-T   extern ostream cout;<br />
-T   extern ostream cerr;<br />
-T   extern ostream clog;<br />
-<br />
-T   extern wistream wcin;<br />
-T   extern wostream wcout;<br />
-T   extern wostream wcerr;<br />
-T   extern wostream wclog;<br />
-<br />
-   27.4  Iostreams base classes                      [lib.iostreams.base]<br />
-<br />
-   Header &lt;ios&gt; synopsis<br />
-<br />
-   #include &lt;iosfwd&gt;<br />
-<br />
-T   typedef OFF_T  streamoff;<br />
-T   typedef SZ_T streamsize;<br />
-T   template &lt;class stateT&gt; class fpos;<br />
-<br />
-    class ios_base;<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ios;<br />
-   // _lib.std.ios.manip_, manipulators:<br />
-T   ios_base&amp; boolalpha  (ios_base&amp; str);<br />
-T   ios_base&amp; noboolalpha(ios_base&amp; str);<br />
-T   ios_base&amp; showbase   (ios_base&amp; str);<br />
-T   ios_base&amp; noshowbase (ios_base&amp; str);<br />
-T   ios_base&amp; showpoint  (ios_base&amp; str);<br />
-T   ios_base&amp; noshowpoint(ios_base&amp; str);<br />
-T   ios_base&amp; showpos    (ios_base&amp; str);<br />
-T   ios_base&amp; noshowpos  (ios_base&amp; str);<br />
-T   ios_base&amp; skipws     (ios_base&amp; str);<br />
-T   ios_base&amp; noskipws   (ios_base&amp; str);<br />
-T   ios_base&amp; nouppercase(ios_base&amp; str);<br />
-T   ios_base&amp; uppercase  (ios_base&amp; str);<br />
-M   ios_base&amp; unitbuf    (ios_base&amp; str);<br />
-M   ios_base&amp; nounitbuf  (ios_base&amp; str);<br />
-   // _lib.adjustfield.manip_ adjustfield:<br />
-T   ios_base&amp; internal   (ios_base&amp; str);<br />
-T   ios_base&amp; left       (ios_base&amp; str);<br />
-T   ios_base&amp; right      (ios_base&amp; str);<br />
-   // _lib.basefield.manip_ basefield:<br />
-T   ios_base&amp; dec        (ios_base&amp; str);<br />
-T   ios_base&amp; hex        (ios_base&amp; str);<br />
-T   ios_base&amp; oct        (ios_base&amp; str);<br />
-<br />
-   // _lib.floatfield.manip_ floatfield:<br />
-T   ios_base&amp; fixed      (ios_base&amp; str);<br />
-T   ios_base&amp; scientific (ios_base&amp; str);<br />
-<br />
-<br />
-   27.4.2  Class ios_base                                  [lib.ios.base]<br />
-<br />
-T   class ios_base {<br />
-    public:<br />
-      class failure;<br />
-T     typedef T1 fmtflags;<br />
-T     static const fmtflags boolalpha;<br />
-T     static const fmtflags dec;<br />
-T     static const fmtflags fixed;<br />
-T     static const fmtflags hex;<br />
-T     static const fmtflags internal;<br />
-T     static const fmtflags left;<br />
-T     static const fmtflags oct;<br />
-T     static const fmtflags right;<br />
-T     static const fmtflags scientific;<br />
-T     static const fmtflags showbase;<br />
-T     static const fmtflags showpoint;<br />
-T     static const fmtflags showpos;<br />
-T     static const fmtflags skipws;<br />
-X     static const fmtflags unitbuf;<br />
-T     static const fmtflags uppercase;<br />
-T     static const fmtflags adjustfield;<br />
-T     static const fmtflags basefield;<br />
-T     static const fmtflags floatfield;<br />
-<br />
-      typedef T2 iostate;<br />
-T     static const iostate badbit;<br />
-T     static const iostate eofbit;<br />
-T     static const iostate failbit;<br />
-T     static const iostate goodbit;<br />
-T     typedef T3 openmode;<br />
-T     static const openmode app;<br />
-T     static const openmode ate;<br />
-T     static const openmode binary;<br />
-T     static const openmode in;<br />
-T     static const openmode out;<br />
-T     static const openmode trunc;<br />
-T     typedef T4 seekdir;<br />
-T     static const seekdir beg;<br />
-T     static const seekdir cur;<br />
-T     static const seekdir end;<br />
-T     class Init;<br />
-      // _lib.fmtflags.state_ fmtflags state:<br />
-T     fmtflags flags() const;<br />
-T     fmtflags flags(fmtflags fmtfl);<br />
-T     fmtflags setf(fmtflags fmtfl);<br />
-T     fmtflags setf(fmtflags fmtfl, fmtflags mask);<br />
-T     void unsetf(fmtflags mask);<br />
-T     streamsize precision() const;<br />
-T     streamsize precision(streamsize prec);<br />
-T     streamsize width() const;<br />
-T     streamsize width(streamsize wide);<br />
-      // _lib.ios.base.locales_ locales:<br />
-T     locale imbue(const locale&amp; loc);<br />
-T     locale getloc() const;<br />
-      // _lib.ios.base.storage_ storage:<br />
-T     static int xalloc();<br />
-T     long&amp;  iword(int index);<br />
-T     void*&amp; pword(int index);<br />
-      // destructor<br />
-T     virtual ~ios_base();<br />
-      // _lib.ios.base.callback_ callbacks;<br />
-T     enum event { erase_event, imbue_event, copyfmt_event };<br />
-T     typedef void (*event_callback)(event, ios_base&amp;, int index);<br />
-T     void register_callback(event_call_back fn, int index);<br />
-T     static bool sync_with_stdio(bool sync = true);<br />
-    protected:<br />
-T     ios_base();<br />
-    };<br />
-<br />
-   27.4.2.1.1  Class ios_base::failure                 [lib.ios::failure]<br />
-<br />
-T   class ios_base::failure : public exception {<br />
-    public:<br />
-T     explicit failure(const string&amp; msg);<br />
-T     virtual ~failure();<br />
-T     virtual const char* what() const throw();<br />
-    };<br />
-<br />
-<br />
-   27.4.2.1.6  Class ios_base::Init                       [lib.ios::Init]<br />
-<br />
-T   class ios_base::Init {<br />
-    public:<br />
-T     Init();<br />
-T    ~Init();<br />
-    };<br />
-<br />
-<br />
-   27.4.3  Template class fpos                                 [lib.fpos]<br />
-<br />
-X   template &lt;class stateT&gt; class fpos {<br />
-    public:<br />
-      // _lib.fpos.members_ Members<br />
-T     stateT state() const;<br />
-T     void state(stateT);<br />
-    private;<br />
-T     stateT st; // exposition only<br />
-    };<br />
-<br />
-<br />
-   27.4.5  Template class basic_ios                             [lib.ios]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ios : public ios_base {<br />
-    public:<br />
-<br />
-      // Types:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-T     operator void*() const<br />
-T     bool operator!() const<br />
-T     iostate rdstate() const;<br />
-T     void clear(iostate state = goodbit);<br />
-T     void setstate(iostate state);<br />
-T     bool good() const;<br />
-T     bool eof()  const;<br />
-T     bool fail() const;<br />
-T     bool bad()  const;<br />
-T     iostate exceptions() const;<br />
-T     void exceptions(iostate except);<br />
-      // _lib.basic.ios.cons_ Constructor/destructor:<br />
-T     explicit basic_ios(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-T     virtual ~basic_ios();<br />
-      // _lib.basic.ios.members_ Members:<br />
-T     basic_ostream&lt;charT,traits&gt;* tie() const;<br />
-T     basic_ostream&lt;charT,traits&gt;* tie(basic_ostream&lt;charT,traits&gt;* tiestr);<br />
-T     basic_streambuf&lt;charT,traits&gt;* rdbuf() const;<br />
-T     basic_streambuf&lt;charT,traits&gt;* rdbuf(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-X     basic_ios&amp; copyfmt(const basic_ios&amp; rhs);<br />
-T     char_type fill() const;<br />
-T     char_type fill(char_type ch);<br />
-      // _lib.ios.base.locales_ locales:<br />
-T     locale imbue(const locale&amp; loc);<br />
-X     char     narrow(char_type c, char dfault) const;<br />
-X     char_type widen(char c) const;<br />
-    protected:<br />
-      basic_ios();<br />
-T     void init(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-   private:<br />
-T     basic_ios(const basic_ios&amp; );       // not defined<br />
-T     basic_ios&amp; operator=(const basic_ios&amp;);     // not defined<br />
-    };<br />
-<br />
-<br />
-   27.5  Stream buffers                              [lib.stream.buffers]<br />
-<br />
-   Header &lt;streambuf&gt; synopsis<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_streambuf;<br />
-T   typedef basic_streambuf&lt;char&gt;     streambuf;<br />
-T   typedef basic_streambuf&lt;wchar_t&gt; wstreambuf;<br />
-<br />
-   27.5.2  Template class                                 [lib.streambuf]<br />
-       basic_streambuf&lt;charT,traits&gt;<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_streambuf {<br />
-    public:<br />
-<br />
-      // Types:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-T     virtual ~basic_streambuf();<br />
-      // _lib.streambuf.locales_ locales:<br />
-T     locale   pubimbue(const locale &amp;loc);<br />
-T     locale   getloc() const;<br />
-      // _lib.streambuf.buffer_ buffer and positioning:<br />
-T     basic_streambuf&lt;char_type,traits&gt;*<br />
-               pubsetbuf(char_type* s, streamsize n);<br />
-T     pos_type pubseekoff(off_type off, ios_base::seekdir way,<br />
-                          ios_base::openmode which =<br />
-                              ios_base::in | ios_base::out);<br />
-T     pos_type pubseekpos(pos_type sp,<br />
-                          ios_base::openmode which =<br />
-                              ios_base::in | ios_base::out);<br />
-T     int      pubsync();<br />
-<br />
-      // Get and put areas:<br />
-      // _lib.streambuf.pub.get_ Get area:<br />
-T     streamsize in_avail();<br />
-T     int_type snextc();<br />
-T     int_type sbumpc();<br />
-T     int_type sgetc();<br />
-T     streamsize sgetn(char_type* s, streamsize n);<br />
-      // _lib.streambuf.pub.pback_ Putback:<br />
-X     int_type sputbackc(char_type c);<br />
-X     int_type sungetc();<br />
-      // _lib.streambuf.pub.put_ Put area:<br />
-T     int_type   sputc(char_type c);<br />
-X     streamsize sputn(const char_type* s, streamsize n);<br />
-    protected:<br />
-T     basic_streambuf();<br />
-      // _lib.streambuf.get.area_ Get area:<br />
-T     char_type* eback() const;<br />
-T     char_type* gptr()  const;<br />
-T     char_type* egptr() const;<br />
-T     void       gbump(int n);<br />
-T     void       setg(char_type* gbeg, char_type* gnext, char_type* gend);<br />
-      // _lib.streambuf.put.area_ Put area:<br />
-T     char_type* pbase() const;<br />
-T     char_type* pptr() const;<br />
-T     char_type* epptr() const;<br />
-T     void       pbump(int n);<br />
-T     void       setp(char_type* pbeg, char_type* pend);<br />
-      // _lib.streambuf.virtuals_ virtual functions:<br />
-      // _lib.streambuf.virt.locales_ Locales:<br />
-T     virtual void imbue(const locale &amp;loc);<br />
-      // _lib.streambuf.virt.buffer_ Buffer management and positioning:<br />
-T     virtual basic_streambuf&lt;char_type,traits&gt;*<br />
-                       setbuf(char_type* s, streamsize n);<br />
-T     virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
-                ios_base::openmode which = ios_base::in | ios_base::out);<br />
-T     virtual pos_type seekpos(pos_type sp,<br />
-                ios_base::openmode which = ios_base::in | ios_base::out);<br />
-T     virtual int      sync();<br />
-      // _lib.streambuf.virt.get_ Get area:<br />
-T     virtual int        showmanyc();<br />
-T     virtual streamsize xsgetn(char_type* s, streamsize n);<br />
-T     virtual int_type   underflow();<br />
-T     virtual int_type   uflow();<br />
-      // _lib.streambuf.virt.pback_ Putback:<br />
-T     virtual int_type   pbackfail(int_type c = traits::eof());<br />
-      // _lib.streambuf.virt.put_ Put area:<br />
-X     virtual streamsize xsputn(const char_type* s, streamsize n);<br />
-T     virtual int_type   overflow (int_type c = traits::eof());<br />
-    };<br />
-<br />
-   27.6  Formatting and manipulators                [lib.iostream.format]<br />
-<br />
-   Header &lt;istream&gt; synopsis<br />
-<br />
-T   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_istream;<br />
-T   typedef basic_istream&lt;char&gt;     istream;<br />
-T   typedef basic_istream&lt;wchar_t&gt; wistream;<br />
-<br />
-T   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_iostream;<br />
-T   typedef basic_iostream&lt;char&gt;    iostream;<br />
-T   typedef basic_iostream&lt;wchar_t&gt; wiostream;<br />
-<br />
-X   template &lt;class charT, class traits&gt;<br />
-      basic_istream&lt;charT,traits&gt;&amp; ws(basic_istream&lt;charT,traits&gt;&amp; is);<br />
-<br />
-   Header &lt;ostream&gt; synopsis<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ostream;<br />
-T   typedef basic_ostream&lt;char&gt;     ostream;<br />
-T   typedef basic_ostream&lt;wchar_t&gt; wostream;<br />
-<br />
-T   template &lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; endl(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
-T   template &lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; ends(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
-T   template &lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; flush(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
-<br />
-   Header &lt;iomanip&gt; synopsis<br />
-<br />
-      // Types T1, T2, ... are unspecified implementation types<br />
-T     T1 resetiosflags(ios_base::fmtflags mask);<br />
-T     T2 setiosflags  (ios_base::fmtflags mask);<br />
-T     T3 setbase(int base);<br />
-T     template&lt;charT&gt; T4 setfill(charT c);<br />
-T     T5 setprecision(int n);<br />
-T     T6 setw(int n);<br />
-<br />
-<br />
-   27.6.1.1  Template class basic_istream                   [lib.istream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-T   class basic_istream : virtual public basic_ios&lt;charT,traits&gt; {<br />
-    public:<br />
-    // Types (inherited from basic_ios (_lib.ios_)):<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.istream.cons_ Constructor/destructor:<br />
-T     explicit basic_istream(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-T     virtual ~basic_istream();<br />
-      // _lib.istream::sentry_ Prefix/suffix:<br />
-T     class sentry;<br />
-<br />
-      // _lib.istream.formatted_ Formatted input:<br />
-T     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
-          (basic_istream&lt;charT,traits&gt;&amp; (*pf)(basic_istream&lt;charT,traits&gt;&amp;))<br />
-T     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
-          (basic_ios&lt;charT,traits&gt;&amp; (*pf)(basic_ios&lt;charT,traits&gt;&amp;))<br />
-T     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
-          (ios_base&amp; (*pf)(ios_base&amp;))<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(bool&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(short&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned short&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(int&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned int&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(long&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned long&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(float&amp; f);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(double&amp; f);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(long double&amp; f);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(void*&amp; p);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
-          (basic_streambuf&lt;char_type,traits&gt;* sb);<br />
-      // _lib.istream.unformatted_ Unformatted input:<br />
-T     streamsize gcount() const;<br />
-S     int_type get();<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(char_type&amp; c);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(char_type* s, streamsize n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(char_type* s, streamsize n,<br />
-                        char_type delim);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp; sb);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp; sb,<br />
-                        char_type delim);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; getline(char_type* s, streamsize n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; getline(char_type* s, streamsize n,<br />
-                        char_type delim);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; ignore<br />
-          (streamsize n = 1, int_type delim = traits::eof());<br />
-S     int_type                     peek();<br />
-S     basic_istream&lt;charT,traits&gt;&amp; read    (char_type* s, streamsize n);<br />
-S     streamsize                   readsome(char_type* s, streamsize n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; putback(char_type c);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; unget();<br />
-S     int sync();<br />
-<br />
-S     pos_type tellg();<br />
-S     basic_istream&lt;charT,traits&gt;&amp; seekg(pos_type);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; seekg(off_type, ios_base::seekdir);<br />
-    };<br />
-<br />
-    // _lib.istream::extractors_ character extraction templates:<br />
-S   template&lt;class charT, class traits&gt;<br />
-      basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;,<br />
-                                              charT&amp;);<br />
-S   template&lt;class traits&gt;<br />
-      basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
-                                             unsigned char&amp;);<br />
-S   template&lt;class traits&gt;<br />
-      basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
-                                             signed char&amp;);<br />
-<br />
-S   template&lt;class charT, class traits&gt;<br />
-      basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;,<br />
-                                              charT*);<br />
-S   template&lt;class traits&gt;<br />
-      basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
-                                             unsigned char*);<br />
-S   template&lt;class traits&gt;<br />
-      basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
-                                             signed char*);<br />
-<br />
-   27.6.1.1.2  Class basic_istream::sentry          [lib.istream::sentry]<br />
-<br />
-<br />
-    template &lt;class charT,class traits = char_traits&lt;charT&gt; &gt;<br />
-S   class basic_istream&lt;charT,traits&gt;::sentry {<br />
-      typedef traits traits_type;<br />
-S     bool ok_; // exposition only<br />
-     public:<br />
-S     explicit sentry(basic_istream&lt;charT,traits&gt;&amp; is, bool noskipws = false);<br />
-S     ~sentry();<br />
-S     operator bool() const { return ok_; }<br />
-     private:<br />
-T     sentry(const sentry&amp;); //   not defined<br />
-T     sentry&amp; operator=(const sentry&amp;); //   not defined<br />
-    };<br />
-<br />
-<br />
-   27.6.1.5  Template class basic_iostream            [lib.iostreamclass]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-T   class basic_iostream :<br />
-      public basic_istream&lt;charT,traits&gt;,<br />
-      public basic_ostream&lt;charT,traits&gt; {<br />
-    public:<br />
-      // constructor/destructor<br />
-T     explicit basic_iostream(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-T     virtual ~basic_iostream();<br />
-    };<br />
-<br />
-<br />
-   27.6.2.1  Template class basic_ostream                   [lib.ostream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ostream : virtual public basic_ios&lt;charT,traits&gt; {<br />
-    public:<br />
-    // Types (inherited from basic_ios (_lib.ios_)):<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.ostream.cons_ Constructor/destructor:<br />
-T     explicit basic_ostream(basic_streambuf&lt;char_type,traits&gt;* sb);<br />
-T     virtual ~basic_ostream();<br />
-      // _lib.ostream::sentry_ Prefix/suffix:<br />
-T     class sentry;<br />
-      // _lib.ostream.formatted_ Formatted output:<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
-          (basic_ostream&lt;charT,traits&gt;&amp; (*pf)(basic_ostream&lt;charT,traits&gt;&amp;));<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
-          (basic_ios&lt;charT,traits&gt;&amp; (*pf)(basic_ios&lt;charT,traits&gt;&amp;));<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
-          (ios_base&amp; (*pf)(ios_base&amp;));<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(bool n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(short n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned short n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(int n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned int n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(long n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned long n);<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(float f);<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(double f);<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(long double f);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(const void* p);<br />
-X     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
-          (basic_streambuf&lt;char_type,traits&gt;* sb);<br />
-      // _lib.ostream.unformatted_ Unformatted output:<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; put(char_type c);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; write(const char_type* s, streamsize n);<br />
-X     basic_ostream&lt;charT,traits&gt;&amp; flush();<br />
-<br />
-      // _lib.ostream.seeks_ seeks:<br />
-S     pos_type tellp();<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; seekp(pos_type);<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; seekp(off_type, ios_base::seekdir);<br />
-    };<br />
-    // _lib.ostream.inserters.character_ character inserters<br />
-X   template&lt;class charT, class traits&gt;<br />
-    basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
-                                            charT);<br />
-X   template&lt;class charT, class traits&gt;<br />
-    basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
-                                            char);<br />
-    // specialization<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             char);<br />
-    // signed and unsigned<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             signed char);<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             unsigned char)<br />
-X   template&lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
-                                              const charT*);<br />
-X   template&lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
-                                              const char*);<br />
-    // partial specializationss<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             const char*);<br />
-    //  signed and unsigned<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             const signed char*);<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             const unsigned char*);<br />
-<br />
-<br />
-   27.6.2.3  Class basic_ostream::sentry            [lib.ostream::sentry]<br />
-<br />
-    template &lt;class charT,class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ostream&lt;charT,traits&gt;::sentry {<br />
-      bool ok_; // exposition only<br />
-     public:<br />
-X     explicit sentry(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
-X     ~sentry();<br />
-X     operator bool() const { return ok_; }<br />
-     private<br />
-X     sentry(const sentry&amp;); //   not defined<br />
-X     sentry&amp; operator=(const sentry&amp;); //   not defined<br />
-    };<br />
-<br />
-   27.7  String-based streams                        [lib.string.streams]<br />
-<br />
-   Header &lt;sstream&gt; synopsis<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-                      class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_stringbuf;<br />
-<br />
-T   typedef basic_stringbuf&lt;char&gt;     stringbuf;<br />
-T   typedef basic_stringbuf&lt;wchar_t&gt; wstringbuf;<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-                      class Allocator = allocator&lt;charT&gt; &gt;<br />
-X     class basic_istringstream;<br />
-<br />
-T   typedef basic_istringstream&lt;char&gt;     istringstream;<br />
-T   typedef basic_istringstream&lt;wchar_t&gt; wistringstream;<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-                      class Allocator = allocator&lt;charT&gt; &gt;<br />
-X     class basic_ostringstream;<br />
-T   typedef basic_ostringstream&lt;char&gt;     ostringstream;<br />
-T   typedef basic_ostringstream&lt;wchar_t&gt; wostringstream;<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-                      class Allocator = allocator&lt;charT&gt; &gt;<br />
-X     class basic_stringstream;<br />
-T   typedef basic_stringstream&lt;char&gt;     stringstream;<br />
-T   typedef basic_stringstream&lt;wchar_t&gt; wstringstream;<br />
-<br />
-   27.7.1  Template class basic_stringbuf                 [lib.stringbuf]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-X   class basic_stringbuf : public basic_streambuf&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.stringbuf.cons_ Constructors:<br />
-S     explicit basic_stringbuf(ios_base::openmode which<br />
-                                = ios_base::in | ios_base::out);<br />
-S     explicit basic_stringbuf<br />
-          (const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-           ios_base::openmode which = ios_base::in | ios_base::out);<br />
-      // _lib.stringbuf.members_ Get and set:<br />
-S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
-S     void               str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);<br />
-<br />
-    protected:<br />
-      // _lib.stringbuf.virtuals_ Overridden virtual functions:<br />
-S     virtual int_type   underflow();<br />
-S     virtual int_type   pbackfail(int_type c = traits::eof());<br />
-S     virtual int_type   overflow (int_type c = traits::eof());<br />
-S     virtual  basic_streambuf&lt;charT,traits&gt;* setbuf(charT*, streamsize);<br />
-<br />
-S     virtual pos_type   seekoff(off_type off, ios_base::seekdir way,<br />
-                                 ios_base::openmode which<br />
-                                  = ios_base::in | ios_base::out);<br />
-S     virtual pos_type   seekpos(pos_type sp,<br />
-                                 ios_base::openmode which<br />
-                                  = ios_base::in | ios_base::out);<br />
-    };<br />
-<br />
-<br />
-   27.7.2  Template class basic_istringstream         [lib.istringstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-X   class basic_istringstream : public basic_istream&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.istringstream.cons_ Constructors:<br />
-S     explicit basic_istringstream(ios_base::openmode which = ios_base::in);<br />
-S     explicit basic_istringstream(<br />
-                         const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-                         ios_base::openmode which = ios_base::in);<br />
-<br />
-      // _lib.istringstream.members_ Members:<br />
-S     basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;<br />
-S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
-S     void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);<br />
-   private:<br />
-   //  basic_stringbuf&lt;charT,traits,Allocator&gt; sb;   exposition only<br />
-    };<br />
-<br />
-   27.7.3  Class basic_ostringstream                  [lib.ostringstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-X   class basic_ostringstream : public basic_ostream&lt;charT,traits&gt; {<br />
-    public:<br />
-<br />
-      // Types:<br />
-T     typedef charT            char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-      // _lib.ostringstream.cons_ Constructors/destructor:<br />
-S     explicit basic_ostringstream(ios_base::openmode which = ios_base::out);<br />
-S     explicit basic_ostringstream(<br />
-                           const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-                           ios_base::openmode which = ios_base::out);<br />
-      // _lib.ostringstream.members_ Members:<br />
-S     basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;<br />
-S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
-S     void    str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);<br />
-    };<br />
-<br />
-<br />
-   27.7.4  Template class basic_stringstream           [lib.stringstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-X   class basic_stringstream<br />
-      : public basic_iostream&lt;charT,traits&gt; {<br />
-    public:<br />
-      // Types<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-      // constructors/destructors<br />
-S     explicit basic_stringstream(<br />
-          ios_base::openmode which = ios_base::out|ios_base::in);<br />
-S     explicit basic_stringstream(<br />
-          const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-          ios_base::openmode which = ios_base::out|ios_base::in);<br />
-      // Members:<br />
-S     basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;<br />
-S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
-S     void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
-    };<br />
-<br />
-<br />
-<br />
-   27.8.1  File streams                                    [lib.fstreams]<br />
-<br />
-<br />
-   Header &lt;fstream&gt; synopsis<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_filebuf;<br />
-T   typedef basic_filebuf&lt;char&gt;    filebuf;<br />
-T   typedef basic_filebuf&lt;wchar_t&gt; wfilebuf;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ifstream;<br />
-T   typedef basic_ifstream&lt;char&gt;    ifstream;<br />
-T   typedef basic_ifstream&lt;wchar_t&gt; wifstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ofstream;<br />
-T   typedef basic_ofstream&lt;char&gt;    ofstream;<br />
-T   typedef basic_ofstream&lt;wchar_t&gt; wofstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_fstream;<br />
-T   typedef basic_fstream&lt;char&gt;     fstream;<br />
-T   typedef basic_fstream&lt;wchar_t&gt; wfstream;<br />
-<br />
-   27.8.1.1  Template class basic_filebuf                   [lib.filebuf]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_filebuf : public basic_streambuf&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.filebuf.cons_ Constructors/destructor:<br />
-X     basic_filebuf();<br />
-X     virtual ~basic_filebuf();<br />
-       // _lib.filebuf.members_ Members:<br />
-T     bool is_open() const;<br />
-X     basic_filebuf&lt;charT,traits&gt;* open<br />
-          (const char* s, ios_base::openmode mode);<br />
-X     basic_filebuf&lt;charT,traits&gt;* close();<br />
-    protected:<br />
-      // _lib.filebuf.virtuals_ Overridden virtual functions:<br />
-X     virtual streamsize showmanyc();<br />
-X     virtual int_type underflow();<br />
-X     virtual int_type uflow();<br />
-X     virtual int_type pbackfail(int_type c = traits::eof());<br />
-X     virtual int_type overflow (int_type c = traits::eof());<br />
-S     virtual basic_streambuf&lt;charT,traits&gt;*<br />
-                       setbuf(char_type* s, streamsize n);<br />
-S     virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
-                               ios_base::openmode which<br />
-                                 = ios_base::in | ios_base::out);<br />
-S     virtual pos_type seekpos(pos_type sp, ios_base::openmode which<br />
-                                 = ios_base::in | ios_base::out);<br />
-S     virtual int      sync();<br />
-S     virtual void     imbue(const locale&amp; loc);<br />
-    };<br />
-<br />
-<br />
-<br />
-   27.8.1.5  Template class basic_ifstream                 [lib.ifstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ifstream : public basic_istream&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.ifstream.cons_ Constructors:<br />
-S     basic_ifstream();<br />
-S     explicit basic_ifstream(const char* s,<br />
-                              ios_base::openmode mode = ios_base::in);<br />
-      // _lib.ifstream.members_ Members:<br />
-S     basic_filebuf&lt;charT,traits&gt;* rdbuf() const;<br />
-S     bool is_open();<br />
-S     void open(const char* s, ios_base::openmode mode = ios_base::in);<br />
-S     void close();<br />
-    };<br />
-<br />
-<br />
-   27.8.1.8  Template class basic_ofstream                 [lib.ofstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ofstream : public basic_ostream&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.ofstream.cons_ Constructors:<br />
-X     basic_ofstream();<br />
-X     explicit basic_ofstream(const char* s,<br />
-                              ios_base::openmode mode<br />
-                                = ios_base::out);<br />
-      // _lib.ofstream.members_ Members:<br />
-X     basic_filebuf&lt;charT,traits&gt;* rdbuf() const;<br />
-T     bool is_open();<br />
-X     void open(const char* s, ios_base::openmode mode = ios_base::out);<br />
-X     void close();<br />
-    };<br />
-<br />
-<br />
-   27.8.1.11  Template class basic_fstream                  [lib.fstream]<br />
-<br />
-    template &lt;class charT, class traits=char_traits&lt;charT&gt; &gt;<br />
-X   class basic_fstream<br />
-      : public basic_iostream&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // constructors/destructor<br />
-S     basic_fstream();<br />
-S     explicit basic_fstream(<br />
-          const char* s,<br />
-          ios_base::openmode mode = ios_base::in|ios_base::out);<br />
-<br />
-      // Members:<br />
-S     basic_filebuf&lt;charT,traits&gt;* rdbuf() const;<br />
-S     bool is_open();<br />
-S     void open(<br />
-          const char* s,<br />
-          ios_base::openmode mode = ios_base::in|ios_base::out);<br />
-S     void close();<br />
-    };<br />
-<br />
-<br />
-<br />
-   27.8.2  C Library files                                  [lib.c.files]<br />
-<br />
-<br />
-                    Table 13--Header &lt;cstdio&gt; synopsis<br />
-    Macros:<br />
-X   BUFSIZ         L_tmpnam        SEEK_SET   TMP_MAX<br />
-X   EOF            NULL &lt;cstdio&gt;   stderr     _IOFBF<br />
-X   FILENAME_MAX   SEEK_CUR        stdin      _IOLBF<br />
-X   FOPEN_MAX      SEEK_END        stdout     _IONBF<br />
-<br />
-X   Types:         FILE            fpos_t     size_t &lt;cstdio&gt;<br />
-    Functions:<br />
-X   clearerr       fgets           fscanf     gets     rewind<br />
-X   fclose         fopen           fseek      perror   scanf     tmpnam<br />
-X   feof           fprintf         fsetpos    printf   setbuf    ungetc<br />
-X   ferror         fputc           ftell      putc     setvbuf   vprintf<br />
-X   fflush         fputs           fwrite     puts     sprintf   vfprintf<br />
-X   fgetc          fread           getc       remove   sscanf    vsprintf<br />
-X   fgetpos        freopen         getchar    putchar  rename    tmpfile<br />
-<br />
-<br />
-<br />
-<br />
-   1.5  Standard C library headers                       [depr.c.headers]<br />
-<br />
-X     &lt;assert.h&gt;   &lt;iso646.h&gt;   &lt;setjmp.h&gt;   &lt;stdio.h&gt;    &lt;wchar.h&gt;<br />
-      &lt;ctype.h&gt;    &lt;limits.h&gt;   &lt;signal.h&gt;   &lt;stdlib.h&gt;   &lt;wctype.h&gt;<br />
-      &lt;errno.h&gt;    &lt;locale.h&gt;   &lt;stdarg.h&gt;   &lt;string.h&gt;<br />
-      &lt;float.h&gt;    &lt;math.h&gt;     &lt;stddef.h&gt;   &lt;time.h&gt;<br />
-<br />
-   1.6  Old iostreams members                          [depr.ios.members]<br />
-<br />
-   [Note: these should be #ifdef'd to permit diagnostics if used.]<br />
-   namespace std {<br />
-    class ios_base {<br />
-    public:<br />
-T     typedef T1  io_state;<br />
-T     typedef T2 open_mode;<br />
-T     typedef T3  seek_dir;<br />
-T     typedef OFF_T  streamoff;<br />
-T     typedef OFF_T  streampos;<br />
-      // remainder unchanged<br />
-    };<br />
-   }<br />
-<br />
-   [Note: these should be #ifdef'd to permit diagnostics if used.]<br />
-   namespace std {<br />
-    template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_streambuf {<br />
-    public:<br />
-T     void stossc();<br />
-      // remainder unchanged<br />
-    };<br />
-   }<br />
-<br />
-   8 An implementation may provide  the  following  member  functions  that<br />
-   overload signatures specified in clause _lib.iostreams_:<br />
-<br />
-   [Note: the following overloads should be #ifdef'd to permit<br />
-    diagnostics to be emitted, by default, if used.]<br />
-<br />
-    template&lt;class charT, class Traits&gt; class basic_ios {<br />
-    public:<br />
-M     void clear(io_state state);<br />
-M     void setstate(io_state state);<br />
-      // remainder unchanged<br />
-    };<br />
-    class ios_base {<br />
-    public:<br />
-M     void exceptions(io_state);<br />
-      // remainder unchanged<br />
-    };<br />
-    template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_streambuf {<br />
-    public:<br />
-M     pos_type pubseekoff(off_type off, ios_base::seek_dir way,<br />
-                ios_base::open_mode which = ios_base::in | ios_base::out);<br />
-M     pos_type pubseekpos(pos_type sp,<br />
-                ios_base::open_mode which = ios_base::in | ios_base::out);<br />
-      // remainder unchanged<br />
-    };<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_filebuf : public basic_streambuf&lt;charT,traits&gt; {<br />
-    public:<br />
-M     basic_filebuf&lt;charT,traits&gt;* open<br />
-          (const char* s, ios_base::open_mode mode);<br />
-      // remainder unchanged<br />
-    };<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_ifstream : public basic_istream&lt;charT,traits&gt; {<br />
-    public:<br />
-M     void open(const char* s, ios_base::open_mode mode = in);<br />
-      // remainder unchanged<br />
-    };<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_ofstream : public basic_ostream&lt;charT,traits&gt; {<br />
-    public:<br />
-M     void open(const char* s, ios_base::open_mode mode = out | trunc);<br />
-      // remainder unchanged<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   1.7.1  Class strstreambuf                          [depr.strstreambuf]<br />
-<br />
-   [Note: It should be possible to adopt these components with only<br />
-    minor changes from the 2.8 version of the library.]<br />
-<br />
-M   class strstreambuf : public basic_streambuf&lt;char&gt; {<br />
-    public:<br />
-M     explicit strstreambuf(streamsize alsize_arg = 0);<br />
-M     strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*));<br />
-M     strstreambuf(char* gnext_arg, streamsize n, char* pbeg_arg = 0);<br />
-M     strstreambuf(const char* gnext_arg, streamsize n);<br />
-M     strstreambuf(signed char* gnext_arg, streamsize n,<br />
-                   signed char* pbeg_arg = 0);<br />
-M     strstreambuf(const signed char* gnext_arg, streamsize n);<br />
-M     strstreambuf(unsigned char* gnext_arg, streamsize n,<br />
-                   unsigned char* pbeg_arg = 0);<br />
-M     strstreambuf(const unsigned char* gnext_arg, streamsize n);<br />
-M     virtual ~strstreambuf();<br />
-M     void  freeze(bool freezefl = true);<br />
-M     char* str();<br />
-M     int   pcount();<br />
-    protected:<br />
-M     virtual int_type overflow (int_type c = EOF);<br />
-M     virtual int_type pbackfail(int_type c = EOF);<br />
-M     virtual int_type underflow();<br />
-M     virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
-                               ios_base::openmode which<br />
-                                = ios_base::in | ios_base::out);<br />
-M     virtual pos_type seekpos(pos_type sp, ios_base::openmode which<br />
-                                = ios_base::in | ios_base::out);<br />
-M     virtual streambuf&lt;char&gt;* setbuf(char* s, streamsize n);<br />
-   }<br />
-<br />
-   1.7.4  Class strstream                                [depr.strstream]<br />
-<br />
-M   class strstream<br />
-      : public basic_iostream&lt;char&gt; {<br />
-    public:<br />
-      // Types<br />
-M     typedef char                                char_type;<br />
-M     typedef typename char_traits&lt;char&gt;::int_type int_type<br />
-M     typedef typename char_traits&lt;char&gt;::pos_type pos_type;<br />
-M     typedef typename char_traits&lt;char&gt;::off_type off_type;<br />
-      // consturctors/destructor<br />
-M     strstream();<br />
-M     strstream(char* s, int n,<br />
-                ios_base::openmode mode = ios_base::in|ios_base::out);<br />
-M     virtual ~strstream();<br />
-      // Members:<br />
-M     strstreambuf* rdbuf() const;<br />
-M     void freeze(bool freezefl = true);<br />
-M     int pcount() const;<br />
-M     char* str();<br />
-    };<br />
-</p></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="standard.1998.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>
- The ISO standard defines the following phrase:
- </p><div class="blockquote"><blockquote class="blockquote"><div class="variablelist"><dl><dt><span class="term">
- <code class="code">[1.3.5] implementation-defined behavior</code>
- </span></dt><dd><p>
- Behavior, for a well-formed program construct and correct data, that
- depends on the implementation <span class="emphasis"><em>and that each implementation
- shall document</em></span>.
- </p></dd></dl></div></blockquote></div><p>
- We do so here, for the C++ library only. Behavior of the
- compiler, linker, runtime loader, and other elements of "the
- implementation" are documented elsewhere. Everything listed
- in Annex B, Implementation Qualities, are also part of the
- compiler, not the library.
- </p><p>
- For each entry, we give the section number of the standard, when
- applicable. This list is probably incomplet and inkorrekt.
- </p><p>
- <span class="emphasis"><em>[1.9]/11 #3</em></span> If <code class="code">isatty(3)</code> is true, then
- interactive stream support is implied.
- </p><p>
- <span class="emphasis"><em>[17.4.4.5]</em></span> Non-reentrant functions are probably best
- discussed in the various sections on multithreading (see above).
- </p><p><span class="emphasis"><em>[18.1]/4</em></span> The type of <code class="code">NULL</code> is described
- <a class="ulink" href="../18_support/howto.html#1" target="_top">here</a>.
- </p><p><span class="emphasis"><em>[18.3]/8</em></span> Even though it's listed in the library
- sections, libstdc++ has zero control over what the cleanup code hands
- back to the runtime loader. Talk to the compiler people. :-)
- </p><p><span class="emphasis"><em>[18.4.2.1]/5</em></span> (bad_alloc),
- <span class="emphasis"><em>[18.5.2]/5</em></span> (bad_cast),
- <span class="emphasis"><em>[18.5.3]/5</em></span> (bad_typeid),
- <span class="emphasis"><em>[18.6.1]/8</em></span> (exception),
- <span class="emphasis"><em>[18.6.2.1]/5</em></span> (bad_exception): The <code class="code">what()</code>
- member function of class <code class="code">std::exception</code>, and these other
- classes publicly derived from it, simply returns the name of the
- class. But they are the <span class="emphasis"><em>mangled</em></span> names; you will need to call
- <code class="code">c++filt</code> and pass the names as command-line parameters to
- demangle them, or call a
- <a class="ulink" href="../18_support/howto.html#5" target="_top">runtime demangler function</a>.
- (The classes in <code class="code">&lt;stdexcept&gt;</code> have constructors which
- require an argument to use later for <code class="code">what()</code> calls, so the
- problem of <code class="code">what()</code>'s value does not arise in most
- user-defined exceptions.)
- </p><p><span class="emphasis"><em>[18.5.1]/7</em></span> The return value of
- <code class="code">std::type_info::name()</code> is the mangled type name (see the
- previous entry for more).
- </p><p><span class="emphasis"><em>[20.1.5]/5</em></span> <span class="emphasis"><em>"Implementors are encouraged to
- supply libraries that can accept allocators that encapsulate more
- general memory models and that support non-equal instances. In such
- implementations, any requirements imposed on allocators by containers
- beyond those requirements that appear in Table 32, and the semantics
- of containers and algorithms when allocator instances compare
- non-equal, are implementation-defined."</em></span> As yet we don't
- have any allocators which compare non-equal, so we can't describe how
- they behave.
- </p><p><span class="emphasis"><em>[21.1.3.1]/3,4</em></span>,
- <span class="emphasis"><em>[21.1.3.2]/2</em></span>,
- <span class="emphasis"><em>[23.*]'s foo::iterator</em></span>,
- <span class="emphasis"><em>[27.*]'s foo::*_type</em></span>,
- <span class="emphasis"><em>others...</em></span>
- Nope, these types are called implementation-defined because you
- shouldn't be taking advantage of their underlying types. Listing them
- here would defeat the purpose. :-)
- </p><p><span class="emphasis"><em>[21.1.3.1]/5</em></span> I don't really know about the mbstate_t
- stuff... see the <a class="ulink" href="../22_locale/howto.html" target="_top">chapter 22 notes</a>
- for what does exist.
- </p><p><span class="emphasis"><em>[22.*]</em></span> Anything and everything we have on locale
- implementation will be described
- <a class="ulink" href="../22_locale/howto.html" target="_top">over here</a>.
- </p><p><span class="emphasis"><em>[26.2.8]/9</em></span> I have no idea what
- <code class="code">complex&lt;T&gt;</code>'s pow(0,0) returns.
- </p><p><span class="emphasis"><em>[27.4.2.4]/2</em></span> Calling
- <code class="code">std::ios_base::sync_with_stdio</code> after I/O has already been
- performed on the standard stream objects will
- flush the buffers, and
- destroy and recreate the underlying buffer instances. Whether or not
- the previously-written I/O is destroyed in this process depends mostly
- on the --enable-libio choice: for stdio, if the written data is
- already in the stdio buffer, the data may be completely safe!
- </p><p><span class="emphasis"><em>[27.6.1.1.2]</em></span>,
- <span class="emphasis"><em>[27.6.2.3]</em></span> The I/O sentry ctor and dtor can perform
- additional work than the minimum required. We are not currently taking
- advantage of this yet.
- </p><p><span class="emphasis"><em>[27.7.1.3]/16</em></span>,
- <span class="emphasis"><em>[27.8.1.4]/10</em></span>
- The effects of <code class="code">pubsetbuf/setbuf</code> are described
- <a class="ulink" href="../27_io/howto.html#2" target="_top">in this chapter</a>.
- </p><p><span class="emphasis"><em>[27.8.1.4]/16</em></span> Calling <code class="code">fstream::sync</code> when
- a get area exists will... whatever <code class="code">fflush()</code> does, I think.
- </p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.tr1"></a>C++ TR1</h3></div></div></div><p>
-This table is based on the table of contents of ISO/IEC DTR 19768
-Doc No: N1836=05-0096 Date: 2005-06-24
-Draft Technical Report on C++ Library Extensions
-</p><p>
-In this implementation the header names are prefixed by
-<code class="code">tr1/</code>, for instance <code class="code">&lt;tr1/functional&gt;</code>,
-<code class="code">&lt;tr1/memory&gt;</code>, and so on.
-</p><p>
-This page describes the TR1 support in mainline GCC SVN, not in any particular
-release.
-</p><div class="table"><a id="id549759"></a><p class="title"><b>Table 1.1. C++ TR1 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Done</th><th align="left">Broken</th><th align="left">Missing</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">See Footnotes</td></tr><tr><td align="left">2.2.3.1</td><td align="left"><code class="code">shared_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.2</td><td align="left"><code class="code">shared_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.3</td><td align="left"><code class="code">shared_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.4</td><td align="left"><code class="code">shared_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.5</td><td align="left"><code class="code">shared_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.6</td><td align="left"><code class="code">shared_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.7</td><td align="left"><code class="code">shared_ptr</code> I/O</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.8</td><td align="left"><code class="code">shared_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.9</td><td align="left"><code class="code">shared_ptr</code> casts</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.10</td><td align="left"><code class="code">get_deleter</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.1</td><td align="left"><code class="code">weak_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.2</td><td align="left"><code class="code">weak_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.3</td><td align="left"><code class="code">weak_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.4</td><td align="left"><code class="code">weak_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.5</td><td align="left"><code class="code">weak_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.6</td><td align="left"><code class="code">weak_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.7</td><td align="left"><code class="code">weak_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.5</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>3</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Function Objects</em></span></td></tr><tr><td align="left">3.1</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.2</td><td align="left">Additions to <code class="code">&lt;functional&gt; synopsis</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.3</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.4</td><td align="left">Function return types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.5</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6</td><td align="left">Function object binders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.1</td><td align="left">Class template <code class="code">is_bind_expression</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.2</td><td align="left">Class template <code class="code">is_placeholder</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.3</td><td align="left">Function template <code class="code">bind</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.4</td><td align="left">Placeholders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7</td><td align="left">Polymorphic function wrappers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.1</td><td align="left">Class <code class="code">bad_function_call<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.1.1</td><td align="left"><code class="code">bad_function_call</code> constructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.1</td><td align="left"><code class="code">function</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.2</td><td align="left"><code class="code">function</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.3</td><td align="left"><code class="code">function</code> capacity</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.4</td><td align="left"><code class="code">function</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.5</td><td align="left"><code class="code">function</code> target access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.6</td><td align="left">undefined operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.7</td><td align="left">null pointer comparison operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.8</td><td align="left">specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>4</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td align="left">4.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.3</td><td align="left">Helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.4</td><td align="left">General Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5</td><td align="left">Unary Type Traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.1</td><td align="left">Primary Type Categories</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.2</td><td align="left">Composite type traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.3</td><td align="left">Type properties</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.6</td><td align="left">Relationships between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7</td><td align="left">Transformations between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.1</td><td align="left">Const-volatile modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.2</td><td align="left">Reference modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.3</td><td align="left">Array modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.4</td><td align="left">Pointer modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.8</td><td align="left">Other transformations</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.9</td><td align="left">Implementation requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>5</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Numerical Facilities</em></span></td></tr><tr><td align="left">5.1</td><td align="left">Random number generation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.2</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.3</td><td align="left">Class template <code class="code">variate_generator</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4</td><td align="left">Random number engine class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.1</td><td align="left">Class template <code class="code">linear_congruential</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.2</td><td align="left">Class template <code class="code">mersenne_twister</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.3</td><td align="left">Class template <code class="code">subtract_with_carry</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.4</td><td align="left">Class template <code class="code">subtract_with_carry_01</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.5</td><td align="left">Class template <code class="code">discard_block</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.6</td><td align="left">Class template <code class="code">xor_combine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">operator()() per N2079</td></tr><tr><td align="left">5.1.5</td><td align="left">Engines with predefined parameters</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7</td><td align="left">Random distribution class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.1</td><td align="left">Class template <code class="code">uniform_int</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.2</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.4</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.5</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.6</td><td align="left">Class template <code class="code">uniform_real</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.7</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.8</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.9</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2</td><td align="left">Mathematical special functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.1</td><td align="left">associated Laguerre polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.2</td><td align="left">associated Legendre functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.3</td><td align="left">beta function</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.4</td><td align="left">(complete) elliptic integral of the first kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.5</td><td align="left">(complete) elliptic integral of the second kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.6</td><td align="left">(complete) elliptic integral of the third kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.7</td><td align="left">confluent hypergeometric functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.8</td><td align="left">regular modified cylindrical Bessel functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.9</td><td align="left">cylindrical Bessel functions (of the first kind)</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.10</td><td align="left">irregular modified cylindrical Bessel functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.11</td><td align="left">cylindrical Neumann functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.12</td><td align="left">(incomplete) elliptic integral of the first kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.13</td><td align="left">(incomplete) elliptic integral of the second kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.14</td><td align="left">(incomplete) elliptic integral of the third kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.15</td><td align="left">exponential integral</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.16</td><td align="left">Hermite polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.17</td><td align="left">hypergeometric functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.18</td><td align="left">Laguerre polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.19</td><td align="left">Legendre polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.20</td><td align="left">Riemann zeta function</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.21</td><td align="left">spherical Bessel functions (of the first kind)</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.22</td><td align="left">spherical associated Legendre functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.23</td><td align="left">spherical Neumann functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.2</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>6</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td align="left">6.1</td><td align="left">Tuple types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.1</td><td align="left">Header <code class="code">&lt;tuple&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.2</td><td align="left">Additions to header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.1</td><td align="left">Construction</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.2</td><td align="left">Tuple creation functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.3</td><td align="left">Tuple helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.4</td><td align="left">Element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.5</td><td align="left">Relational operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.4</td><td align="left">Pairs</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2</td><td align="left">Fixed size array</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.1</td><td align="left">Header <code class="code">&lt;array&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2</td><td align="left">Class template <code class="code">array</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.1</td><td align="left"><code class="code">array</code> constructors, copy, and assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.2</td><td align="left"><code class="code">array</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.3</td><td align="left"><code class="code">array</code> size</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.4</td><td align="left">Zero sized <code class="code">array</code>s</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.5</td><td align="left">Tuple interface to class template <code class="code">array</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3</td><td align="left">Unordered associative containers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.1</td><td align="left">Unordered associative container requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.1.1</td><td align="left">Exception safety guarantees</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.2</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.3</td><td align="left">Class template <code class="code">hash</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4</td><td align="left">Unordered associative container classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.1</td><td align="left">Header <code class="code">&lt;unordered_set&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.2</td><td align="left">Header <code class="code">&lt;unordered_map&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.1</td><td align="left"><code class="code">unordered_set</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.2</td><td align="left"><code class="code">unordered_set</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.1</td><td align="left"><code class="code">unordered_map</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.2</td><td align="left"><code class="code">unordered_map</code> element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.3</td><td align="left"><code class="code">unordered_map</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.5</td><td align="left">Class template <code class="code">unordered_multiset<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.1</td><td align="left"><code class="code">unordered_multiset</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.2</td><td align="left"><code class="code">unordered_multiset</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.6</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.1</td><td align="left"><code class="code">unordered_multimap</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.2</td><td align="left"><code class="code">unordered_multimap</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>7</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr><td align="left">7.1</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.2</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.3</td><td align="left">Regular expressions summary</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5</td><td align="left">Namespace <code class="code">tr1::regex_constants</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5.1</td><td align="left">Bitmask Type <code class="code">syntax_option_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5.2</td><td align="left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5.3</td><td align="left">Implementation defined <code class="code">error_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.1</td><td align="left"><code class="code">basic_regex</code> constants</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.2</td><td align="left"><code class="code">basic_regex</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.3</td><td align="left"><code class="code">basic_regex</code> assign</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.4</td><td align="left"><code class="code">basic_regex</code> constant operations</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.5</td><td align="left"><code class="code">basic_regex</code> locale</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.6</td><td align="left"><code class="code">basic_regex</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.7</td><td align="left"><code class="code">basic_regex</code> non-member functions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.7.1</td><td align="left"><code class="code">basic_regex</code> non-member swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.9.1</td><td align="left"><code class="code">sub_match</code> members</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.9.2</td><td align="left"><code class="code">sub_match</code> non-member operators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.1</td><td align="left"><code class="code">match_results</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.2</td><td align="left"><code class="code">match_results</code> size</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.3</td><td align="left"><code class="code">match_results</code> element access</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.4</td><td align="left"><code class="code">match_results</code> formatting</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.5</td><td align="left"><code class="code">match_results</code> allocator</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.6</td><td align="left"><code class="code">match_results</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11</td><td align="left">Regular expression algorithms</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.1</td><td align="left">exceptions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.2</td><td align="left"><code class="code">regex_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.3</td><td align="left"><code class="code">regex_search</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.4</td><td align="left"><code class="code">regex_replace</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12</td><td align="left">Regular expression Iterators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1</td><td align="left">Class template <code class="code">regex_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.1</td><td align="left"><code class="code">regex_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.2</td><td align="left"><code class="code">regex_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.3</td><td align="left"><code class="code">regex_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.4</td><td align="left"><code class="code">regex_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2</td><td align="left">Class template <code class="code">regex_token_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.1</td><td align="left"><code class="code">regex_token_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.2</td><td align="left"><code class="code">regex_token_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.3</td><td align="left"><code class="code">regex_token_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.4</td><td align="left"><code class="code">regex_token_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>8</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td align="left">8.1</td><td align="left">Additions to header <code class="code">&lt;complex&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.2</td><td align="left">Function <code class="code">acos</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.3</td><td align="left">Function <code class="code">asin</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.4</td><td align="left">Function <code class="code">atan</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.5</td><td align="left">Function <code class="code">acosh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.6</td><td align="left">Function <code class="code">asinh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.7</td><td align="left">Function <code class="code">atanh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.8</td><td align="left">Function <code class="code">fabs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.9</td><td align="left">Additional Overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.2</td><td align="left">Header <code class="code">&lt;ccomplex&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">8.3</td><td align="left">Header <code class="code">&lt;complex.h&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">8.4</td><td align="left">Additions to header <code class="code">&lt;cctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.4.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.4.2</td><td align="left">Function <code class="code">isblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.5</td><td align="left">Additions to header <code class="code">&lt;ctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.6</td><td align="left">Header <code class="code">&lt;cfenv&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.6.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.6.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.7</td><td align="left">Header <code class="code">&lt;fenv.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.8</td><td align="left">Additions to header <code class="code">&lt;cfloat&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.9</td><td align="left">Additions to header <code class="code">&lt;float.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.10</td><td align="left">Additions to header <code class="code">&lt;ios&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.10.1</td><td align="left">Synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.10.2</td><td align="left">Function <code class="code">hexfloat</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.11</td><td align="left">Header <code class="code">&lt;cinttypes&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.11.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 557</td></tr><tr><td align="left">8.11.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.12</td><td align="left">Header <code class="code">&lt;inttypes.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.13</td><td align="left">Additions to header <code class="code">&lt;climits&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.14</td><td align="left">Additions to header <code class="code">&lt;limits.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.15</td><td align="left">Additions to header <code class="code">&lt;locale&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.16</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.3</td><td align="left">Function template definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.4</td><td align="left">Additional overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 568; DR 550</td></tr><tr><td align="left">8.17</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.18</td><td align="left">Additions to header <code class="code">&lt;cstdarg&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.19</td><td align="left">Additions to header <code class="code">&lt;stdarg.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.20</td><td align="left">The header <code class="code">&lt;cstdbool&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.21</td><td align="left">The header <code class="code">&lt;stdbool.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.22</td><td align="left">The header <code class="code">&lt;cstdint&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.22.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.22.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.23</td><td align="left">The header <code class="code">&lt;stdint.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24</td><td align="left">Additions to header <code class="code">&lt;cstdio&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24.3</td><td align="left">Additional format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">8.24.4</td><td align="left">Additions to header <code class="code">&lt;stdio.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25</td><td align="left">Additions to header <code class="code">&lt;cstdlib&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.3</td><td align="left">Function <code class="code">abs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.4</td><td align="left">Function <code class="code">div</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.26</td><td align="left">Additions to header <code class="code">&lt;stdlib.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.27</td><td align="left">Header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">8.28</td><td align="left">Header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">8.29</td><td align="left">Additions to header <code class="code">&lt;ctime&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">8.30</td><td align="left">Additions to header <code class="code">&lt;cwchar&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.30.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.30.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.30.3</td><td align="left">Additional wide format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">8.31</td><td align="left">Additions to header <code class="code">&lt;wchar.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.32</td><td align="left">Additions to header <code class="code">&lt;cwctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.32.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.32.2</td><td align="left">Function <code class="code">iswblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.33</td><td align="left">Additions to header <code class="code">&lt;wctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
-Footnotes
-</p><p>
- The shared_ptr implementation uses some code from the
- <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">Boost
- shared_ptr</a> library.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.200x"></a>C++ 200x</h3></div></div></div><p>
-This table is based on the table of contents of ISO/IEC
-Doc No: N2461=07-0331 Date: 2007-10-22
-Working Draft, Standard for Programming Language C++
-</p><p>
-In this implementation <code class="literal">-std=gnu++0x</code> or
-<code class="literal">-std=c++0x</code> flags must be used to enable language and
-library features. The pre-defined symbol
-<code class="constant">__GXX_EXPERIMENTAL_CXX0X__</code> is used to check for the
-presence of the required flag.
-</p><p>
-This page describes the C++0x support in mainline GCC SVN, not in any
-particular release.
-</p><div class="table"><a id="id466249"></a><p class="title"><b>Table 1.2. C++ 200x Implementation Status</b></p><div class="table-contents"><table summary="C++ 200x Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Done</th><th align="left">Broken</th><th align="left">Missing</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>20</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">20.2</td><td align="left">Utility Components</td><td align="left"> </td><td align="left"> </td><td align="left">incomplete</td><td align="left"> </td></tr><tr><td align="left">20.2.1</td><td align="left">Operators</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">20.2.2</td><td align="left">forward/move helpers</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">20.2.3</td><td align="left">Pairs</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3</td><td align="left">Header <code class="code">&lt;tuple&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.1</td><td align="left">Construction</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.2</td><td align="left">Tuple creation functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.3</td><td align="left">Tuple helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.4</td><td align="left">Element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.5</td><td align="left">Relational operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4</td><td colspan="5" align="left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td align="left">20.4.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.3</td><td align="left">Helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.4</td><td align="left">General Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5</td><td align="left">Unary Type Traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5.1</td><td align="left">Primary Type Categories</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5.2</td><td align="left">Composite type traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5.3</td><td align="left">Type properties</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.6</td><td align="left">Relationships between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7</td><td align="left">Transformations between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.1</td><td align="left">Const-volatile modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.2</td><td align="left">Reference modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.3</td><td align="left">Array modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.4</td><td align="left">Pointer modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.8</td><td align="left">Other transformations</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.9</td><td align="left">Implementation requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5 </td><td align="left">Function Objects</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.1</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.2</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.3</td><td align="left">Base</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.4</td><td align="left">Function return types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.14</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11</td><td align="left">Template function bind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1</td><td align="left">Function object binders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.1</td><td align="left">Class template <code class="code">is_bind_expression</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.2</td><td align="left">Class template <code class="code">is_placeholder</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.3</td><td align="left">Function template <code class="code">bind</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.4</td><td align="left">Placeholders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15</td><td align="left">Polymorphic function wrappers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.1</td><td align="left">Class <code class="code">bad_function_call<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.1.1</td><td align="left"><code class="code">bad_function_call</code> constructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.1</td><td align="left"><code class="code">function</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.2</td><td align="left"><code class="code">function</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.3</td><td align="left"><code class="code">function</code> capacity</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.4</td><td align="left"><code class="code">function</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.5</td><td align="left"><code class="code">function</code> target access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.7</td><td align="left">null pointer comparison operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.8</td><td align="left">specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.16</td><td align="left">Class template <code class="code">hash</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left">missing <code class="code">unique_ptr</code></td></tr><tr><td align="left">20.6.5</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">20.6.6</td><td align="left">Smart pointers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.1</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">See Footnotes.</td></tr><tr><td align="left">20.6.6.2.1</td><td align="left"><code class="code">shared_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.2</td><td align="left"><code class="code">shared_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.3</td><td align="left"><code class="code">shared_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.4</td><td align="left"><code class="code">shared_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.5</td><td align="left"><code class="code">shared_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.6</td><td align="left"><code class="code">shared_ptr</code> creation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">
- <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top">N2351</a>
- </td></tr><tr><td align="left">20.6.6.2.7</td><td align="left"><code class="code">shared_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.8</td><td align="left"><code class="code">shared_ptr</code> I/O</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.9</td><td align="left"><code class="code">shared_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.10</td><td align="left"><code class="code">shared_ptr</code> casts</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.11</td><td align="left"><code class="code">get_deleter</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.1</td><td align="left"><code class="code">weak_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.2</td><td align="left"><code class="code">weak_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.3</td><td align="left"><code class="code">weak_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.4</td><td align="left"><code class="code">weak_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.5</td><td align="left"><code class="code">weak_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.6</td><td align="left"><code class="code">weak_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.7</td><td align="left"><code class="code">weak_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.4</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>23</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td align="left">23.2.1</td><td align="left">Header <code class="code">&lt;array&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1</td><td align="left">Class template array</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.1</td><td align="left"><code class="code">array</code> constructors, copy, and assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.2</td><td align="left"><code class="code">array</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.3</td><td align="left"><code class="code">array </code>size</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.4</td><td align="left"><code class="code">array </code>data</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.5</td><td align="left">Zero sized <code class="code">array</code>s</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.6</td><td align="left">Tuple interface to class template <code class="code">array</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Unordered associative containers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1.1</td><td align="left"><code class="code">unordered_map</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1.2</td><td align="left"><code class="code">unordered_map</code> element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1.3</td><td align="left"><code class="code">unordered_map</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.2</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.2.1</td><td align="left"><code class="code">unordered_multimap</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.2.2</td><td align="left"><code class="code">unordered_multimap</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.3.1</td><td align="left"><code class="code">unordered_set</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.3.2</td><td align="left"><code class="code">unordered_set</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.4</td><td align="left">Class template <code class="code">unordered_multiset<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.4.1</td><td align="left"><code class="code">unordered_multiset</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.4.2</td><td align="left"><code class="code">unordered_multiset</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>26</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Numerics</em></span></td></tr><tr><td align="left">26.4</td><td align="left">Random number generation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.2</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.3</td><td align="left">Random number engine class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.3.1</td><td align="left">Class template <code class="code">linear_congruential_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.3.2</td><td align="left">Class template <code class="code">mersenne_twister_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.3.3</td><td align="left">Class template <code class="code">subtract_with_carry_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4</td><td align="left">Random number engine adaptor class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.1</td><td align="left">Class template <code class="code">discard_block_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.2</td><td align="left">Class template <code class="code">independent_bits_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.3</td><td align="left">Class template <code class="code">shuffle_order_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.4</td><td align="left">Class template <code class="code">xor_combine_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">operator()() per N2079</td></tr><tr><td align="left">26.4.5</td><td align="left">Engines and engine adaptors with predefined parameters</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.7</td><td align="left">Utilities</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.7.1</td><td align="left">Class <code class="code">seed_seq</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.7.2</td><td align="left">Function template <code class="code">generate_canonical</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8</td><td align="left">Random number generation class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.1</td><td align="left">Uniform distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.1</td><td align="left">Class template <code class="code">uniform_int_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.1</td><td align="left">Class template <code class="code">uniform_real_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.2</td><td align="left">Bernoulli distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.1</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.2</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.4</td><td align="left">Class template <code class="code">negative_binomial_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.3</td><td align="left">Poisson distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.1</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.2</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.3</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.4</td><td align="left">Class template <code class="code">weibull_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.5</td><td align="left">Class template <code class="code">extreme_value_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4</td><td align="left">Normal distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.1</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.2</td><td align="left">Class template <code class="code">lognormal_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.3</td><td align="left">Class template <code class="code">chi_squared_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.4</td><td align="left">Class template <code class="code">cauchy_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.5</td><td align="left">Class template <code class="code">fisher_f_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.6</td><td align="left">Class template <code class="code">student_t_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5</td><td align="left">Sampling distributions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5.1</td><td align="left">Class template <code class="code">discrete_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5.1</td><td align="left">Class template <code class="code">piecewise_constant_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5.1</td><td align="left">Class template <code class="code">general_pdf_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>28</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr><td align="left">28.1</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.2</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.3</td><td align="left">Regular expressions summary</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5</td><td align="left">Namespace <code class="code">tr1::regex_constants</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5.1</td><td align="left">Bitmask Type <code class="code">syntax_option_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5.2</td><td align="left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5.3</td><td align="left">Implementation defined <code class="code">error_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.1</td><td align="left"><code class="code">basic_regex</code> constants</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.2</td><td align="left"><code class="code">basic_regex</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.3</td><td align="left"><code class="code">basic_regex</code> assign</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.4</td><td align="left"><code class="code">basic_regex</code> constant operations</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.5</td><td align="left"><code class="code">basic_regex</code> locale</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.6</td><td align="left"><code class="code">basic_regex</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.7</td><td align="left"><code class="code">basic_regex</code> non-member functions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.7.1</td><td align="left"><code class="code">basic_regex</code> non-member swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.9.1</td><td align="left"><code class="code">sub_match</code> members</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.9.2</td><td align="left"><code class="code">sub_match</code> non-member operators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.1</td><td align="left"><code class="code">match_results</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.2</td><td align="left"><code class="code">match_results</code> size</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.3</td><td align="left"><code class="code">match_results</code> element access</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.4</td><td align="left"><code class="code">match_results</code> formatting</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.5</td><td align="left"><code class="code">match_results</code> allocator</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.6</td><td align="left"><code class="code">match_results</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11</td><td align="left">Regular expression algorithms</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.1</td><td align="left">exceptions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.2</td><td align="left"><code class="code">regex_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.3</td><td align="left"><code class="code">regex_search</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.4</td><td align="left"><code class="code">regex_replace</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12</td><td align="left">Regular expression Iterators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1</td><td align="left">Class template <code class="code">regex_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.1</td><td align="left"><code class="code">regex_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.2</td><td align="left"><code class="code">regex_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.3</td><td align="left"><code class="code">regex_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.4</td><td align="left"><code class="code">regex_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2</td><td align="left">Class template <code class="code">regex_token_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.1</td><td align="left"><code class="code">regex_token_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.2</td><td align="left"><code class="code">regex_token_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.3</td><td align="left"><code class="code">regex_token_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.4</td><td align="left"><code class="code">regex_token_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>C</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td align="left">C2.1</td><td align="left">Additions to header <code class="code">&lt;complex&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.2</td><td align="left">Function <code class="code">acos</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.3</td><td align="left">Function <code class="code">asin</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.4</td><td align="left">Function <code class="code">atan</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.5</td><td align="left">Function <code class="code">acosh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.6</td><td align="left">Function <code class="code">asinh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.7</td><td align="left">Function <code class="code">atanh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.8</td><td align="left">Function <code class="code">fabs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.9</td><td align="left">Additional Overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.2</td><td align="left">Header <code class="code">&lt;ccomplex&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">C2.3</td><td align="left">Header <code class="code">&lt;complex.h&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">C2.4</td><td align="left">Additions to header <code class="code">&lt;cctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.4.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.4.2</td><td align="left">Function <code class="code">isblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.5</td><td align="left">Additions to header <code class="code">&lt;ctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.6</td><td align="left">Header <code class="code">&lt;cfenv&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.6.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.6.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.7</td><td align="left">Header <code class="code">&lt;fenv.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.8</td><td align="left">Additions to header <code class="code">&lt;cfloat&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.9</td><td align="left">Additions to header <code class="code">&lt;float.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.10</td><td align="left">Additions to header <code class="code">&lt;ios&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.10.1</td><td align="left">Synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.10.2</td><td align="left">Function <code class="code">hexfloat</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.11</td><td align="left">Header <code class="code">&lt;cinttypes&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.11.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 557</td></tr><tr><td align="left">C2.11.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.12</td><td align="left">Header <code class="code">&lt;inttypes.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.13</td><td align="left">Additions to header <code class="code">&lt;climits&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.14</td><td align="left">Additions to header <code class="code">&lt;limits.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.15</td><td align="left">Additions to header <code class="code">&lt;locale&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.16</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.3</td><td align="left">Function template definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.4</td><td align="left">Additional overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 568; DR 550</td></tr><tr><td align="left">C2.17</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.18</td><td align="left">Additions to header <code class="code">&lt;cstdarg&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.19</td><td align="left">Additions to header <code class="code">&lt;stdarg.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.20</td><td align="left">The header <code class="code">&lt;cstdbool&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.21</td><td align="left">The header <code class="code">&lt;stdbool.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.22</td><td align="left">The header <code class="code">&lt;cstdint&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.22.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.22.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.23</td><td align="left">The header <code class="code">&lt;stdint.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24</td><td align="left">Additions to header <code class="code">&lt;cstdio&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24.3</td><td align="left">Additional format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">C2.24.4</td><td align="left">Additions to header <code class="code">&lt;stdio.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25</td><td align="left">Additions to header <code class="code">&lt;cstdlib&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.3</td><td align="left">Function <code class="code">abs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.4</td><td align="left">Function <code class="code">div</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.26</td><td align="left">Additions to header <code class="code">&lt;stdlib.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.27</td><td align="left">Header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">C2.28</td><td align="left">Header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">C2.29</td><td align="left">Additions to header <code class="code">&lt;ctime&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">C2.30</td><td align="left">Additions to header <code class="code">&lt;cwchar&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.30.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.30.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.30.3</td><td align="left">Additional wide format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">C2.31</td><td align="left">Additions to header <code class="code">&lt;wchar.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.32</td><td align="left">Additions to header <code class="code">&lt;cwctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.32.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.32.2</td><td align="left">Function <code class="code">iswblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.33</td><td align="left">Additions to header <code class="code">&lt;wctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>D</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Compatibility Features</em></span></td></tr><tr><td align="left">D.6</td><td align="left">Old iostream members</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.8</td><td align="left">Binders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"><a class="ulink" href="http://gcc.gnu.org/PR33911" target="_top">33911</a></td></tr><tr><td align="left">D.9</td><td align="left">Class template <code class="code">auto_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"><a class="ulink" href="http://gcc.gnu.org/PR33911" target="_top">33911</a></td></tr></tbody></table></div></div><br class="table-break" /><p>
-Footnotes
-</p><p>
- The shared_ptr implementation uses some code from the
- <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">Boost
- shared_ptr</a> library.
-</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch01s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part I. Introduction </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> License</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch01s02.html b/libstdc++-v3/doc/html/manual/bk01pt01ch01s02.html
deleted file mode 100644
index efdbda2cb17..00000000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch01s02.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>License</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt01ch01.html" title="Chapter 1. Status" /><link rel="prev" href="bk01pt01ch01.html" title="Chapter 1. Status" /><link rel="next" href="bk01pt01ch01s03.html" title="Bugs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch01.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch01s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.license"></a>License</h2></div></div></div><p>
- There are two licenses affecting GNU libstdc++: one for the code,
- and one for the documentation.
- </p><p>
- There is a license section in the FAQ regarding common <a class="link" href="../faq.html#faq.license" title="License">questions</a>. If you have more
- questions, ask the FSF or the <a class="ulink" href="http://gcc.gnu.org/lists.html" target="_top">gcc mailing list</a>.
- </p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.license.gpl"></a>The Code: GPL</h3></div></div></div><p>
- The source code is distributed under the <a class="link" href="bk01apd.html" title="Appendix D. GNU General Public License">GNU General Public License version 2</a>,
- with the so-called “<span class="quote">Runtime Exception</span>”
- as follows (or see any header or implementation file):
- </p><div class="literallayout"><p><br />
-      As a special exception, you may use this file as part of a free software<br />
-      library without restriction.  Specifically, if other files instantiate<br />
-      templates or use macros or inline functions from this file, or you compile<br />
-      this file and link it with other files to produce an executable, this<br />
-      file does not by itself cause the resulting executable to be covered by<br />
-      the GNU General Public License.  This exception does not however<br />
-      invalidate any other reasons why the executable file might be covered by<br />
-      the GNU General Public License.<br />
-    </p></div><p>
- Hopefully that text is self-explanatory. If it isn't, you need to speak
- to your lawyer, or the Free Software Foundation.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.license.fdl"></a>The Documentation: GPL, FDL</h3></div></div></div><p>
- The documentation shipped with the library and made available over
- the web, excluding the pages generated from source comments, are
- copyrighted by the Free Software Foundation, and placed under the
- <a class="link" href="bk01ape.html" title="Appendix E. GNU Free Documentation License"> GNU Free Documentation
- License version 1.2</a>. There are no Front-Cover Texts, no
- Back-Cover Texts, and no Invariant Sections.
- </p><p>
- For documentation generated by doxygen or other automated tools
- via processing source code comments and markup, the original source
- code license applies to the generated files. Thus, the doxygen
- documents are licensed <a class="link" href="bk01apd.html" title="Appendix D. GNU General Public License">GPL</a>.
- </p><p>
- If you plan on making copies of the documentation, please let us know.
- We can probably offer suggestions.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt01ch01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch01s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 1. Status </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Bugs</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch02s03.html b/libstdc++-v3/doc/html/manual/bk01pt01ch02s03.html
deleted file mode 100644
index 51d0c8c99d1..00000000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch02s03.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Make</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt01ch02.html" title="Chapter 2. Setup" /><link rel="prev" href="configure.html" title="Configure" /><link rel="next" href="test.html" title="Test" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.make"></a>Make</h2></div></div></div><p>If you have never done this before, you should read the basic
- <a class="ulink" href="http://gcc.gnu.org/install/" target="_top">GCC Installation
- Instructions</a> first. Read <span class="emphasis"><em>all of them</em></span>.
- <span class="emphasis"><em>Twice.</em></span>
- </p><p>Then type:<span class="command"><strong>make</strong></span>, and congratulations, you're
-started to build.
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt01ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Configure </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Test</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html b/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html
deleted file mode 100644
index 3fbe4e440d3..00000000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="bk01pt01ch03s05.html" title="Concurrency" /><link rel="next" href="debug.html" title="Debugging Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch03s05.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.exception"></a>Exceptions</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.propagating"></a>Propagating Exceptions aka Exception Neutrality</h3></div></div></div><p>
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.safety"></a>Exception Safety</h3></div></div></div><p>
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.no"></a>Support for <code class="literal">-fno-exceptions</code></h3></div></div></div><p>
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch03s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch04s02.html b/libstdc++-v3/doc/html/manual/bk01pt02ch04s02.html
index 9219509ffc6..e7fa31a2aa7 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch04s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt02ch04s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Numeric Properties</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02ch04.html" title="Chapter 4. Types" /><link rel="prev" href="bk01pt02ch04.html" title="Chapter 4. Types" /><link rel="next" href="bk01pt02ch04s03.html" title="NULL" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Numeric Properties</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch04.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Types</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch04s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.numeric_limits"></a>Numeric Properties</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Numeric Properties</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="fundamental_types.html" title="Chapter 4. Types" /><link rel="prev" href="fundamental_types.html" title="Chapter 4. Types" /><link rel="next" href="bk01pt02ch04s03.html" title="NULL" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Numeric Properties</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="fundamental_types.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Types</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch04s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.numeric_limits"></a>Numeric Properties</h2></div></div></div><p>
The header <code class="filename">limits</code> defines
traits classes to give access to various implementation
defined-aspects of the fundamental types. The traits classes --
@@ -46,4 +46,4 @@
static const bool tinyness_before;
static const float_round_style round_style;
};
- </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02ch04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch04s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. Types </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> NULL</td></tr></table></div></body></html>
+ </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="fundamental_types.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="fundamental_types.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch04s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. Types </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> NULL</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch04s03.html b/libstdc++-v3/doc/html/manual/bk01pt02ch04s03.html
index e05dd26de0d..f8db0099c48 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch04s03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt02ch04s03.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>NULL</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02ch04.html" title="Chapter 4. Types" /><link rel="prev" href="bk01pt02ch04s02.html" title="Numeric Properties" /><link rel="next" href="bk01pt02ch05.html" title="Chapter 5. Dynamic Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">NULL</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch04s02.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Types</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch05.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.null"></a>NULL</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>NULL</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="fundamental_types.html" title="Chapter 4. Types" /><link rel="prev" href="bk01pt02ch04s02.html" title="Numeric Properties" /><link rel="next" href="dynamic_memory.html" title="Chapter 5. Dynamic Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">NULL</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch04s02.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Types</th><td width="20%" align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.null"></a>NULL</h2></div></div></div><p>
The only change that might affect people is the type of
<code class="constant">NULL</code>: while it is required to be a macro,
the definition of that macro is <span class="emphasis"><em>not</em></span> allowed
@@ -26,4 +26,4 @@
</p><p>See
<a class="ulink" href="http://www.awprofessional.com/titles/0-201-31015-5/" target="_top">the
Effective C++ CD example</a>
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch04s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02ch04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Numeric Properties </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 5. Dynamic Memory</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch04s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="fundamental_types.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Numeric Properties </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 5. Dynamic Memory</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html b/libstdc++-v3/doc/html/manual/bk01pt02pr01.html
index 328f4e4c7f3..93a9e07c364 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt02pr01.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="support.html" title="Part II. Support" /><link rel="next" href="bk01pt02ch04.html" title="Chapter 4. Types" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><th width="60%" align="center">Part II. Support</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch04.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id449160"></a></h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II.  Support" /><link rel="prev" href="support.html" title="Part II.  Support" /><link rel="next" href="fundamental_types.html" title="Chapter 4. Types" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><th width="60%" align="center">Part II. 
+ Support
+
+</th><td width="20%" align="right"> <a accesskey="n" href="fundamental_types.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id485371"></a></h2></div></div></div><p>
This part deals with the functions called and objects created
automatically during the course of a program's existence.
</p><p>
@@ -8,4 +11,7 @@
need to get your own copy from your nation's member body; see our
homepage for help), we can mention a couple of changes in what
kind of support a C++ program gets from the Standard Library.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part II. Support </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Types</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="fundamental_types.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part II. 
+ Support
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Types</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html
index 34f4b23391c..e58c3f9b503 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Adding Data to Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt03ch07.html" title="Chapter 7. Exceptions" /><link rel="prev" href="bk01pt03ch07.html" title="Chapter 7. Exceptions" /><link rel="next" href="bk01pt03ch07s03.html" title="Cancellation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Adding Data to Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Exceptions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.data"></a>Adding Data to Exceptions</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Adding Data to Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="prev" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="next" href="bk01pt03ch07s03.html" title="Cancellation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Adding Data to Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Exceptions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.data"></a>Adding Data to Exceptions</h2></div></div></div><p>
The standard exception classes carry with them a single string as
data (usually describing what went wrong or where the 'throw' took
place). It's good to remember that you can add your own data to
@@ -17,4 +17,4 @@
int e;
DBID id; // some user-defined type
};
- </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt03ch07.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch07s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 7. Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Cancellation</td></tr></table></div></body></html>
+ </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="exceptions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="exceptions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch07s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 7. Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Cancellation</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch07s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch07s03.html
index 08ba25edef1..36d3d762cf0 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt03ch07s03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt03ch07s03.html
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Cancellation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt03ch07.html" title="Chapter 7. Exceptions" /><link rel="prev" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /><link rel="next" href="bk01pt03ch08.html" title="Chapter 8. Concept Checking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Cancellation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Exceptions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.cancellation"></a>Cancellation</h2></div></div></div><p>
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt03ch07.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Adding Data to Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 8. Concept Checking</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Cancellation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="prev" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /><link rel="next" href="bk01pt03ch08.html" title="Chapter 8. Concept Checking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Cancellation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Exceptions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.cancellation"></a>Cancellation</h2></div></div></div><p>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="exceptions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Adding Data to Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 8. Concept Checking</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch08.html b/libstdc++-v3/doc/html/manual/bk01pt03ch08.html
index c4322ba51eb..26a4b75fbf0 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt03ch08.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt03ch08.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Concept Checking</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III. Diagnostics" /><link rel="prev" href="bk01pt03ch07s03.html" title="Cancellation" /><link rel="next" href="utilities.html" title="Part IV. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Concept Checking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><th width="60%" align="center">Part III. Diagnostics</th><td width="20%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.concept_checking"></a>Chapter 8. Concept Checking</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Concept Checking</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III.  Diagnostics" /><link rel="prev" href="bk01pt03ch07s03.html" title="Cancellation" /><link rel="next" href="utilities.html" title="Part IV.  Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Concept Checking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><th width="60%" align="center">Part III. 
+ Diagnostics
+
+</th><td width="20%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.concept_checking"></a>Chapter 8. Concept Checking</h2></div></div></div><p>
In 1999, SGI added “<span class="quote">concept checkers</span>” to their
implementation of the STL: code which checked the template
parameters of instantiated pieces of the STL, in order to insure
@@ -36,4 +39,7 @@
support for template parameter constraints based on concepts in the core
language. This will obviate the need for the library-simulated concept
checking described above.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Cancellation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part IV. Utilities</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Cancellation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part IV. 
+ Utilities
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt05ch13.html b/libstdc++-v3/doc/html/manual/bk01pt05ch13.html
index 2af0b5d51b2..07535c3c538 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt05ch13.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt05ch13.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 13. String Classes</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="strings.html" title="Part V. Strings" /><link rel="prev" href="strings.html" title="Part V. Strings" /><link rel="next" href="bk01pt05ch13s02.html" title="Case Sensitivity" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13. String Classes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="strings.html">Prev</a> </td><th width="60%" align="center">Part V. Strings</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.strings.string"></a>Chapter 13. String Classes</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.simple"></a>Simple Transformations</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 13. String Classes</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="strings.html" title="Part V.  Strings" /><link rel="prev" href="strings.html" title="Part V.  Strings" /><link rel="next" href="bk01pt05ch13s02.html" title="Case Sensitivity" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13. String Classes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="strings.html">Prev</a> </td><th width="60%" align="center">Part V. 
+ Strings
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.strings.string"></a>Chapter 13. String Classes</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.simple"></a>Simple Transformations</h2></div></div></div><p>
Here are Standard, simple, and portable ways to perform common
transformations on a <code class="code">string</code> instance, such as
"convert to all upper case." The word transformations
@@ -86,4 +89,7 @@
str.erase(notwhite+1); </pre><p>Obviously, the calls to <code class="code">find</code> could be inserted directly
into the calls to <code class="code">erase</code>, in case your compiler does not
optimize named temporaries out of existence.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="strings.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="strings.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part V. Strings </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Case Sensitivity</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="strings.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="strings.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part V. 
+ Strings
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Case Sensitivity</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt05ch13s06.html b/libstdc++-v3/doc/html/manual/bk01pt05ch13s06.html
index 2ee648ef602..9e94ff4c154 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt05ch13s06.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt05ch13s06.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CString (MFC)</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /><link rel="prev" href="bk01pt05ch13s05.html" title="Shrink to Fit" /><link rel="next" href="localization.html" title="Part VI. Localization" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">CString (MFC)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s05.html">Prev</a> </td><th width="60%" align="center">Chapter 13. String Classes</th><td width="20%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.Cstring"></a>CString (MFC)</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CString (MFC)</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /><link rel="prev" href="bk01pt05ch13s05.html" title="Shrink to Fit" /><link rel="next" href="localization.html" title="Part VI.  Localization" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">CString (MFC)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s05.html">Prev</a> </td><th width="60%" align="center">Chapter 13. String Classes</th><td width="20%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.Cstring"></a>CString (MFC)</h2></div></div></div><p>
</p><p>A common lament seen in various newsgroups deals with the Standard
string class as opposed to the Microsoft Foundation Class called
CString. Often programmers realize that a standard portable
@@ -88,4 +88,7 @@
libstdc++ string, the SGI string, and the SGI rope, and this
is all before any allocator or traits customizations! (More
choices than you can shake a stick at -- want fries with that?)
- </p></li></ul></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt05ch13.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Shrink to Fit </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VI. Localization</td></tr></table></div></body></html>
+ </p></li></ul></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt05ch13.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Shrink to Fit </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VI. 
+ Localization
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt08ch19.html b/libstdc++-v3/doc/html/manual/bk01pt08ch19.html
index fdf36b91861..7f7f79025d7 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt08ch19.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt08ch19.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 19. Predefined</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="iterators.html" title="Part VIII. Iterators" /><link rel="prev" href="iterators.html" title="Part VIII. Iterators" /><link rel="next" href="bk01pt08ch19s02.html" title="One Past the End" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 19. Predefined</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><th width="60%" align="center">Part VIII. Iterators</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt08ch19s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.iterators.predefined"></a>Chapter 19. Predefined</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="iterators.predefined.vs_pointers"></a>Iterators vs. Pointers</h2></div></div></div><p><a class="ulink" href="../faq/index.html#5_1" target="_top">FAQ 5.1</a> points out that iterators
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 19. Predefined</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="iterators.html" title="Part VIII.  Iterators" /><link rel="prev" href="iterators.html" title="Part VIII.  Iterators" /><link rel="next" href="bk01pt08ch19s02.html" title="One Past the End" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 19. Predefined</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><th width="60%" align="center">Part VIII. 
+ Iterators
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt08ch19s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.iterators.predefined"></a>Chapter 19. Predefined</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="iterators.predefined.vs_pointers"></a>Iterators vs. Pointers</h2></div></div></div><p><a class="ulink" href="../faq/index.html#5_1" target="_top">FAQ 5.1</a> points out that iterators
are not implemented as pointers. They are a generalization of
pointers, but they are implemented in libstdc++ as separate classes.
</p><p>Keeping that simple fact in mind as you design your code will
@@ -27,4 +30,7 @@
information gets passed down through inheritance, so while the
compiler has to do work looking up all the names, your runtime code
does not. (This has been a prime concern from the beginning.)
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="iterators.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt08ch19s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VIII. Iterators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> One Past the End</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="iterators.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt08ch19s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VIII. 
+ Iterators
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> One Past the End</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt08ch19s02.html b/libstdc++-v3/doc/html/manual/bk01pt08ch19s02.html
index e22e968ac76..ba36e2fd57e 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt08ch19s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt08ch19s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>One Past the End</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt08ch19.html" title="Chapter 19. Predefined" /><link rel="prev" href="bk01pt08ch19.html" title="Chapter 19. Predefined" /><link rel="next" href="algorithms.html" title="Part IX. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">One Past the End</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt08ch19.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Predefined</th><td width="20%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="iterators.predefined.end"></a>One Past the End</h2></div></div></div><p>This starts off sounding complicated, but is actually very easy,
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>One Past the End</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt08ch19.html" title="Chapter 19. Predefined" /><link rel="prev" href="bk01pt08ch19.html" title="Chapter 19. Predefined" /><link rel="next" href="algorithms.html" title="Part IX.  Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">One Past the End</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt08ch19.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Predefined</th><td width="20%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="iterators.predefined.end"></a>One Past the End</h2></div></div></div><p>This starts off sounding complicated, but is actually very easy,
especially towards the end. Trust me.
</p><p>Beginners usually have a little trouble understand the whole
'past-the-end' thing, until they remember their early algebra classes
@@ -80,4 +80,7 @@
sequences very simple to recognize: if the two endpoints compare
equal, then the {array, sequence, container, whatever} is empty.
</p><p>Just don't dereference <code class="code">end()</code>.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt08ch19.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt08ch19.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 19. Predefined </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part IX. Algorithms</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt08ch19.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt08ch19.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 19. Predefined </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part IX. 
+ Algorithms
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt09ch20.html b/libstdc++-v3/doc/html/manual/bk01pt09ch20.html
index ff02c3a0708..5ad9ee5ff00 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt09ch20.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt09ch20.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 20. Mutating</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; , &#10; algorithm&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="algorithms.html" title="Part IX. Algorithms" /><link rel="prev" href="bk01pt09pr02.html" title="" /><link rel="next" href="numerics.html" title="Part X. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 20. Mutating</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt09pr02.html">Prev</a> </td><th width="60%" align="center">Part IX. Algorithms</th><td width="20%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.algorithms.mutating"></a>Chapter 20. Mutating</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap">swap</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="algorithms.mutating.swap"></a><code class="function">swap</code></h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="algorithms.swap.specializations"></a>Specializations</h3></div></div></div><p>If you call <code class="code"> std::swap(x,y); </code> where x and y are standard
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 20. Mutating</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; , &#10; algorithm&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="algorithms.html" title="Part IX.  Algorithms" /><link rel="prev" href="bk01pt09pr02.html" title="" /><link rel="next" href="numerics.html" title="Part X.  Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 20. Mutating</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt09pr02.html">Prev</a> </td><th width="60%" align="center">Part IX. 
+ Algorithms
+
+</th><td width="20%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.algorithms.mutating"></a>Chapter 20. Mutating</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap">swap</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="algorithms.mutating.swap"></a><code class="function">swap</code></h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="algorithms.swap.specializations"></a>Specializations</h3></div></div></div><p>If you call <code class="code"> std::swap(x,y); </code> where x and y are standard
containers, then the call will automatically be replaced by a call to
<code class="code"> x.swap(y); </code> instead.
</p><p>This allows member functions of each container class to take over, and
@@ -10,4 +13,7 @@
fact use constant-time swaps.) This should not be surprising, since
for two containers of the same type to swap contents, only some
internal pointers to storage need to be exchanged.
- </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt09pr02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="algorithms.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part X. Numerics</td></tr></table></div></body></html>
+ </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt09pr02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="algorithms.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part X. 
+ Numerics
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt09pr02.html b/libstdc++-v3/doc/html/manual/bk01pt09pr02.html
index bed0823db7e..ffd0c373331 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt09pr02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt09pr02.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; , &#10; algorithm&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="algorithms.html" title="Part IX. Algorithms" /><link rel="prev" href="algorithms.html" title="Part IX. Algorithms" /><link rel="next" href="bk01pt09ch20.html" title="Chapter 20. Mutating" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><th width="60%" align="center">Part IX. Algorithms</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt09ch20.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id464669"></a></h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; , &#10; algorithm&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="algorithms.html" title="Part IX.  Algorithms" /><link rel="prev" href="algorithms.html" title="Part IX.  Algorithms" /><link rel="next" href="bk01pt09ch20.html" title="Chapter 20. Mutating" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><th width="60%" align="center">Part IX. 
+ Algorithms
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt09ch20.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id476417"></a></h2></div></div></div><p>
The neatest accomplishment of the algorithms chapter is that all the
work is done via iterators, not containers directly. This means two
important things:
@@ -32,4 +35,7 @@
this simple rule that seems to cause so much confusion. Once you
get <span class="emphasis"><em>range</em></span> into your head (it's not that
hard, honest!), then the algorithms are a cakewalk.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="algorithms.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt09ch20.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part IX. Algorithms </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 20. Mutating</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="algorithms.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt09ch20.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part IX. 
+ Algorithms
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 20. Mutating</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt10ch23.html b/libstdc++-v3/doc/html/manual/bk01pt10ch23.html
deleted file mode 100644
index a3902b3df29..00000000000
--- a/libstdc++-v3/doc/html/manual/bk01pt10ch23.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 23. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X. Numerics" /><link rel="prev" href="bk01pt10ch22.html" title="Chapter 22. Generalized Operations" /><link rel="next" href="bk01pt10ch23s02.html" title="C99" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 23. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt10ch22.html">Prev</a> </td><th width="60%" align="center">Part X. Numerics</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt10ch23s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.c"></a>Chapter 23. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt10ch23.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.c.array"></a>Numerics vs. Arrays</h2></div></div></div><p>One of the major reasons why FORTRAN can chew through numbers so well
- is that it is defined to be free of pointer aliasing, an assumption
- that C89 is not allowed to make, and neither is C++98. C99 adds a new
- keyword, <code class="code">restrict</code>, to apply to individual pointers. The
- C++ solution is contained in the library rather than the language
- (although many vendors can be expected to add this to their compilers
- as an extension).
- </p><p>That library solution is a set of two classes, five template classes,
- and "a whole bunch" of functions. The classes are required
- to be free of pointer aliasing, so compilers can optimize the
- daylights out of them the same way that they have been for FORTRAN.
- They are collectively called <code class="code">valarray</code>, although strictly
- speaking this is only one of the five template classes, and they are
- designed to be familiar to people who have worked with the BLAS
- libraries before.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt10ch22.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt10ch23s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 22. Generalized Operations </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> C99</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt10ch23s02.html b/libstdc++-v3/doc/html/manual/bk01pt10ch23s02.html
index 1122049025e..2d6695f671d 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt10ch23s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt10ch23s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>C99</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt10ch23.html" title="Chapter 23. Interacting with C" /><link rel="prev" href="bk01pt10ch23.html" title="Chapter 23. Interacting with C" /><link rel="next" href="io.html" title="Part XI. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">C99</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt10ch23.html">Prev</a> </td><th width="60%" align="center">Chapter 23. Interacting with C</th><td width="20%" align="right"> <a accesskey="n" href="io.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.c.c99"></a>C99</h2></div></div></div><p>In addition to the other topics on this page, we'll note here some
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>C99</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics_and_c.html" title="Chapter 23. Interacting with C" /><link rel="prev" href="numerics_and_c.html" title="Chapter 23. Interacting with C" /><link rel="next" href="io.html" title="Part XI.  Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">C99</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics_and_c.html">Prev</a> </td><th width="60%" align="center">Chapter 23. Interacting with C</th><td width="20%" align="right"> <a accesskey="n" href="io.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.c.c99"></a>C99</h2></div></div></div><p>In addition to the other topics on this page, we'll note here some
of the C99 features that appear in libstdc++.
</p><p>The C99 features depend on the <code class="code">--enable-c99</code> configure flag.
This flag is already on by default, but it can be disabled by the
@@ -13,4 +13,7 @@
are supported, as is the <code class="code">lldiv_t</code> typedef. Also supported
are the wide character functions using 'long long', like
<code class="code">wcstoll</code>.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt10ch23.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt10ch23.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="io.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 23. Interacting with C </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part XI. Input and Output</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="numerics_and_c.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics_and_c.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="io.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 23. Interacting with C </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part XI. 
+ Input and Output
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch25s02.html b/libstdc++-v3/doc/html/manual/bk01pt11ch25s02.html
index 36b7e1ad8b5..b804b534437 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch25s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt11ch25s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Buffering</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt11ch25.html" title="Chapter 25. Stream Buffers" /><link rel="prev" href="bk01pt11ch25.html" title="Chapter 25. Stream Buffers" /><link rel="next" href="bk01pt11ch26.html" title="Chapter 26. Memory Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Buffering</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch25.html">Prev</a> </td><th width="60%" align="center">Chapter 25. Stream Buffers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch26.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="io.streambuf.buffering"></a>Buffering</h2></div></div></div><p>First, are you sure that you understand buffering? Particularly
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Buffering</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="streambufs.html" title="Chapter 25. Stream Buffers" /><link rel="prev" href="streambufs.html" title="Chapter 25. Stream Buffers" /><link rel="next" href="stringstreams.html" title="Chapter 26. Memory Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Buffering</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><th width="60%" align="center">Chapter 25. Stream Buffers</th><td width="20%" align="right"> <a accesskey="n" href="stringstreams.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="io.streambuf.buffering"></a>Buffering</h2></div></div></div><p>First, are you sure that you understand buffering? Particularly
the fact that C++ may not, in fact, have anything to do with it?
</p><p>The rules for buffering can be a little odd, but they aren't any
different from those of C. (Maybe that's why they can be a bit
@@ -74,4 +74,4 @@
just those at the language/library level. Kernel buffers, disk
buffers, and the like will also have an effect. Inspecting and
changing those are system-dependent.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch25.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt11ch25.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch26.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 25. Stream Buffers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 26. Memory Based Streams</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="streambufs.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="stringstreams.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 25. Stream Buffers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 26. Memory Based Streams</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch27s02.html b/libstdc++-v3/doc/html/manual/bk01pt11ch27s02.html
index e8079c4d3de..2a2d7784a37 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch27s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt11ch27s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Binary Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt11ch27.html" title="Chapter 27. File Based Streams" /><link rel="prev" href="bk01pt11ch27.html" title="Chapter 27. File Based Streams" /><link rel="next" href="bk01pt11ch27s03.html" title="More Binary Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Binary Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch27.html">Prev</a> </td><th width="60%" align="center">Chapter 27. File Based Streams</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch27s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.filestreams.binary"></a>Binary Input and Output</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Binary Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="fstreams.html" title="Chapter 27. File Based Streams" /><link rel="prev" href="fstreams.html" title="Chapter 27. File Based Streams" /><link rel="next" href="bk01pt11ch27s03.html" title="More Binary Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Binary Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 27. File Based Streams</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch27s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.filestreams.binary"></a>Binary Input and Output</h2></div></div></div><p>
</p><p>The first and most important thing to remember about binary I/O is
that opening a file with <code class="code">ios::binary</code> is not, repeat
<span class="emphasis"><em>not</em></span>, the only thing you have to do. It is not a silver
@@ -92,4 +92,4 @@
article and continuing to the end of the thread. (You'll have to
sort through some flames every couple of paragraphs, but the points
made are good ones.)
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch27.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt11ch27.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch27s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 27. File Based Streams </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> More Binary Input and Output</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="fstreams.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch27s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 27. File Based Streams </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> More Binary Input and Output</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch27s03.html b/libstdc++-v3/doc/html/manual/bk01pt11ch27s03.html
index 4de641f9de7..6e51b647a72 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch27s03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt11ch27s03.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>More Binary Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt11ch27.html" title="Chapter 27. File Based Streams" /><link rel="prev" href="bk01pt11ch27s02.html" title="Binary Input and Output" /><link rel="next" href="bk01pt11ch28.html" title="Chapter 28. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">More Binary Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch27s02.html">Prev</a> </td><th width="60%" align="center">Chapter 27. File Based Streams</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch28.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.filestreams.binary2"></a>More Binary Input and Output</h2></div></div></div><p>Towards the beginning of February 2001, the subject of
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>More Binary Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="fstreams.html" title="Chapter 27. File Based Streams" /><link rel="prev" href="bk01pt11ch27s02.html" title="Binary Input and Output" /><link rel="next" href="io_and_c.html" title="Chapter 28. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">More Binary Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch27s02.html">Prev</a> </td><th width="60%" align="center">Chapter 27. File Based Streams</th><td width="20%" align="right"> <a accesskey="n" href="io_and_c.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.filestreams.binary2"></a>More Binary Input and Output</h2></div></div></div><p>Towards the beginning of February 2001, the subject of
"binary" I/O was brought up in a couple of places at the
same time. One notable place was Usenet, where James Kanze and
Dietmar Kühl separately posted articles on why attempting
@@ -19,4 +19,4 @@
Dietmar Kühl mentioned that he had written a pair of stream
classes that would read and write XDR, which is a good step towards
a portable binary format.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch27s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt11ch27.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch28.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Binary Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 28. Interacting with C</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch27s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="fstreams.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="io_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Binary Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 28. Interacting with C</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch28s02.html b/libstdc++-v3/doc/html/manual/bk01pt11ch28s02.html
index 7dee2f3213a..5e668931c7d 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch28s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt11ch28s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Performance</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt11ch28.html" title="Chapter 28. Interacting with C" /><link rel="prev" href="bk01pt11ch28.html" title="Chapter 28. Interacting with C" /><link rel="next" href="extensions.html" title="Part XII. Extensions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Performance</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch28.html">Prev</a> </td><th width="60%" align="center">Chapter 28. Interacting with C</th><td width="20%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.c.sync"></a>Performance</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Performance</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io_and_c.html" title="Chapter 28. Interacting with C" /><link rel="prev" href="io_and_c.html" title="Chapter 28. Interacting with C" /><link rel="next" href="extensions.html" title="Part XII.  Extensions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Performance</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">Chapter 28. Interacting with C</th><td width="20%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.c.sync"></a>Performance</h2></div></div></div><p>
Pathetic Performance? Ditch C.
</p><p>It sounds like a flame on C, but it isn't. Really. Calm down.
I'm just saying it to get your attention.
@@ -43,4 +43,7 @@
<code class="code">clog</code>, and their wide-character counterparts). File stream
objects that you declare yourself have no such requirement and are fully
buffered.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch28.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt11ch28.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 28. Interacting with C </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part XII. Extensions</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io_and_c.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 28. Interacting with C </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part XII. 
+ Extensions
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html
index 7fd9f2c6327..81b34e48df0 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html
@@ -19,6 +19,6 @@
mode or with debug mode. The
following table provides the names and headers of the debugging
containers:
-</p><div class="table"><a id="id513827"></a><p class="title"><b>Table 30.1. Debugging Containers</b></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /><col /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename">deque</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename">list</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename">map</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename">map</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename">set</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename">set</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename">string</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename">string</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename">string</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++0x mode, these additional
+</p><div class="table"><a id="id538028"></a><p class="title"><b>Table 30.1. Debugging Containers</b></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /><col /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename">deque</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename">list</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename">map</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename">map</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename">set</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename">set</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename">string</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename">string</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename">string</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++0x mode, these additional
containers have additional debug capability.
-</p><div class="table"><a id="id470143"></a><p class="title"><b>Table 30.2. Debugging Containers C++0x</b></p><div class="table-contents"><table summary="Debugging Containers C++0x" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /><col /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch30s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch30s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
+</p><div class="table"><a id="id506636"></a><p class="title"><b>Table 30.2. Debugging Containers C++0x</b></p><div class="table-contents"><table summary="Debugging Containers C++0x" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /><col /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch30s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch30s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html
index fed819c6b02..5bb42f36dfc 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html
@@ -63,4 +63,4 @@ Then compile this code with the prerequisite compiler flags
flags for atomic operations.)
</p><p> The following table provides the names and headers of all the
parallel algorithms that can be used in a similar manner:
-</p><div class="table"><a id="id466177"></a><p class="title"><b>Table 31.1. Parallel Algorithms</b></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Algorithm</th><th align="left">Header</th><th align="left">Parallel algorithm</th><th align="left">Parallel header</th></tr></thead><tbody><tr><td align="left"><code class="function">std::accumulate</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::accumulate</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_difference</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::inner_product</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::inner_product</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::partial_sum</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::partial_sum</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::equal</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::equal</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_first_of</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_first_of</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::for_each</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::for_each</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::lexicographical_compare</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::mismatch</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::mismatch</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::transform</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::transform</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::max_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::max_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::merge</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::merge</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::min_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::min_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::nth_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::nth_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partial_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partial_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partition</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partition</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::random_shuffle</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::random_shuffle</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_union</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_union</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_intersection</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_intersection</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_symmetric_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::stable_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::stable_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::unique_copy</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::unique_copy</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch31s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
+</p><div class="table"><a id="id596074"></a><p class="title"><b>Table 31.1. Parallel Algorithms</b></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Algorithm</th><th align="left">Header</th><th align="left">Parallel algorithm</th><th align="left">Parallel header</th></tr></thead><tbody><tr><td align="left"><code class="function">std::accumulate</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::accumulate</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_difference</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::inner_product</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::inner_product</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::partial_sum</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::partial_sum</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::equal</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::equal</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_first_of</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_first_of</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::for_each</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::for_each</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::lexicographical_compare</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::mismatch</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::mismatch</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::transform</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::transform</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::max_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::max_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::merge</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::merge</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::min_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::min_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::nth_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::nth_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partial_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partial_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partition</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partition</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::random_shuffle</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::random_shuffle</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_union</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_union</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_intersection</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_intersection</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_symmetric_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::stable_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::stable_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::unique_copy</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::unique_copy</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch31s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html b/libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html
index 733a5258869..d0dce191ae8 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Testing</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; library&#10; , &#10; parallel&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 31. Parallel Mode" /><link rel="prev" href="bk01pt12ch31s04.html" title="Design" /><link rel="next" href="bk01pt12ch32.html" title="Chapter 32. Allocators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s04.html">Prev</a> </td><th width="60%" align="center">Chapter 31. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.test"></a>Testing</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Testing</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; library&#10; , &#10; parallel&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 31. Parallel Mode" /><link rel="prev" href="bk01pt12ch31s04.html" title="Design" /><link rel="next" href="ext_allocators.html" title="Chapter 32. Allocators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s04.html">Prev</a> </td><th width="60%" align="center">Chapter 31. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="ext_allocators.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.test"></a>Testing</h2></div></div></div><p>
Both the normal conformance and regression tests and the
supplemental performance tests work.
</p><p>
@@ -23,4 +23,4 @@
additional software dependencies than the usual bare-boned text
file, and can be generated by using the <code class="code">make
doc-performance</code> rule in the testsuite's Makefile.
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch32.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 32. Allocators</td></tr></table></div></body></html>
+</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_allocators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 32. Allocators</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch33s02.html b/libstdc++-v3/doc/html/manual/bk01pt12ch33s02.html
index 6318af08bf5..03848884170 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch33s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch33s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HP/SGI</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt12ch33.html" title="Chapter 33. Containers" /><link rel="prev" href="bk01pt12ch33.html" title="Chapter 33. Containers" /><link rel="next" href="bk01pt12ch33s03.html" title="Deprecated HP/SGI" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">HP/SGI</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch33.html">Prev</a> </td><th width="60%" align="center">Chapter 33. Containers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch33s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.sgi"></a>HP/SGI</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HP/SGI</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_containers.html" title="Chapter 33. Containers" /><link rel="prev" href="ext_containers.html" title="Chapter 33. Containers" /><link rel="next" href="bk01pt12ch33s03.html" title="Deprecated HP/SGI" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">HP/SGI</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><th width="60%" align="center">Chapter 33. Containers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch33s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.sgi"></a>HP/SGI</h2></div></div></div><p>
</p><p>A few extensions and nods to backwards-compatibility have been made with
containers. Those dealing with older SGI-style allocators are dealt with
elsewhere. The remaining ones all deal with bits:
@@ -40,4 +40,4 @@
</p><pre class="programlisting">
size_t _Find_first() const;
size_t _Find_next (size_t prev) const;</pre><p>The same caveat given for the _Unchecked_* functions applies here also.
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch33.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt12ch33.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch33s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 33. Containers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Deprecated HP/SGI</td></tr></table></div></body></html>
+</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch33s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 33. Containers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Deprecated HP/SGI</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch33s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch33s03.html
index 56bc9c58e86..c1aa5dc40ed 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch33s03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch33s03.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Deprecated HP/SGI</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt12ch33.html" title="Chapter 33. Containers" /><link rel="prev" href="bk01pt12ch33s02.html" title="HP/SGI" /><link rel="next" href="bk01pt12ch34.html" title="Chapter 34. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Deprecated HP/SGI</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch33s02.html">Prev</a> </td><th width="60%" align="center">Chapter 33. Containers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch34.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.deprecated_sgi"></a>Deprecated HP/SGI</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Deprecated HP/SGI</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_containers.html" title="Chapter 33. Containers" /><link rel="prev" href="bk01pt12ch33s02.html" title="HP/SGI" /><link rel="next" href="ext_utilities.html" title="Chapter 34. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Deprecated HP/SGI</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch33s02.html">Prev</a> </td><th width="60%" align="center">Chapter 33. Containers</th><td width="20%" align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.deprecated_sgi"></a>Deprecated HP/SGI</h2></div></div></div><p>
The SGI hashing classes <code class="classname">hash_set</code> and
<code class="classname">hash_set</code> have been deprecated by the
unordered_set, unordered_multiset, unordered_map,
@@ -47,4 +47,4 @@
possibility of pathological cases, you'll probably get better
performance from hash_map.
</em></span>
- </p></blockquote></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch33s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt12ch33.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch34.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">HP/SGI </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 34. Utilities</td></tr></table></div></body></html>
+ </p></blockquote></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch33s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">HP/SGI </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 34. Utilities</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html b/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html
index 2377a0e32f4..0a8bf611b25 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="concurrency.html" title="Chapter 40. Concurrency" /><link rel="prev" href="concurrency.html" title="Chapter 40. Concurrency" /><link rel="next" href="bk01pt12ch40s03.html" title="Use" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 40. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch40s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.impl"></a>Implementation</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.atomic_fallbacks"></a>Using Builtin Atomic Functions</h3></div></div></div><p>The functions for atomic operations described above are either
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_concurrency.html" title="Chapter 40. Concurrency" /><link rel="prev" href="ext_concurrency.html" title="Chapter 40. Concurrency" /><link rel="next" href="bk01pt12ch40s03.html" title="Use" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 40. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch40s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.impl"></a>Implementation</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.atomic_fallbacks"></a>Using Builtin Atomic Functions</h3></div></div></div><p>The functions for atomic operations described above are either
implemented via compiler intrinsics (if the underlying host is
capable) or by library fallbacks.</p><p>Compiler intrinsics (builtins) are always preferred. However, as
the compiler builtins for atomics are not universally implemented,
@@ -38,4 +38,4 @@ use this layer. More detail as to the specific interface can be found in the sou
functions, and usage found in the usual &lt;pthread.h&gt; file,
including <code class="code">pthread_t</code>, <code class="code">pthread_once_t</code>, <code class="code">pthread_create</code>,
etc.
-</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch40s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 40. Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Use</td></tr></table></div></body></html>
+</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch40s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 40. Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Use</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch40s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch40s03.html
index b02d55e2163..115aa9f55c0 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch40s03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12ch40s03.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Use</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="concurrency.html" title="Chapter 40. Concurrency" /><link rel="prev" href="bk01pt12ch40s02.html" title="Implementation" /><link rel="next" href="appendix_contributing.html" title="Appendix A. Contributing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Use</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch40s02.html">Prev</a> </td><th width="60%" align="center">Chapter 40. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.use"></a>Use</h2></div></div></div><p>Typical usage of the last two constructs is demonstrated as follows:
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Use</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_concurrency.html" title="Chapter 40. Concurrency" /><link rel="prev" href="bk01pt12ch40s02.html" title="Implementation" /><link rel="next" href="appendix_contributing.html" title="Appendix A.  Contributing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Use</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch40s02.html">Prev</a> </td><th width="60%" align="center">Chapter 40. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.use"></a>Use</h2></div></div></div><p>Typical usage of the last two constructs is demonstrated as follows:
</p><pre class="programlisting">
#include &lt;ext/concurrence.h&gt;
@@ -31,4 +31,7 @@ the mutex as control moves out of this block.
concurrence-related errors. These classes
are: <code class="code">__concurrence_lock_error</code>, <code class="code">__concurrence_unlock_error</code>, <code class="code">__concurrence_wait_error</code>,
and <code class="code">__concurrence_broadcast_error</code>.
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch40s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Implementation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix A. Contributing</td></tr></table></div></body></html>
+</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch40s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Implementation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix A. 
+ Contributing
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12pr03.html b/libstdc++-v3/doc/html/manual/bk01pt12pr03.html
index 6334c10f710..1843bebab4f 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12pr03.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt12pr03.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="extensions.html" title="Part XII. Extensions" /><link rel="next" href="bk01pt12ch29.html" title="Chapter 29. Compile Time Checks" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch29.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id513886"></a></h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="extensions.html" title="Part XII.  Extensions" /><link rel="next" href="ext_compile_checks.html" title="Chapter 29. Compile Time Checks" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr /></div><div class="preface" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id510314"></a></h2></div></div></div><p>
Here we will make an attempt at describing the non-Standard extensions to
the library. Some of these are from SGI's STL, some of these are GNU's,
and some just seemed to appear on the doorstep.
@@ -18,4 +21,7 @@ extensions, be aware of two things:
</p></li><li><p>
You should know how to <a class="ulink" href="XXX" target="_top">access
these headers properly</a>.
- </p></li></ol></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch29.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part XII. Extensions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 29. Compile Time Checks</td></tr></table></div></body></html>
+ </p></li></ol></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part XII. 
+ Extensions
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 29. Compile Time Checks</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html b/libstdc++-v3/doc/html/manual/bugs.html
index d8ecde5fd11..9217b8a1e4d 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html
+++ b/libstdc++-v3/doc/html/manual/bugs.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Bugs</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt01ch01.html" title="Chapter 1. Status" /><link rel="prev" href="bk01pt01ch01s02.html" title="License" /><link rel="next" href="bk01pt01ch02.html" title="Chapter 2. Setup" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Bugs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch01s02.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch02.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.bugs"></a>Bugs</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.bugs.impl"></a>Implementation Bugs</h3></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Bugs</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="status.html" title="Chapter 1. Status" /><link rel="prev" href="license.html" title="License" /><link rel="next" href="setup.html" title="Chapter 2. Setup" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Bugs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="license.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="setup.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.bugs"></a>Bugs</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.bugs.impl"></a>Implementation Bugs</h3></div></div></div><p>
Information on known bugs, details on efforts to fix them, and
fixed bugs are all available as part of the GCC bug tracking
system, <a class="ulink" href="http://gcc.gnu.org/bugzilla" target="_top">bugzilla</a>, with the
@@ -327,4 +327,4 @@
</p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#853" target="_top">853</a>:
<span class="emphasis"><em>to_string needs updating with zero and one</em></span>
</span></dt><dd><p>Update / add the signatures.
- </p></dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch01s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt01ch01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">License </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. Setup</td></tr></table></div></body></html>
+ </p></dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="license.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="status.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="setup.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">License </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. Setup</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/codecvt.html b/libstdc++-v3/doc/html/manual/codecvt.html
index 747dfb7543f..c3a3c33a304 100644
--- a/libstdc++-v3/doc/html/manual/codecvt.html
+++ b/libstdc++-v3/doc/html/manual/codecvt.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>codecvt</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; codecvt&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt06ch15.html" title="Chapter 15. Facets aka Categories" /><link rel="prev" href="bk01pt06ch15.html" title="Chapter 15. Facets aka Categories" /><link rel="next" href="messages.html" title="messages" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">codecvt</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt06ch15.html">Prev</a> </td><th width="60%" align="center">Chapter 15. Facets aka Categories</th><td width="20%" align="right"> <a accesskey="n" href="messages.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.codecvt"></a>codecvt</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>codecvt</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; codecvt&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="facets.html" title="Chapter 15. Facets aka Categories" /><link rel="prev" href="facets.html" title="Chapter 15. Facets aka Categories" /><link rel="next" href="messages.html" title="messages" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">codecvt</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="facets.html">Prev</a> </td><th width="60%" align="center">Chapter 15. Facets aka Categories</th><td width="20%" align="right"> <a accesskey="n" href="messages.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.codecvt"></a>codecvt</h2></div></div></div><p>
The standard class codecvt attempts to address conversions between
different character encoding schemes. In particular, the standard
attempts to detail conversions between the implementation-defined wide
@@ -337,43 +337,43 @@ codecvt usage.
</p></li><li><p>
wchar_t/char internal buffers and conversions between
internal/external buffers?
- </p></li></ul></div></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id453116"></a><p><span class="title"><i>
+ </p></li></ul></div></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id497298"></a><p><span class="title"><i>
The GNU C Library
- </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id517137"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id563280"></a><p><span class="title"><i>
Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id517166"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id524571"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id413525"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id524589"></a><p><span class="title"><i>
ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id413543"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id524608"></a><p><span class="title"><i>
System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
</i>. </span><span class="copyright">Copyright © 1999
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
<a class="ulink" href="http://www.opennc.org/austin/docreg.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id474993"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id493076"></a><p><span class="title"><i>
The C++ Programming Language, Special Edition
</i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id542082"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id534633"></a><p><span class="title"><i>
Standard C++ IOStreams and Locales
</i>. </span><span class="subtitle">
Advanced Programmer's Guide and Reference
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
Addison Wesley Longman
- . </span></span></p></div><div class="biblioentry"><a id="id450803"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id496709"></a><p><span class="title"><i>
A brief description of Normative Addendum 1
</i>. </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span><span class="biblioid">
<a class="ulink" href="http://www.lysator.liu.se/c/na1.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id512823"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id496740"></a><p><span class="title"><i>
The Unicode HOWTO
</i>. </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span><span class="biblioid">
<a class="ulink" href="ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id512851"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id579614"></a><p><span class="title"><i>
UTF-8 and Unicode FAQ for Unix/Linux
</i>. </span><span class="author"><span class="firstname">Markus</span> <span class="surname">Khun</span>. </span><span class="biblioid">
<a class="ulink" href="http://www.cl.cam.ac.uk/~mgk25/unicode.html" target="_top">
</a>
- . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt06ch15.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt06ch15.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="messages.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 15. Facets aka Categories </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> messages</td></tr></table></div></body></html>
+ . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="facets.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="facets.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="messages.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 15. Facets aka Categories </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> messages</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt10ch21.html b/libstdc++-v3/doc/html/manual/complex.html
index f1c82056d39..2bcdc179223 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt10ch21.html
+++ b/libstdc++-v3/doc/html/manual/complex.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 21. Complex</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X. Numerics" /><link rel="prev" href="numerics.html" title="Part X. Numerics" /><link rel="next" href="bk01pt10ch22.html" title="Chapter 22. Generalized Operations" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 21. Complex</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><th width="60%" align="center">Part X. Numerics</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt10ch22.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.complex"></a>Chapter 21. Complex</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt10ch21.html#numerics.complex.processing">complex Processing</a></span></dt></dl></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 21. Complex</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X.  Numerics" /><link rel="prev" href="numerics.html" title="Part X.  Numerics" /><link rel="next" href="generalized_numeric_operations.html" title="Chapter 22. Generalized Operations" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 21. Complex</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><th width="60%" align="center">Part X. 
+ Numerics
+
+</th><td width="20%" align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.complex"></a>Chapter 21. Complex</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="complex.html#numerics.complex.processing">complex Processing</a></span></dt></dl></div><p>
</p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.complex.processing"></a>complex Processing</h2></div></div></div><p>
</p><p>Using <code class="code">complex&lt;&gt;</code> becomes even more comple- er, sorry,
<span class="emphasis"><em>complicated</em></span>, with the not-quite-gratuitously-incompatible
@@ -16,4 +19,7 @@
and <code class="code">op&gt;&gt;</code> that work with iostreams: <code class="code">op&lt;&lt;</code>
prints <code class="code">(u,v)</code> and <code class="code">op&gt;&gt;</code> can read <code class="code">u</code>,
<code class="code">(u)</code>, and <code class="code">(u,v)</code>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt10ch22.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part X. Numerics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 22. Generalized Operations</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part X. 
+ Numerics
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 22. Generalized Operations</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/configure.html b/libstdc++-v3/doc/html/manual/configure.html
index 2636cd92cf8..9aadf235e3e 100644
--- a/libstdc++-v3/doc/html/manual/configure.html
+++ b/libstdc++-v3/doc/html/manual/configure.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Configure</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; configure&#10; , &#10; options&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt01ch02.html" title="Chapter 2. Setup" /><link rel="prev" href="bk01pt01ch02.html" title="Chapter 2. Setup" /><link rel="next" href="bk01pt01ch02s03.html" title="Make" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Configure</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch02.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch02s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.configure"></a>Configure</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Configure</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; configure&#10; , &#10; options&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="setup.html" title="Chapter 2. Setup" /><link rel="next" href="make.html" title="Make" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Configure</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.configure"></a>Configure</h2></div></div></div><p>
When configuring libstdc++, you'll have to configure the entire
<span class="emphasis"><em>gccsrcdir</em></span> directory. Consider using the
toplevel gcc configuration option
@@ -70,7 +70,7 @@
specify a wrapper for malloc, 'mt' for a fixed power of two allocator,
'pool' for the SGI pooled allocator or 'bitmap' for a bitmap allocator.
This option can change the library ABI. See this page for more information on allocator
- <a class="link" href="bk01pt04ch11.html#allocator.ext" title="Extension Allocators">extensions</a>
+ <a class="link" href="memory.html#allocator.ext" title="Extension Allocators">extensions</a>
</p></dd><dt><span class="term"><code class="code">--enable-cheaders=OPTION</code></span></dt><dd><p>This allows the user to define the approach taken for C header
compatibility with C++. Options are c, c_std, and c_global.
These correspond to the source directory's include/c,
@@ -198,4 +198,4 @@
linking of libpthread too, which activates locking, a large overhead
for single-thread programs. OPTION=no skips the tests completely.
The default is OPTION=no.
- </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt01ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch02s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Setup </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Make</td></tr></table></div></body></html>
+ </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Setup </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Make</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/containers.html b/libstdc++-v3/doc/html/manual/containers.html
index 5067d186901..f1b8e736a4c 100644
--- a/libstdc++-v3/doc/html/manual/containers.html
+++ b/libstdc++-v3/doc/html/manual/containers.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part VII. Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="messages.html" title="messages" /><link rel="next" href="bk01pt07ch16.html" title="Chapter 16. Sequences" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part VII. Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="messages.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt07ch16.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.containers"></a>Part VII. Containers</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt07ch16.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt07ch16.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch16.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt07ch16s02.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch16s02.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt07ch17.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt07ch17.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bk01pt07ch17s02.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch17s02.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bk01pt07ch17s02.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt07ch18.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt07ch18.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="messages.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt07ch16.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">messages </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Sequences</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part VII.  Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="messages.html" title="messages" /><link rel="next" href="sequences.html" title="Chapter 16. Sequences" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part VII. 
+ Containers
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="messages.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="sequences.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.containers"></a>Part VII. 
+ Containers
+ <a id="id495543" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="sequences.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="sequences.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="sequences.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="vector.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="vector.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="associative.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bitset.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitset.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bitset.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="containers_and_c.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="messages.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sequences.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">messages </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Sequences</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch18.html b/libstdc++-v3/doc/html/manual/containers_and_c.html
index af7bb752411..512f7a2c5d2 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch18.html
+++ b/libstdc++-v3/doc/html/manual/containers_and_c.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 18. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII. Containers" /><link rel="prev" href="bk01pt07ch17s02.html" title="bitset" /><link rel="next" href="iterators.html" title="Part VIII. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 18. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt07ch17s02.html">Prev</a> </td><th width="60%" align="center">Part VII. Containers</th><td width="20%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.c"></a>Chapter 18. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt07ch18.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.c.vs_array"></a>Containers vs. Arrays</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 18. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII.  Containers" /><link rel="prev" href="bitset.html" title="bitset" /><link rel="next" href="iterators.html" title="Part VIII.  Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 18. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><th width="60%" align="center">Part VII. 
+ Containers
+
+</th><td width="20%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.c"></a>Chapter 18. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.c.vs_array"></a>Containers vs. Arrays</h2></div></div></div><p>
You're writing some code and can't decide whether to use builtin
arrays or some kind of container. There are compelling reasons
to use one of the container classes, but you're afraid that
@@ -57,4 +60,7 @@
inline unsigned int lengthof (T (&amp;)[sz]) { return sz; }
</pre><p>
looks just weird! Hint: unused parameters can be left nameless.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt07ch17s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitset </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VIII. Iterators</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitset </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VIII. 
+ Iterators
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/debug.html b/libstdc++-v3/doc/html/manual/debug.html
index 74a981ffd53..1dd28689fd9 100644
--- a/libstdc++-v3/doc/html/manual/debug.html
+++ b/libstdc++-v3/doc/html/manual/debug.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Debugging Support</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; debug&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="bk01pt01ch03s06.html" title="Exceptions" /><link rel="next" href="support.html" title="Part II. Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Debugging Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch03s06.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="support.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.debug"></a>Debugging Support</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Debugging Support</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; debug&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_exceptions.html" title="Exceptions" /><link rel="next" href="support.html" title="Part II.  Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Debugging Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="support.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.debug"></a>Debugging Support</h2></div></div></div><p>
There are numerous things that can be done to improve the ease with
which C++ binaries are debugged when using the GNU tool chain. Here
are some of them.
@@ -67,7 +67,7 @@
thing of great importance to keep in mind when debugging C++ code
that uses <code class="code">new</code> and <code class="code">delete</code>: there are
different kinds of allocation schemes that can be used by <code class="code">
- std::allocator </code>. For implementation details, see the <a class="link" href="bk01pt12ch32.html#manual.ext.allocator.mt" title="mt_allocator">mt allocator</a> documentation and
+ std::allocator </code>. For implementation details, see the <a class="link" href="ext_allocators.html#manual.ext.allocator.mt" title="mt_allocator">mt allocator</a> documentation and
look specifically for <code class="code">GLIBCXX_FORCE_NEW</code>.
</p><p>
In a nutshell, the default allocator used by <code class="code">
@@ -138,12 +138,15 @@
set print demangle on
set demangle-style gnu-v3
</pre></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="debug.exceptions"></a>Tracking uncaught exceptions</h3></div></div></div><p>
- The <a class="link" href="bk01pt02ch06s02.html" title="Verbose Terminate Handler">verbose
+ The <a class="link" href="verbose_termination.html" title="Verbose Terminate Handler">verbose
termination handler</a> gives information about uncaught
exceptions which are killing the program. It is described in the
linked-to page.
</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="debug.debug_mode"></a>Debug Mode</h3></div></div></div><p> The <a class="link" href="debug_mode.html" title="Chapter 30. Debug Mode">Debug Mode</a>
has compile and run-time checks for many containers.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="debug.compile_time_checks"></a>Compile Time Checking</h3></div></div></div><p> The <a class="link" href="bk01pt12ch29.html" title="Chapter 29. Compile Time Checks">Compile-Time
+ </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="debug.compile_time_checks"></a>Compile Time Checking</h3></div></div></div><p> The <a class="link" href="ext_compile_checks.html" title="Chapter 29. Compile Time Checks">Compile-Time
Checks</a> Extension has compile-time checks for many algorithms.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch03s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="support.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part II. Support</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="support.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part II. 
+ Support
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/debug_mode.html b/libstdc++-v3/doc/html/manual/debug_mode.html
index 6afd92e0950..e83c51e742e 100644
--- a/libstdc++-v3/doc/html/manual/debug_mode.html
+++ b/libstdc++-v3/doc/html/manual/debug_mode.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 30. Debug Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; library&#10; , &#10; debug&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch29.html" title="Chapter 29. Compile Time Checks" /><link rel="next" href="bk01pt12ch30s02.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 30. Debug Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch29.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch30s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode"></a>Chapter 30. Debug Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.intro"></a>Intro</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 30. Debug Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; library&#10; , &#10; debug&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="ext_compile_checks.html" title="Chapter 29. Compile Time Checks" /><link rel="next" href="bk01pt12ch30s02.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 30. Debug Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch30s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode"></a>Chapter 30. Debug Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.intro"></a>Intro</h2></div></div></div><p>
By default, libstdc++ is built with efficiency in mind, and
therefore performs little or no error checking that is not
required by the C++ standard. This means that programs that
@@ -31,4 +34,4 @@
the same predicate that was passed
to <code class="code">set_intersection</code>; the libstdc++ debug mode will
detect an error if the sequence is not sorted or was sorted by a
- different predicate.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch29.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch30s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 29. Compile Time Checks </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Semantics</td></tr></table></div></body></html>
+ different predicate.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch30s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 29. Compile Time Checks </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Semantics</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/diagnostics.html b/libstdc++-v3/doc/html/manual/diagnostics.html
index 239b4e5cc6d..5cb7a6151c9 100644
--- a/libstdc++-v3/doc/html/manual/diagnostics.html
+++ b/libstdc++-v3/doc/html/manual/diagnostics.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III. Diagnostics</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt02ch06s02.html" title="Verbose Terminate Handler" /><link rel="next" href="bk01pt03ch07.html" title="Chapter 7. Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III. Diagnostics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch06s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.diagnostics"></a>Part III. Diagnostics</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt03ch07.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt03ch07.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch06s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Verbose Terminate Handler </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 7. Exceptions</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III.  Diagnostics</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="verbose_termination.html" title="Verbose Terminate Handler" /><link rel="next" href="exceptions.html" title="Chapter 7. Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III. 
+ Diagnostics
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="verbose_termination.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="exceptions.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.diagnostics"></a>Part III. 
+ Diagnostics
+ <a id="id487548" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="verbose_termination.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="exceptions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Verbose Terminate Handler </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 7. Exceptions</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apas04.html b/libstdc++-v3/doc/html/manual/documentation_style.html
index 09a6f978d54..407ea5d76cb 100644
--- a/libstdc++-v3/doc/html/manual/bk01apas04.html
+++ b/libstdc++-v3/doc/html/manual/documentation_style.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Documentation Style</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="bk01apas03.html" title="Coding Style" /><link rel="next" href="bk01apas05.html" title="Design Notes" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Documentation Style</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apas03.html">Prev</a> </td><th width="60%" align="center">Appendix A. Contributing</th><td width="20%" align="right"> <a accesskey="n" href="bk01apas05.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.doc_style"></a>Documentation Style</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="doc_style.doxygen"></a>Doxygen</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"></a>Prerequisites</h4></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Documentation Style</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A.  Contributing" /><link rel="prev" href="source_code_style.html" title="Coding Style" /><link rel="next" href="source_design_notes.html" title="Design Notes" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Documentation Style</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_code_style.html">Prev</a> </td><th width="60%" align="center">Appendix A. 
+ Contributing
+
+</th><td width="20%" align="right"> <a accesskey="n" href="source_design_notes.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.doc_style"></a>Documentation Style</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="doc_style.doxygen"></a>Doxygen</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"></a>Prerequisites</h4></div></div></div><p>
Prerequisite tools are Bash 2.x,
<a class="ulink" href="http://www.doxygen.org/" target="_top">Doxygen</a>, and
the <a class="ulink" href="http://www.gnu.org/software/coreutils/" target="_top">GNU
@@ -35,7 +38,7 @@
</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.markup"></a>Markup</h4></div></div></div><p>
In general, libstdc++ files should be formatted according to
the rules found in the
- <a class="link" href="bk01apas03.html" title="Coding Style">Coding Standard</a>. Before
+ <a class="link" href="source_code_style.html" title="Coding Style">Coding Standard</a>. Before
any doxygen-specific formatting tweaks are made, please try to
make sure that the initial formatting is sound.
</p><p>
@@ -208,11 +211,11 @@ Complete details on Docbook markup can be found in the DocBook Element
Reference, <a class="ulink" href="http://www.docbook.org/tdg/en/html/part2.html" target="_top">online</a>. An
incomplete reference for HTML to Docbook conversion is detailed in the
table below.
-</p><div class="table"><a id="id552441"></a><p class="title"><b>Table A.1. HTML to Docbook XML markup comparison</b></p><div class="table-contents"><table summary="HTML to Docbook XML markup comparison" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">XML</th></tr></thead><tbody><tr><td align="left">&lt;p&gt;</td><td align="left">&lt;para&gt;</td></tr><tr><td align="left">&lt;pre&gt;</td><td align="left">&lt;computeroutput&gt;, &lt;programlisting&gt;,
+</p><div class="table"><a id="id572515"></a><p class="title"><b>Table A.1. HTML to Docbook XML markup comparison</b></p><div class="table-contents"><table summary="HTML to Docbook XML markup comparison" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">XML</th></tr></thead><tbody><tr><td align="left">&lt;p&gt;</td><td align="left">&lt;para&gt;</td></tr><tr><td align="left">&lt;pre&gt;</td><td align="left">&lt;computeroutput&gt;, &lt;programlisting&gt;,
&lt;literallayout&gt;</td></tr><tr><td align="left">&lt;ul&gt;</td><td align="left">&lt;itemizedlist&gt;</td></tr><tr><td align="left">&lt;ol&gt;</td><td align="left">&lt;orderedlist&gt;</td></tr><tr><td align="left">&lt;il&gt;</td><td align="left">&lt;listitem&gt;</td></tr><tr><td align="left">&lt;dl&gt;</td><td align="left">&lt;variablelist&gt;</td></tr><tr><td align="left">&lt;dt&gt;</td><td align="left">&lt;term&gt;</td></tr><tr><td align="left">&lt;dd&gt;</td><td align="left">&lt;listitem&gt;</td></tr><tr><td align="left">&lt;a href=""&gt;</td><td align="left">&lt;ulink url=""&gt;</td></tr><tr><td align="left">&lt;code&gt;</td><td align="left">&lt;literal&gt;, &lt;programlisting&gt;</td></tr><tr><td align="left">&lt;strong&gt;</td><td align="left">&lt;emphasis&gt;</td></tr><tr><td align="left">&lt;em&gt;</td><td align="left">&lt;emphasis&gt;</td></tr><tr><td align="left">"</td><td align="left">&lt;quote&gt;</td></tr></tbody></table></div></div><br class="table-break" /><p>
And examples of detailed markup for which there are no real HTML
equivalents are listed in the table below.
-</p><div class="table"><a id="id554436"></a><p class="title"><b>Table A.2. Docbook XML Element Use</b></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left">&lt;structname&gt;</td><td align="left">&lt;structname&gt;char_traits&lt;/structname&gt;</td></tr><tr><td align="left">&lt;classname&gt;</td><td align="left">&lt;classname&gt;string&lt;/classname&gt;</td></tr><tr><td align="left">&lt;function&gt;</td><td align="left">
+</p><div class="table"><a id="id469742"></a><p class="title"><b>Table A.2. Docbook XML Element Use</b></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left">&lt;structname&gt;</td><td align="left">&lt;structname&gt;char_traits&lt;/structname&gt;</td></tr><tr><td align="left">&lt;classname&gt;</td><td align="left">&lt;classname&gt;string&lt;/classname&gt;</td></tr><tr><td align="left">&lt;function&gt;</td><td align="left">
<p>&lt;function&gt;clear()&lt;/function&gt;</p>
<p>&lt;function&gt;fs.clear()&lt;/function&gt;</p>
</td></tr><tr><td align="left">&lt;type&gt;</td><td align="left">&lt;type&gt;long long&lt;/type&gt;</td></tr><tr><td align="left">&lt;varname&gt;</td><td align="left">&lt;varname&gt;fs&lt;/varname&gt;</td></tr><tr><td align="left">&lt;literal&gt;</td><td align="left">
@@ -224,4 +227,4 @@ table below.
</td></tr><tr><td align="left">&lt;command&gt;</td><td align="left">&lt;command&gt;g++&lt;/command&gt;</td></tr><tr><td align="left">&lt;errortext&gt;</td><td align="left">&lt;errortext&gt;In instantiation of&lt;/errortext&gt;</td></tr><tr><td align="left">&lt;filename&gt;</td><td align="left">
<p>&lt;filename class="headerfile"&gt;ctype.h&lt;/filename&gt;</p>
<p>&lt;filename class="directory"&gt;/home/gcc/build&lt;/filename&gt;</p>
- </td></tr></tbody></table></div></div><br class="table-break" /></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apas03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apas05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Coding Style </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design Notes</td></tr></table></div></body></html>
+ </td></tr></tbody></table></div></div><br class="table-break" /></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="source_code_style.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="source_design_notes.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Coding Style </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design Notes</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch05.html b/libstdc++-v3/doc/html/manual/dynamic_memory.html
index e48894d697f..2a3d1368bd7 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch05.html
+++ b/libstdc++-v3/doc/html/manual/dynamic_memory.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Dynamic Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="bk01pt02ch04s03.html" title="NULL" /><link rel="next" href="bk01pt02ch06.html" title="Chapter 6. Termination" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Dynamic Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch04s03.html">Prev</a> </td><th width="60%" align="center">Part II. Support</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch06.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.memory"></a>Chapter 5. Dynamic Memory</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Dynamic Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II.  Support" /><link rel="prev" href="bk01pt02ch04s03.html" title="NULL" /><link rel="next" href="termination.html" title="Chapter 6. Termination" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Dynamic Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch04s03.html">Prev</a> </td><th width="60%" align="center">Part II. 
+ Support
+
+</th><td width="20%" align="right"> <a accesskey="n" href="termination.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.memory"></a>Chapter 5. Dynamic Memory</h2></div></div></div><p>
There are six flavors each of <code class="function">new</code> and
<code class="function">delete</code>, so make certain that you're using the right
ones. Here are quickie descriptions of <code class="function">new</code>:
@@ -63,4 +66,4 @@
</pre><p>
<code class="classname">bad_alloc</code> is derived from the base <code class="classname">exception</code>
class defined in Chapter 19.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch04s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">NULL </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 6. Termination</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch04s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="termination.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">NULL </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 6. Termination</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch07.html b/libstdc++-v3/doc/html/manual/exceptions.html
index c8d622ce223..9ad183a86da 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt03ch07.html
+++ b/libstdc++-v3/doc/html/manual/exceptions.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 7. Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III. Diagnostics" /><link rel="prev" href="diagnostics.html" title="Part III. Diagnostics" /><link rel="next" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Part III. Diagnostics</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.exceptions"></a>Chapter 7. Exceptions</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt03ch07.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.hierarchy"></a>Exception Classes</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 7. Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III.  Diagnostics" /><link rel="prev" href="diagnostics.html" title="Part III.  Diagnostics" /><link rel="next" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Part III. 
+ Diagnostics
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.exceptions"></a>Chapter 7. Exceptions</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.hierarchy"></a>Exception Classes</h2></div></div></div><p>
All exception objects are defined in one of the standard header
files: <code class="filename">exception</code>,
<code class="filename">stdexcept</code>, <code class="filename">new</code>, and
@@ -13,4 +16,7 @@
Derived from this are several classes that may have a
<code class="classname">string</code> member: a full hierarchy can be
found in the <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00233.html" target="_top">source documentation</a>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part III. Diagnostics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Adding Data to Exceptions</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part III. 
+ Diagnostics
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Adding Data to Exceptions</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch35.html b/libstdc++-v3/doc/html/manual/ext_algorithms.html
index 2db6be689c5..0a23ad9b7b4 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch35.html
+++ b/libstdc++-v3/doc/html/manual/ext_algorithms.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 35. Algorithms</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch34.html" title="Chapter 34. Utilities" /><link rel="next" href="bk01pt12ch36.html" title="Chapter 36. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 35. Algorithms</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch34.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch36.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.algorithms"></a>Chapter 35. Algorithms</h2></div></div></div><p>25.1.6 (count, count_if) is extended with two more versions of count
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 35. Algorithms</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="ext_utilities.html" title="Chapter 34. Utilities" /><link rel="next" href="ext_numerics.html" title="Chapter 36. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 35. Algorithms</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.algorithms"></a>Chapter 35. Algorithms</h2></div></div></div><p>25.1.6 (count, count_if) is extended with two more versions of count
and count_if. The standard versions return their results. The
additional signatures return void, but take a final parameter by
reference to which they assign their results, e.g.,
@@ -17,4 +20,4 @@
</p><pre class="programlisting">
lexicographical_compare_3way(_InputIter1 first1, _InputIter1 last1,
_InputIter2 first2, _InputIter2 last2)</pre><p>which does... what?
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch34.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch36.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 34. Utilities </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 36. Numerics</td></tr></table></div></body></html>
+</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_numerics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 34. Utilities </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 36. Numerics</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32.html b/libstdc++-v3/doc/html/manual/ext_allocators.html
index ddc6e707931..a9daf795928 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch32.html
+++ b/libstdc++-v3/doc/html/manual/ext_allocators.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 32. Allocators</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch31s05.html" title="Testing" /><link rel="next" href="bitmap_allocator.html" title="bitmap_allocator" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 32. Allocators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator"></a>Chapter 32. Allocators</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt12ch32.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.allocator.mt"></a>mt_allocator</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 32. Allocators</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="bk01pt12ch31s05.html" title="Testing" /><link rel="next" href="bitmap_allocator.html" title="bitmap_allocator" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 32. Allocators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator"></a>Chapter 32. Allocators</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.allocator.mt"></a>mt_allocator</h2></div></div></div><p>
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.intro"></a>Intro</h3></div></div></div><p>
The mt allocator [hereinafter referred to simply as "the allocator"]
is a fixed size (power of two) allocator that was initially
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch29.html b/libstdc++-v3/doc/html/manual/ext_compile_checks.html
index 6766b33537e..132c8b61994 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch29.html
+++ b/libstdc++-v3/doc/html/manual/ext_compile_checks.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 29. Compile Time Checks</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12pr03.html" title="" /><link rel="next" href="debug_mode.html" title="Chapter 30. Debug Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 29. Compile Time Checks</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12pr03.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.compile_checks"></a>Chapter 29. Compile Time Checks</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 29. Compile Time Checks</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="bk01pt12pr03.html" title="" /><link rel="next" href="debug_mode.html" title="Chapter 30. Debug Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 29. Compile Time Checks</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12pr03.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.compile_checks"></a>Chapter 29. Compile Time Checks</h2></div></div></div><p>
Also known as concept checking.
</p><p>In 1999, SGI added <span class="emphasis"><em>concept checkers</em></span> to their implementation
of the STL: code which checked the template parameters of
diff --git a/libstdc++-v3/doc/html/manual/concurrency.html b/libstdc++-v3/doc/html/manual/ext_concurrency.html
index b201c763932..dc986ee9c4e 100644
--- a/libstdc++-v3/doc/html/manual/concurrency.html
+++ b/libstdc++-v3/doc/html/manual/ext_concurrency.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 40. Concurrency</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch39.html" title="Chapter 39. Demangling" /><link rel="next" href="bk01pt12ch40s02.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 40. Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch39.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch40s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency"></a>Chapter 40. Concurrency</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s03.html">Use</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.design"></a>Design</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.threads"></a>Interface to Locks and Mutexes</h3></div></div></div><p>The file &lt;ext/concurrence.h&gt; contains all the higher-level
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 40. Concurrency</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="ext_demangling.html" title="Chapter 39. Demangling" /><link rel="next" href="bk01pt12ch40s02.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 40. Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch40s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency"></a>Chapter 40. Concurrency</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s03.html">Use</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.design"></a>Design</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.threads"></a>Interface to Locks and Mutexes</h3></div></div></div><p>The file &lt;ext/concurrence.h&gt; contains all the higher-level
constructs for playing with threads. In contrast to the atomics layer,
the concurrence layer consists largely of types. All types are defined within <code class="code">namespace __gnu_cxx</code>.
</p><p>
@@ -85,4 +88,4 @@ _GLIBCXX_WRITE_MEM_BARRIER
</p><p>
Which expand to the appropriate write and read barrier required by the
host hardware and operating system.
-</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch39.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch40s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 39. Demangling </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Implementation</td></tr></table></div></body></html>
+</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch40s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 39. Demangling </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Implementation</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch33.html b/libstdc++-v3/doc/html/manual/ext_containers.html
index d2fb6a77f85..48abd5ab4f8 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch33.html
+++ b/libstdc++-v3/doc/html/manual/ext_containers.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 33. Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bitmap_allocator.html" title="bitmap_allocator" /><link rel="next" href="bk01pt12ch33s02.html" title="HP/SGI" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 33. Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch33s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers"></a>Chapter 33. Containers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt12ch33.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s03.html">Deprecated HP/SGI</a></span></dt></dl></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 33. Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="bitmap_allocator.html" title="bitmap_allocator" /><link rel="next" href="bk01pt12ch33s02.html" title="HP/SGI" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 33. Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch33s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers"></a>Chapter 33. Containers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s03.html">Deprecated HP/SGI</a></span></dt></dl></div><p>
</p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.pbds"></a>Policy Based Data Structures</h2></div></div></div><p>
<a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html" target="_top">More details here</a>.
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch33s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitmap_allocator </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> HP/SGI</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch39.html b/libstdc++-v3/doc/html/manual/ext_demangling.html
index 82a673f19ab..28fbd814ce2 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch39.html
+++ b/libstdc++-v3/doc/html/manual/ext_demangling.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 39. Demangling</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch38.html" title="Chapter 38. Input and Output" /><link rel="next" href="concurrency.html" title="Chapter 40. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 39. Demangling</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch38.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.demangle"></a>Chapter 39. Demangling</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 39. Demangling</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="ext_io.html" title="Chapter 38. Input and Output" /><link rel="next" href="ext_concurrency.html" title="Chapter 40. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 39. Demangling</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_concurrency.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.demangle"></a>Chapter 39. Demangling</h2></div></div></div><p>
Transforming C++ ABI identifiers (like RTTI symbols) into the
original C++ source identifiers is called
“<span class="quote">demangling.</span>”
@@ -68,4 +71,4 @@ int main()
be writing C++ in order to demangle C++. (That also means we have to
use crummy memory management facilities, so don't forget to free()
the returned char array.)
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch38.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 38. Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 40. Concurrency</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_concurrency.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 38. Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 40. Concurrency</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch38.html b/libstdc++-v3/doc/html/manual/ext_io.html
index 84c110d3ad5..f79e3275d7b 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch38.html
+++ b/libstdc++-v3/doc/html/manual/ext_io.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 38. Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch37.html" title="Chapter 37. Iterators" /><link rel="next" href="bk01pt12ch39.html" title="Chapter 39. Demangling" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 38. Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch37.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch39.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.io"></a>Chapter 38. Input and Output</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt12ch38.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 38. Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="ext_iterators.html" title="Chapter 37. Iterators" /><link rel="next" href="ext_demangling.html" title="Chapter 39. Demangling" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 38. Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.io"></a>Chapter 38. Input and Output</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></div><p>
Extensions allowing <code class="code">filebuf</code>s to be constructed from
"C" types like FILE*s and file descriptors.
</p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.io.filebuf_derived"></a>Derived filebufs</h2></div></div></div><p>The v2 library included non-standard extensions to construct
@@ -45,4 +48,4 @@
<a class="ulink" href="http://suter.home.cern.ch/suter/RWLock.html" target="_top">RWLock</a>
class.
</p><p>
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch37.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch39.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 37. Iterators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 39. Demangling</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 37. Iterators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 39. Demangling</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch37.html b/libstdc++-v3/doc/html/manual/ext_iterators.html
index ea5e1fa7e79..130907ecbdf 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch37.html
+++ b/libstdc++-v3/doc/html/manual/ext_iterators.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 37. Iterators</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch36.html" title="Chapter 36. Numerics" /><link rel="next" href="bk01pt12ch38.html" title="Chapter 38. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 37. Iterators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch36.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch38.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.iterators"></a>Chapter 37. Iterators</h2></div></div></div><p>24.3.2 describes <code class="code">struct iterator</code>, which didn't exist in the
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 37. Iterators</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="ext_numerics.html" title="Chapter 36. Numerics" /><link rel="next" href="ext_io.html" title="Chapter 38. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 37. Iterators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_io.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.iterators"></a>Chapter 37. Iterators</h2></div></div></div><p>24.3.2 describes <code class="code">struct iterator</code>, which didn't exist in the
original HP STL implementation (the language wasn't rich enough at the
time). For backwards compatibility, base classes are provided which
declare the same nested typedefs:
@@ -8,4 +11,4 @@
two iterators and returns a result. It is extended by another signature
which takes two iterators and a reference to a result. The result is
modified, and the function returns nothing.
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch36.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch38.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 36. Numerics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 38. Input and Output</td></tr></table></div></body></html>
+</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_io.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 36. Numerics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 38. Input and Output</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch36.html b/libstdc++-v3/doc/html/manual/ext_numerics.html
index 3f120ae6022..437658d623d 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch36.html
+++ b/libstdc++-v3/doc/html/manual/ext_numerics.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 36. Numerics</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch35.html" title="Chapter 35. Algorithms" /><link rel="next" href="bk01pt12ch37.html" title="Chapter 37. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 36. Numerics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch35.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch37.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.numerics"></a>Chapter 36. Numerics</h2></div></div></div><p>26.4, the generalized numeric operations such as accumulate, are extended
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 36. Numerics</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="ext_algorithms.html" title="Chapter 35. Algorithms" /><link rel="next" href="ext_iterators.html" title="Chapter 37. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 36. Numerics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_iterators.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.numerics"></a>Chapter 36. Numerics</h2></div></div></div><p>26.4, the generalized numeric operations such as accumulate, are extended
with the following functions:
</p><pre class="programlisting">
power (x, n);
@@ -14,4 +17,4 @@
That is, it assigns value to *first, value + 1 to *(first + 1) and so
on." Quoted from SGI documentation.
</p><pre class="programlisting">
- void iota(_ForwardIter first, _ForwardIter last, _Tp value);</pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch35.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch37.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 35. Algorithms </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 37. Iterators</td></tr></table></div></body></html>
+ void iota(_ForwardIter first, _ForwardIter last, _Tp value);</pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 35. Algorithms </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 37. Iterators</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch34.html b/libstdc++-v3/doc/html/manual/ext_utilities.html
index 505d11f34a1..e5e50d97212 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch34.html
+++ b/libstdc++-v3/doc/html/manual/ext_utilities.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 34. Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch33s03.html" title="Deprecated HP/SGI" /><link rel="next" href="bk01pt12ch35.html" title="Chapter 35. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 34. Utilities</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch33s03.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch35.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.util"></a>Chapter 34. Utilities</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 34. Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="bk01pt12ch33s03.html" title="Deprecated HP/SGI" /><link rel="next" href="ext_algorithms.html" title="Chapter 35. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 34. Utilities</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch33s03.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_algorithms.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.util"></a>Chapter 34. Utilities</h2></div></div></div><p>
The &lt;functional&gt; header contains many additional functors
and helper functions, extending section 20.3. They are
implemented in the file stl_function.h:
@@ -35,4 +38,4 @@ get_temporary_buffer(5, (int*)0);
</p><p>
The specialized algorithms of section 20.4.4 are extended with
<code class="code">uninitialized_copy_n</code>. *
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch33s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch35.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Deprecated HP/SGI </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 35. Algorithms</td></tr></table></div></body></html>
+</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch33s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_algorithms.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Deprecated HP/SGI </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 35. Algorithms</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html
index 18820c37f82..36462a84002 100644
--- a/libstdc++-v3/doc/html/manual/extensions.html
+++ b/libstdc++-v3/doc/html/manual/extensions.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part XII. Extensions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt11ch28s02.html" title="Performance" /><link rel="next" href="bk01pt12pr03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part XII. Extensions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch28s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12pr03.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"></a>Part XII. Extensions</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt12ch29.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt12ch32.html">32. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt12ch32.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt12ch33.html">33. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt12ch33.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt12ch34.html">34. Utilities</a></span></dt><dt><span class="chapter"><a href="bk01pt12ch35.html">35. Algorithms</a></span></dt><dt><span class="chapter"><a href="bk01pt12ch36.html">36. Numerics</a></span></dt><dt><span class="chapter"><a href="bk01pt12ch37.html">37. Iterators</a></span></dt><dt><span class="chapter"><a href="bk01pt12ch38.html">38. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt12ch38.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt12ch39.html">39. Demangling</a></span></dt><dt><span class="chapter"><a href="concurrency.html">40. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s03.html">Use</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch28s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12pr03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Performance </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part XII.  Extensions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt11ch28s02.html" title="Performance" /><link rel="next" href="bk01pt12pr03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part XII. 
+ Extensions
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch28s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12pr03.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"></a>Part XII. 
+ Extensions
+ <a id="id532909" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_allocators.html">32. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ext_containers.html">33. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_utilities.html">34. Utilities</a></span></dt><dt><span class="chapter"><a href="ext_algorithms.html">35. Algorithms</a></span></dt><dt><span class="chapter"><a href="ext_numerics.html">36. Numerics</a></span></dt><dt><span class="chapter"><a href="ext_iterators.html">37. Iterators</a></span></dt><dt><span class="chapter"><a href="ext_io.html">38. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_demangling.html">39. Demangling</a></span></dt><dt><span class="chapter"><a href="ext_concurrency.html">40. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s03.html">Use</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch28s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12pr03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Performance </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt06ch15.html b/libstdc++-v3/doc/html/manual/facets.html
index fdb34a45aa8..e4e4d0879f3 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt06ch15.html
+++ b/libstdc++-v3/doc/html/manual/facets.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 15. Facets aka Categories</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Part VI. Localization" /><link rel="prev" href="bk01pt06ch14.html" title="Chapter 14. Locales" /><link rel="next" href="codecvt.html" title="codecvt" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. Facets aka Categories</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt06ch14.html">Prev</a> </td><th width="60%" align="center">Part VI. Localization</th><td width="20%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.facet"></a>Chapter 15. Facets aka Categories</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt06ch15.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt06ch15.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch15.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.ctype"></a>ctype</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id461922"></a>Specializations</h4></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 15. Facets aka Categories</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Part VI.  Localization" /><link rel="prev" href="locales.html" title="Chapter 14. Locales" /><link rel="next" href="codecvt.html" title="codecvt" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. Facets aka Categories</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="locales.html">Prev</a> </td><th width="60%" align="center">Part VI. 
+ Localization
+
+</th><td width="20%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.facet"></a>Chapter 15. Facets aka Categories</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.ctype"></a>ctype</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id548984"></a>Specializations</h4></div></div></div><p>
For the required specialization codecvt&lt;wchar_t, char, mbstate_t&gt; ,
conversions are made between the internal character set (always UCS4
on GNU/Linux) and whatever the currently selected locale for the
@@ -47,28 +50,28 @@ characters.
</p></li><li><p>
Rename abstract base class. See if just smash-overriding is a
better approach. Clarify, add sanity to naming.
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id477855"></a><p><span class="title"><i>
+ </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id494777"></a><p><span class="title"><i>
The GNU C Library
- </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id462336"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id504846"></a><p><span class="title"><i>
Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id516995"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id501352"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id517013"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id501370"></a><p><span class="title"><i>
ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id535750"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id480120"></a><p><span class="title"><i>
System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
</i>. </span><span class="copyright">Copyright © 1999
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
<a class="ulink" href="http://www.opennc.org/austin/docreg.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id535776"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id480148"></a><p><span class="title"><i>
The C++ Programming Language, Special Edition
</i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id477745"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id472803"></a><p><span class="title"><i>
Standard C++ IOStreams and Locales
</i>. </span><span class="subtitle">
Advanced Programmer's Guide and Reference
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
Addison Wesley Longman
- . </span></span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt06ch14.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="localization.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 14. Locales </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> codecvt</td></tr></table></div></body></html>
+ . </span></span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="locales.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="localization.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 14. Locales </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> codecvt</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch27.html b/libstdc++-v3/doc/html/manual/fstreams.html
index ac7cf9e2feb..aaa0c88f961 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch27.html
+++ b/libstdc++-v3/doc/html/manual/fstreams.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 27. File Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch26.html" title="Chapter 26. Memory Based Streams" /><link rel="next" href="bk01pt11ch27s02.html" title="Binary Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 27. File Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch26.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch27s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.filestreams"></a>Chapter 27. File Based Streams</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt11ch27.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s03.html">More Binary Input and Output</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.filestreams.copying_a_file"></a>Copying a File</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 27. File Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI.  Input and Output" /><link rel="prev" href="stringstreams.html" title="Chapter 26. Memory Based Streams" /><link rel="next" href="bk01pt11ch27s02.html" title="Binary Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 27. File Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><th width="60%" align="center">Part XI. 
+ Input and Output
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch27s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.filestreams"></a>Chapter 27. File Based Streams</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="fstreams.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s03.html">More Binary Input and Output</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.filestreams.copying_a_file"></a>Copying a File</h2></div></div></div><p>
</p><p>So you want to copy a file quickly and easily, and most important,
completely portably. And since this is C++, you have an open
ifstream (call it IN) and an open ofstream (call it OUT):
@@ -46,4 +49,4 @@
The operators shown above are all defined in the parent
basic_ostream class and are therefore available with all possible
descendants.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch26.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch27s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 26. Memory Based Streams </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Binary Input and Output</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch27s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 26. Memory Based Streams </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Binary Input and Output</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt04ch09.html b/libstdc++-v3/doc/html/manual/functors.html
index 9182ef7ae8f..7eed8c4b3ba 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt04ch09.html
+++ b/libstdc++-v3/doc/html/manual/functors.html
@@ -1,9 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 9. Functors</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="utilities.html" title="Part IV. Utilities" /><link rel="next" href="bk01pt04ch10.html" title="Chapter 10. Pairs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. Functors</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><th width="60%" align="center">Part IV. Utilities</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt04ch10.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.functors"></a>Chapter 9. Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 9. Functors</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV.  Utilities" /><link rel="prev" href="utilities.html" title="Part IV.  Utilities" /><link rel="next" href="pairs.html" title="Chapter 10. Pairs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. Functors</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><th width="60%" align="center">Part IV. 
+ Utilities
+
+</th><td width="20%" align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.functors"></a>Chapter 9. Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people
get slightly the wrong idea. In the interest of not reinventing
the wheel, we will refer you to the introduction to the functor
concept written by SGI as part of their STL, in
<a class="ulink" href="http://www.sgi.com/tech/stl/functors.html" target="_top">their
http://www.sgi.com/tech/stl/functors.html</a>.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt04ch10.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part IV. Utilities </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. Pairs</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part IV. 
+ Utilities
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. Pairs</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch04.html b/libstdc++-v3/doc/html/manual/fundamental_types.html
index fd3c1ecc41b..e1afd2eb31f 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch04.html
+++ b/libstdc++-v3/doc/html/manual/fundamental_types.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Types</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="bk01pt02pr01.html" title="" /><link rel="next" href="bk01pt02ch04s02.html" title="Numeric Properties" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Types</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02pr01.html">Prev</a> </td><th width="60%" align="center">Part II. Support</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch04s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.types"></a>Chapter 4. Types</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt02ch04.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.fundamental"></a>Fundamental Types</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Types</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II.  Support" /><link rel="prev" href="bk01pt02pr01.html" title="" /><link rel="next" href="bk01pt02ch04s02.html" title="Numeric Properties" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Types</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02pr01.html">Prev</a> </td><th width="60%" align="center">Part II. 
+ Support
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch04s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.types"></a>Chapter 4. Types</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.fundamental"></a>Fundamental Types</h2></div></div></div><p>
C++ has the following builtin types:
</p><div class="itemizedlist"><ul type="disc"><li><p>
char
diff --git a/libstdc++-v3/doc/html/manual/bk01pt10ch22.html b/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
index a278eccd573..d925b093d54 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt10ch22.html
+++ b/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 22. Generalized Operations</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X. Numerics" /><link rel="prev" href="bk01pt10ch21.html" title="Chapter 21. Complex" /><link rel="next" href="bk01pt10ch23.html" title="Chapter 23. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. Generalized Operations</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt10ch21.html">Prev</a> </td><th width="60%" align="center">Part X. Numerics</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt10ch23.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.generalized_ops"></a>Chapter 22. Generalized Operations</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 22. Generalized Operations</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X.  Numerics" /><link rel="prev" href="complex.html" title="Chapter 21. Complex" /><link rel="next" href="numerics_and_c.html" title="Chapter 23. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. Generalized Operations</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="complex.html">Prev</a> </td><th width="60%" align="center">Part X. 
+ Numerics
+
+</th><td width="20%" align="right"> <a accesskey="n" href="numerics_and_c.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.generalized_ops"></a>Chapter 22. Generalized Operations</h2></div></div></div><p>
</p><p>There are four generalized functions in the &lt;numeric&gt; header
that follow the same conventions as those in &lt;algorithm&gt;. Each
of them is overloaded: one signature for common default operations,
@@ -23,4 +26,4 @@
and multiplies all the members of the array; here we must obviously
use 1 as a starting value instead of 0.
</p><p>The other three functions have similar dual-signature forms.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt10ch21.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt10ch23.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 21. Complex </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 23. Interacting with C</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="complex.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="numerics_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 21. Complex </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 23. Interacting with C</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/internals.html b/libstdc++-v3/doc/html/manual/internals.html
index 5c1a0a4e3c3..61defdc8414 100644
--- a/libstdc++-v3/doc/html/manual/internals.html
+++ b/libstdc++-v3/doc/html/manual/internals.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Porting to New Hardware or Operating Systems</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; internals&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="next" href="abi.html" title="ABI Policy and Guidelines" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Porting to New Hardware or Operating Systems</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><th width="60%" align="center">Appendix B. Porting and Maintenance</th><td width="20%" align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.internals"></a>Porting to New Hardware or Operating Systems</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Porting to New Hardware or Operating Systems</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; internals&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="prev" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /><link rel="next" href="abi.html" title="ABI Policy and Guidelines" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Porting to New Hardware or Operating Systems</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><th width="60%" align="center">Appendix B. 
+ Porting and Maintenance
+
+</th><td width="20%" align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.internals"></a>Porting to New Hardware or Operating Systems</h2></div></div></div><p>
</p><p>This document explains how to port libstdc++ (the GNU C++ library) to
a new target.
</p><p>In order to make the GNU C++ library (libstdc++) work with a new
@@ -365,4 +368,7 @@ do this is to build the library using <code class="code">gcc -shared</code>.
<code class="code">ltcf-c.sh</code> in the top-level directory. Find the switch statement
that sets <code class="code">archive_cmds</code>. Here, adjust the setting for your
operating system.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix B. Porting and Maintenance </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> ABI Policy and Guidelines</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix B. 
+ Porting and Maintenance
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> ABI Policy and Guidelines</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/intro.html b/libstdc++-v3/doc/html/manual/intro.html
index bce04744fed..1de90b4f553 100644
--- a/libstdc++-v3/doc/html/manual/intro.html
+++ b/libstdc++-v3/doc/html/manual/intro.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part I. Introduction</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="spine.html" title="The GNU C++ Library" /><link rel="next" href="bk01pt01ch01.html" title="Chapter 1. Status" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part I. Introduction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="spine.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch01.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"></a>Part I. Introduction</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt01ch01.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt01ch01.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.1998">C++ 1998</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s02.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s03.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt01ch02.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt01ch02.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch02s03.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch03s02.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch03s03.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s03.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s03.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s03.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch03s04.html">Macros</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch03s05.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch03s06.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s06.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s06.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s06.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="spine.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part I.  Introduction</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="spine.html" title="The GNU C++ Library" /><link rel="next" href="status.html" title="Chapter 1. Status" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part I. 
+ Introduction
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="spine.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"></a>Part I. 
+ Introduction
+ <a id="id569734" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#manual.intro.status.standard.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="spine.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/io.html b/libstdc++-v3/doc/html/manual/io.html
index 93d7f1696e6..57df0346210 100644
--- a/libstdc++-v3/doc/html/manual/io.html
+++ b/libstdc++-v3/doc/html/manual/io.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part XI. Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt10ch23s02.html" title="C99" /><link rel="next" href="bk01pt11ch24.html" title="Chapter 24. Iostream Objects" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part XI. Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt10ch23s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch24.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.io"></a>Part XI. Input and Output</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt11ch24.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="bk01pt11ch25.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt11ch25.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt11ch26.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt11ch26.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt11ch27.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt11ch27.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s03.html">More Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt11ch28.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt11ch28.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt10ch23s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch24.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">C99 </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 24. Iostream Objects</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part XI.  Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt10ch23s02.html" title="C99" /><link rel="next" href="iostream_objects.html" title="Chapter 24. Iostream Objects" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part XI. 
+ Input and Output
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt10ch23s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="iostream_objects.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.io"></a>Part XI. 
+ Input and Output
+ <a id="id540661" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="iostream_objects.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="streambufs.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="stringstreams.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="stringstreams.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="fstreams.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="fstreams.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s03.html">More Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="io_and_c.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="io_and_c.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt10ch23s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iostream_objects.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">C99 </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 24. Iostream Objects</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch28.html b/libstdc++-v3/doc/html/manual/io_and_c.html
index 8745a398e4e..7e7798e9fe5 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch28.html
+++ b/libstdc++-v3/doc/html/manual/io_and_c.html
@@ -1,7 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 28. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch27s03.html" title="More Binary Input and Output" /><link rel="next" href="bk01pt11ch28s02.html" title="Performance" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 28. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch27s03.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch28s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.c"></a>Chapter 28. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt11ch28.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.c.FILE"></a>Using FILE* and file descriptors</h2></div></div></div><p>
- See the <a class="link" href="bk01pt12ch38.html" title="Chapter 38. Input and Output">extensions</a> for using
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 28. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI.  Input and Output" /><link rel="prev" href="bk01pt11ch27s03.html" title="More Binary Input and Output" /><link rel="next" href="bk01pt11ch28s02.html" title="Performance" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 28. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch27s03.html">Prev</a> </td><th width="60%" align="center">Part XI. 
+ Input and Output
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch28s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.c"></a>Chapter 28. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="io_and_c.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.c.FILE"></a>Using FILE* and file descriptors</h2></div></div></div><p>
+ See the <a class="link" href="ext_io.html" title="Chapter 38. Input and Output">extensions</a> for using
<span class="type">FILE</span> and <span class="type">file descriptors</span> with
<code class="classname">ofstream</code> and
<code class="classname">ifstream</code>.
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch24.html b/libstdc++-v3/doc/html/manual/iostream_objects.html
index 1c8976e1dc1..5b6de7060c6 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch24.html
+++ b/libstdc++-v3/doc/html/manual/iostream_objects.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 24. Iostream Objects</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="io.html" title="Part XI. Input and Output" /><link rel="next" href="bk01pt11ch25.html" title="Chapter 25. Stream Buffers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 24. Iostream Objects</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch25.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.objects"></a>Chapter 24. Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 24. Iostream Objects</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI.  Input and Output" /><link rel="prev" href="io.html" title="Part XI.  Input and Output" /><link rel="next" href="streambufs.html" title="Chapter 25. Stream Buffers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 24. Iostream Objects</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><th width="60%" align="center">Part XI. 
+ Input and Output
+
+</th><td width="20%" align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.objects"></a>Chapter 24. Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to
only include the headers you really need. Many people simply include
&lt;iostream&gt; when they don't need to -- and that can <span class="emphasis"><em>penalize
your runtime as well.</em></span> Here are some tips on which header to use
@@ -110,4 +113,7 @@
the standard objects in that source file; you'll pay less startup
time. Only include the header files you need to in general; your
compile times will go down when there's less parsing work to do.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch25.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part XI. Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 25. Stream Buffers</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part XI. 
+ Input and Output
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 25. Stream Buffers</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/iterators.html b/libstdc++-v3/doc/html/manual/iterators.html
index ebcaa5118ae..fdf781145a8 100644
--- a/libstdc++-v3/doc/html/manual/iterators.html
+++ b/libstdc++-v3/doc/html/manual/iterators.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part VIII. Iterators</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt07ch17s02.html" title="bitset" /><link rel="next" href="bk01pt08ch19.html" title="Chapter 19. Predefined" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part VIII. Iterators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt07ch17s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt08ch19.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.iterators"></a>Part VIII. Iterators</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt07ch17s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt08ch19.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitset </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 19. Predefined</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part VIII.  Iterators</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bitset.html" title="bitset" /><link rel="next" href="bk01pt08ch19.html" title="Chapter 19. Predefined" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part VIII. 
+ Iterators
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt08ch19.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.iterators"></a>Part VIII. 
+ Iterators
+ <a id="id547017" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt08ch19.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitset </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 19. Predefined</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/license.html b/libstdc++-v3/doc/html/manual/license.html
new file mode 100644
index 00000000000..2e318f1ec5b
--- /dev/null
+++ b/libstdc++-v3/doc/html/manual/license.html
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>License</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="status.html" title="Chapter 1. Status" /><link rel="prev" href="status.html" title="Chapter 1. Status" /><link rel="next" href="bugs.html" title="Bugs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="status.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="bugs.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.license"></a>License</h2></div></div></div><p>
+ There are two licenses affecting GNU libstdc++: one for the code,
+ and one for the documentation.
+ </p><p>
+ There is a license section in the FAQ regarding common <a class="link" href="../faq.html#faq.license" title="License">questions</a>. If you have more
+ questions, ask the FSF or the <a class="ulink" href="http://gcc.gnu.org/lists.html" target="_top">gcc mailing list</a>.
+ </p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.license.gpl"></a>The Code: GPL</h3></div></div></div><p>
+ The source code is distributed under the <a class="link" href="appendix_gpl.html" title="Appendix D.  GNU General Public License version 3">GNU General Public License version 3</a>,
+ with the addition under section 7 of an exception described in
+ the “<span class="quote">GCC Runtime Library Exception, version 3.1</span>”
+ as follows (or see the file COPYING.RUNTIME):
+ </p><div class="literallayout"><p><br />
+GCC RUNTIME LIBRARY EXCEPTION<br />
+<br />
+Version 3.1, 31 March 2009<br />
+<br />
+Copyright (C) 2009 <a class="ulink" href="http://fsf.org" target="_top">Free Software Foundation, Inc.</a><br />
+<br />
+Everyone is permitted to copy and distribute verbatim copies of this<br />
+license document, but changing it is not allowed.<br />
+<br />
+This GCC Runtime Library Exception ("Exception") is an additional<br />
+permission under section 7 of the GNU General Public License, version<br />
+3 ("GPLv3"). It applies to a given file (the "Runtime Library") that<br />
+bears a notice placed by the copyright holder of the file stating that<br />
+the file is governed by GPLv3 along with this Exception.<br />
+<br />
+When you use GCC to compile a program, GCC may combine portions of<br />
+certain GCC header files and runtime libraries with the compiled<br />
+program. The purpose of this Exception is to allow compilation of<br />
+non-GPL (including proprietary) programs to use, in this way, the<br />
+header files and runtime libraries covered by this Exception.<br />
+<br />
+0. Definitions.<br />
+<br />
+A file is an "Independent Module" if it either requires the Runtime<br />
+Library for execution after a Compilation Process, or makes use of an<br />
+interface provided by the Runtime Library, but is not otherwise based<br />
+on the Runtime Library.<br />
+<br />
+"GCC" means a version of the GNU Compiler Collection, with or without<br />
+modifications, governed by version 3 (or a specified later version) of<br />
+the GNU General Public License (GPL) with the option of using any<br />
+subsequent versions published by the FSF.<br />
+<br />
+"GPL-compatible Software" is software whose conditions of propagation,<br />
+modification and use would permit combination with GCC in accord with<br />
+the license of GCC.<br />
+<br />
+"Target Code" refers to output from any compiler for a real or virtual<br />
+target processor architecture, in executable form or suitable for<br />
+input to an assembler, loader, linker and/or execution<br />
+phase. Notwithstanding that, Target Code does not include data in any<br />
+format that is used as a compiler intermediate representation, or used<br />
+for producing a compiler intermediate representation.<br />
+<br />
+The "Compilation Process" transforms code entirely represented in<br />
+non-intermediate languages designed for human-written code, and/or in<br />
+Java Virtual Machine byte code, into Target Code. Thus, for example,<br />
+use of source code generators and preprocessors need not be considered<br />
+part of the Compilation Process, since the Compilation Process can be<br />
+understood as starting with the output of the generators or<br />
+preprocessors.<br />
+<br />
+A Compilation Process is "Eligible" if it is done using GCC, alone or<br />
+with other GPL-compatible software, or if it is done without using any<br />
+work based on GCC. For example, using non-GPL-compatible Software to<br />
+optimize any GCC intermediate representations would not qualify as an<br />
+Eligible Compilation Process.<br />
+<br />
+1. Grant of Additional Permission.<br />
+<br />
+You have permission to propagate a work of Target Code formed by<br />
+combining the Runtime Library with Independent Modules, even if such<br />
+propagation would otherwise violate the terms of GPLv3, provided that<br />
+all Target Code was generated by Eligible Compilation Processes. You<br />
+may then convey such a combination under terms of your choice,<br />
+consistent with the licensing of the Independent Modules.<br />
+<br />
+2. No Weakening of GCC Copyleft.<br />
+<br />
+The availability of this Exception does not imply any general<br />
+presumption that third-party software is unaffected by the copyleft<br />
+requirements of the license of GCC.<br />
+    </p></div><p>
+ Hopefully that text is self-explanatory. If it isn't, you need to speak
+ to your lawyer, or the Free Software Foundation.
+ </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.license.fdl"></a>The Documentation: GPL, FDL</h3></div></div></div><p>
+ The documentation shipped with the library and made available over
+ the web, excluding the pages generated from source comments, are
+ copyrighted by the Free Software Foundation, and placed under the
+ <a class="link" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License"> GNU Free Documentation
+ License version 1.2</a>. There are no Front-Cover Texts, no
+ Back-Cover Texts, and no Invariant Sections.
+ </p><p>
+ For documentation generated by doxygen or other automated tools
+ via processing source code comments and markup, the original source
+ code license applies to the generated files. Thus, the doxygen
+ documents are licensed <a class="link" href="appendix_gpl.html" title="Appendix D.  GNU General Public License version 3">GPL</a>.
+ </p><p>
+ If you plan on making copies of the documentation, please let us know.
+ We can probably offer suggestions.
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="status.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="status.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bugs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 1. Status </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Bugs</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt06ch14.html b/libstdc++-v3/doc/html/manual/locales.html
index c9886822aa8..9d6979602ab 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt06ch14.html
+++ b/libstdc++-v3/doc/html/manual/locales.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 14. Locales</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Part VI. Localization" /><link rel="prev" href="localization.html" title="Part VI. Localization" /><link rel="next" href="bk01pt06ch15.html" title="Chapter 15. Facets aka Categories" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14. Locales</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Part VI. Localization</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt06ch15.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.locales"></a>Chapter 14. Locales</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt06ch14.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.locales.locale"></a>locale</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 14. Locales</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Part VI.  Localization" /><link rel="prev" href="localization.html" title="Part VI.  Localization" /><link rel="next" href="facets.html" title="Chapter 15. Facets aka Categories" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14. Locales</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Part VI. 
+ Localization
+
+</th><td width="20%" align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.locales"></a>Chapter 14. Locales</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="locales.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.locales.locale"></a>locale</h2></div></div></div><p>
Describes the basic locale object, including nested
classes id, facet, and the reference-counted implementation object,
class _Impl.
@@ -395,28 +398,31 @@ global locale" (emphasis Paolo), that is:
What should non-required facet instantiations do? If the
generic implementation is provided, then how to end-users
provide specializations?
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id459942"></a><p><span class="title"><i>
+ </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id493610"></a><p><span class="title"><i>
The GNU C Library
- </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id551010"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id531395"></a><p><span class="title"><i>
Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id551039"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id496876"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id474312"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id496895"></a><p><span class="title"><i>
ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id474331"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id478071"></a><p><span class="title"><i>
System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
</i>. </span><span class="copyright">Copyright © 1999
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
<a class="ulink" href="http://www.opennc.org/austin/docreg.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id516648"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id478098"></a><p><span class="title"><i>
The C++ Programming Language, Special Edition
</i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id481148"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id495163"></a><p><span class="title"><i>
Standard C++ IOStreams and Locales
</i>. </span><span class="subtitle">
Advanced Programmer's Guide and Reference
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
Addison Wesley Longman
- . </span></span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="localization.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt06ch15.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VI. Localization </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 15. Facets aka Categories</td></tr></table></div></body></html>
+ . </span></span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="localization.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VI. 
+ Localization
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 15. Facets aka Categories</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/localization.html b/libstdc++-v3/doc/html/manual/localization.html
index 0deb7a3de62..61b17a63a6b 100644
--- a/libstdc++-v3/doc/html/manual/localization.html
+++ b/libstdc++-v3/doc/html/manual/localization.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part VI. Localization</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt05ch13s06.html" title="CString (MFC)" /><link rel="next" href="bk01pt06ch14.html" title="Chapter 14. Locales" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part VI. Localization</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s06.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt06ch14.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.localization"></a>Part VI. Localization</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt06ch14.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt06ch14.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt06ch15.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt06ch15.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt06ch15.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch15.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt06ch14.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">CString (MFC) </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 14. Locales</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part VI.  Localization</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt05ch13s06.html" title="CString (MFC)" /><link rel="next" href="locales.html" title="Chapter 14. Locales" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part VI. 
+ Localization
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s06.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="locales.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.localization"></a>Part VI. 
+ Localization
+ <a id="id489694" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="locales.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="locales.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="facets.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="locales.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">CString (MFC) </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 14. Locales</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/make.html b/libstdc++-v3/doc/html/manual/make.html
new file mode 100644
index 00000000000..410992d285d
--- /dev/null
+++ b/libstdc++-v3/doc/html/manual/make.html
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Make</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="configure.html" title="Configure" /><link rel="next" href="test.html" title="Test" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.make"></a>Make</h2></div></div></div><p>If you have never done this before, you should read the basic
+ <a class="ulink" href="http://gcc.gnu.org/install/" target="_top">GCC Installation
+ Instructions</a> first. Read <span class="emphasis"><em>all of them</em></span>.
+ <span class="emphasis"><em>Twice.</em></span>
+ </p><p>Then type:<span class="command"><strong>make</strong></span>, and congratulations, you're
+started to build.
+</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Configure </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Test</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt04ch11.html b/libstdc++-v3/doc/html/manual/memory.html
index 24d4a7f2ab0..13a888213c8 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt04ch11.html
+++ b/libstdc++-v3/doc/html/manual/memory.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 11. Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="bk01pt04ch10.html" title="Chapter 10. Pairs" /><link rel="next" href="auto_ptr.html" title="auto_ptr" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt04ch10.html">Prev</a> </td><th width="60%" align="center">Part IV. Utilities</th><td width="20%" align="right"> <a accesskey="n" href="auto_ptr.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.memory"></a>Chapter 11. Memory</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt04ch11.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 11. Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV.  Utilities" /><link rel="prev" href="pairs.html" title="Chapter 10. Pairs" /><link rel="next" href="auto_ptr.html" title="auto_ptr" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><th width="60%" align="center">Part IV. 
+ Utilities
+
+</th><td width="20%" align="right"> <a accesskey="n" href="auto_ptr.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.memory"></a>Chapter 11. Memory</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></div><p>
Memory contains three general areas. First, function and operator
calls via <code class="function">new</code> and <code class="function">delete</code>
operator or member function calls. Second, allocation via
@@ -90,7 +93,7 @@
or loading and unloading shared objects in memory. As such, using
caching allocators on systems that do not support
<code class="function">abi::__cxa_atexit</code> is not recommended.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id495307"></a>Interface Design</h4></div></div></div><p>
+ </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id481148"></a>Interface Design</h4></div></div></div><p>
The only allocator interface that
is support is the standard C++ interface. As such, all STL
containers have been adjusted, and all external allocators have
@@ -103,7 +106,7 @@
</p><p>
The base class that <code class="classname">allocator</code> is derived from
may not be user-configurable.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id462480"></a>Selecting Default Allocation Policy</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id488777"></a>Selecting Default Allocation Policy</h4></div></div></div><p>
It's difficult to pick an allocation strategy that will provide
maximum utility, without excessively penalizing some behavior. In
fact, it's difficult just deciding which typical actions to measure
@@ -140,7 +143,7 @@
The current default choice for
<code class="classname">allocator</code> is
<code class="classname">__gnu_cxx::new_allocator</code>.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id531789"></a>Disabling Memory Caching</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id440698"></a>Disabling Memory Caching</h4></div></div></div><p>
In use, <code class="classname">allocator</code> may allocate and
deallocate using implementation-specified strategies and
heuristics. Because of this, every call to an allocator object's
@@ -298,18 +301,18 @@
</p><p>
A high-performance fixed-size allocator with
exponentially-increasing allocations. It has its own
- documentation, found <a class="link" href="bk01pt12ch32.html#manual.ext.allocator.mt" title="mt_allocator">here</a>.
+ documentation, found <a class="link" href="ext_allocators.html#manual.ext.allocator.mt" title="mt_allocator">here</a>.
</p></li><li><p>
<code class="classname">bitmap_allocator</code>
</p><p>
A high-performance allocator that uses a bit-map to keep track
of the used and unused memory locations. It has its own
documentation, found <a class="link" href="bitmap_allocator.html" title="bitmap_allocator">here</a>.
- </p></li></ol></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id505299"></a><p><span class="title"><i>
+ </p></li></ol></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id490436"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
</i>. </span>
isoc++_1998
- <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id465950"></a><p><span class="title"><i>The Standard Librarian: What Are Allocators Good
+ <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id477557"></a><p><span class="title"><i>The Standard Librarian: What Are Allocators Good
</i>. </span>
austernm
<span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
@@ -317,30 +320,30 @@
. </span></span><span class="biblioid">
<a class="ulink" href="http://www.cuj.com/documents/s=8000/cujcexp1812austern/" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id515746"></a><p><span class="title"><i>The Hoard Memory Allocator</i>. </span>
+ . </span></p></div><div class="biblioentry"><a id="id500544"></a><p><span class="title"><i>The Hoard Memory Allocator</i>. </span>
emeryb
<span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="biblioid">
<a class="ulink" href="http://www.cs.umass.edu/~emery/hoard/" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id507784"></a><p><span class="title"><i>Reconsidering Custom Memory Allocation</i>. </span>
+ . </span></p></div><div class="biblioentry"><a id="id479308"></a><p><span class="title"><i>Reconsidering Custom Memory Allocation</i>. </span>
bergerzorn
<span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="author"><span class="firstname">Ben</span> <span class="surname">Zorn</span>. </span><span class="author"><span class="firstname">Kathryn</span> <span class="surname">McKinley</span>. </span><span class="copyright">Copyright © 2002 OOPSLA. </span><span class="biblioid">
<a class="ulink" href="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id467782"></a><p><span class="title"><i>Allocator Types</i>. </span>
+ . </span></p></div><div class="biblioentry"><a id="id504530"></a><p><span class="title"><i>Allocator Types</i>. </span>
kreftlanger
<span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="publisher"><span class="publishername">
C/C++ Users Journal
. </span></span><span class="biblioid">
<a class="ulink" href="http://www.langer.camelot.de/Articles/C++Report/Allocators/Allocators.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id470766"></a><p><span class="title"><i>The C++ Programming Language</i>. </span>
+ . </span></p></div><div class="biblioentry"><a id="id489520"></a><p><span class="title"><i>The C++ Programming Language</i>. </span>
tcpl
<span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 . </span><span class="pagenums">19.4 Allocators. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id468765"></a><p><span class="title"><i>Yalloc: A Recycling C++ Allocator</i>. </span>
+ . </span></span></p></div><div class="biblioentry"><a id="id488498"></a><p><span class="title"><i>Yalloc: A Recycling C++ Allocator</i>. </span>
yenf
<span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span><span class="copyright">Copyright © . </span><span class="biblioid">
<a class="ulink" href="http://home.earthlink.net/~brimar/yalloc/" target="_top">
</a>
- . </span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt04ch10.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="auto_ptr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 10. Pairs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> auto_ptr</td></tr></table></div></body></html>
+ . </span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="auto_ptr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 10. Pairs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> auto_ptr</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/messages.html b/libstdc++-v3/doc/html/manual/messages.html
index a4058b39eff..e86db465e2c 100644
--- a/libstdc++-v3/doc/html/manual/messages.html
+++ b/libstdc++-v3/doc/html/manual/messages.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>messages</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; messages&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt06ch15.html" title="Chapter 15. Facets aka Categories" /><link rel="prev" href="codecvt.html" title="codecvt" /><link rel="next" href="containers.html" title="Part VII. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">messages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="codecvt.html">Prev</a> </td><th width="60%" align="center">Chapter 15. Facets aka Categories</th><td width="20%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.messages"></a>messages</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>messages</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; messages&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="facets.html" title="Chapter 15. Facets aka Categories" /><link rel="prev" href="codecvt.html" title="codecvt" /><link rel="next" href="containers.html" title="Part VII.  Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">messages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="codecvt.html">Prev</a> </td><th width="60%" align="center">Chapter 15. Facets aka Categories</th><td width="20%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.messages"></a>messages</h2></div></div></div><p>
The std::messages facet implements message retrieval functionality
equivalent to Java's java.text.MessageFormat .using either GNU gettext
or IEEE 1003.1-200 functions.
@@ -241,41 +241,44 @@ void test01()
model. As of this writing, it is unknown how to query to see
if a specified message catalog exists using the gettext
package.
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id536216"></a><p><span class="title"><i>
+ </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id488090"></a><p><span class="title"><i>
The GNU C Library
</i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling, and 7 Locales and Internationalization
- . </span></p></div><div class="biblioentry"><a id="id509764"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id498088"></a><p><span class="title"><i>
Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id561619"></a><p><span class="title"><i>
+ </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id481034"></a><p><span class="title"><i>
ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id561638"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id481053"></a><p><span class="title"><i>
ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id446198"></a><p><span class="title"><i>
+ </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id481071"></a><p><span class="title"><i>
System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
</i>. </span><span class="copyright">Copyright © 1999
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
<a class="ulink" href="http://www.opennc.org/austin/docreg.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id446226"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id498300"></a><p><span class="title"><i>
The C++ Programming Language, Special Edition
</i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id505472"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id548706"></a><p><span class="title"><i>
Standard C++ IOStreams and Locales
</i>. </span><span class="subtitle">
Advanced Programmer's Guide and Reference
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
Addison Wesley Longman
- . </span></span></p></div><div class="biblioentry"><a id="id452552"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id476770"></a><p><span class="title"><i>
Java 2 Platform, Standard Edition, v 1.3.1 API Specification
</i>. </span><span class="pagenums">java.util.Properties, java.text.MessageFormat,
java.util.Locale, java.util.ResourceBundle. </span><span class="biblioid">
<a class="ulink" href="http://java.sun.com/j2se/1.3/docs/api" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id531697"></a><p><span class="title"><i>
+ . </span></p></div><div class="biblioentry"><a id="id476791"></a><p><span class="title"><i>
GNU gettext tools, version 0.10.38, Native Language Support
Library and Tools.
</i>. </span><span class="biblioid">
<a class="ulink" href="http://sources.redhat.com/gettext" target="_top">
</a>
- . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="codecvt.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt06ch15.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">codecvt </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VII. Containers</td></tr></table></div></body></html>
+ . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="codecvt.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="facets.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">codecvt </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VII. 
+ Containers
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/numerics.html b/libstdc++-v3/doc/html/manual/numerics.html
index bc505c0f7bb..461931e9745 100644
--- a/libstdc++-v3/doc/html/manual/numerics.html
+++ b/libstdc++-v3/doc/html/manual/numerics.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part X. Numerics</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt09ch20.html" title="Chapter 20. Mutating" /><link rel="next" href="bk01pt10ch21.html" title="Chapter 21. Complex" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part X. Numerics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt09ch20.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt10ch21.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.numerics"></a>Part X. Numerics</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt10ch21.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt10ch21.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt10ch22.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="bk01pt10ch23.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt10ch23.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt09ch20.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt10ch21.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 20. Mutating </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 21. Complex</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part X.  Numerics</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt09ch20.html" title="Chapter 20. Mutating" /><link rel="next" href="complex.html" title="Chapter 21. Complex" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part X. 
+ Numerics
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt09ch20.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="complex.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.numerics"></a>Part X. 
+ Numerics
+ <a id="id502291" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="complex.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="complex.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="generalized_numeric_operations.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="numerics_and_c.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt09ch20.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="complex.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 20. Mutating </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 21. Complex</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/numerics_and_c.html b/libstdc++-v3/doc/html/manual/numerics_and_c.html
new file mode 100644
index 00000000000..3788ad31357
--- /dev/null
+++ b/libstdc++-v3/doc/html/manual/numerics_and_c.html
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 23. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X.  Numerics" /><link rel="prev" href="generalized_numeric_operations.html" title="Chapter 22. Generalized Operations" /><link rel="next" href="bk01pt10ch23s02.html" title="C99" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 23. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><th width="60%" align="center">Part X. 
+ Numerics
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt10ch23s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.c"></a>Chapter 23. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.c.array"></a>Numerics vs. Arrays</h2></div></div></div><p>One of the major reasons why FORTRAN can chew through numbers so well
+ is that it is defined to be free of pointer aliasing, an assumption
+ that C89 is not allowed to make, and neither is C++98. C99 adds a new
+ keyword, <code class="code">restrict</code>, to apply to individual pointers. The
+ C++ solution is contained in the library rather than the language
+ (although many vendors can be expected to add this to their compilers
+ as an extension).
+ </p><p>That library solution is a set of two classes, five template classes,
+ and "a whole bunch" of functions. The classes are required
+ to be free of pointer aliasing, so compilers can optimize the
+ daylights out of them the same way that they have been for FORTRAN.
+ They are collectively called <code class="code">valarray</code>, although strictly
+ speaking this is only one of the five template classes, and they are
+ designed to be familiar to people who have worked with the BLAS
+ libraries before.
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt10ch23s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 22. Generalized Operations </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> C99</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt04ch10.html b/libstdc++-v3/doc/html/manual/pairs.html
index 84177cd3a4c..608344cfb23 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt04ch10.html
+++ b/libstdc++-v3/doc/html/manual/pairs.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 10. Pairs</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="bk01pt04ch09.html" title="Chapter 9. Functors" /><link rel="next" href="bk01pt04ch11.html" title="Chapter 11. Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. Pairs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt04ch09.html">Prev</a> </td><th width="60%" align="center">Part IV. Utilities</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt04ch11.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.pairs"></a>Chapter 10. Pairs</h2></div></div></div><p>The <code class="code">pair&lt;T1,T2&gt;</code> is a simple and handy way to
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 10. Pairs</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV.  Utilities" /><link rel="prev" href="functors.html" title="Chapter 9. Functors" /><link rel="next" href="memory.html" title="Chapter 11. Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. Pairs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="functors.html">Prev</a> </td><th width="60%" align="center">Part IV. 
+ Utilities
+
+</th><td width="20%" align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.pairs"></a>Chapter 10. Pairs</h2></div></div></div><p>The <code class="code">pair&lt;T1,T2&gt;</code> is a simple and handy way to
carry around a pair of objects. One is of type T1, and another of
type T2; they may be the same type, but you don't get anything
extra if they are. The two members can be accessed directly, as
@@ -36,4 +39,4 @@
instance of a pair instantiated on their respective types:
</p><pre class="programlisting">
pair&lt;int,MyClass&gt; p = make_pair(4,myobject);
- </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt04ch09.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt04ch11.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9. Functors </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 11. Memory</td></tr></table></div></body></html>
+ </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="functors.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9. Functors </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 11. Memory</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html
index ea44f99b7aa..221112fdc37 100644
--- a/libstdc++-v3/doc/html/manual/parallel_mode.html
+++ b/libstdc++-v3/doc/html/manual/parallel_mode.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 31. Parallel Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; library&#10; , &#10; parallel&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch30s04.html" title="Design" /><link rel="next" href="bk01pt12ch31s02.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 31. Parallel Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch30s04.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch31s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode"></a>Chapter 31. Parallel Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></div><p> The libstdc++ parallel mode is an experimental parallel
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 31. Parallel Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; C++&#10; , &#10; library&#10; , &#10; parallel&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII.  Extensions" /><link rel="prev" href="bk01pt12ch30s04.html" title="Design" /><link rel="next" href="bk01pt12ch31s02.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 31. Parallel Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch30s04.html">Prev</a> </td><th width="60%" align="center">Part XII. 
+ Extensions
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch31s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode"></a>Chapter 31. Parallel Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></div><p> The libstdc++ parallel mode is an experimental parallel
implementation of many algorithms the C++ Standard Library.
</p><p>
Several of the standard algorithms, for instance
@@ -10,11 +13,11 @@ explicit source declaration or by compiling existing sources with a
specific compiler flag.
</p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.intro"></a>Intro</h2></div></div></div><p>The following library components in the include
<code class="filename">numeric</code> are included in the parallel mode:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="function">std::accumulate</code></p></li><li><p><code class="function">std::adjacent_difference</code></p></li><li><p><code class="function">std::inner_product</code></p></li><li><p><code class="function">std::partial_sum</code></p></li></ul></div><p>The following library components in the include
-<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="function">std::adjacent_find</code></p></li><li><p><code class="function">std::count</code></p></li><li><p><code class="function">std::count_if</code></p></li><li><p><code class="function">std::equal</code></p></li><li><p><code class="function">std::find</code></p></li><li><p><code class="function">std::find_if</code></p></li><li><p><code class="function">std::find_first_of</code></p></li><li><p><code class="function">std::for_each</code></p></li><li><p><code class="function">std::generate</code></p></li><li><p><code class="function">std::generate_n</code></p></li><li><p><code class="function">std::lexicographical_compare</code></p></li><li><p><code class="function">std::mismatch</code></p></li><li><p><code class="function">std::search</code></p></li><li><p><code class="function">std::search_n</code></p></li><li><p><code class="function">std::transform</code></p></li><li><p><code class="function">std::replace</code></p></li><li><p><code class="function">std::replace_if</code></p></li><li><p><code class="function">std::max_element</code></p></li><li><p><code class="function">std::merge</code></p></li><li><p><code class="function">std::min_element</code></p></li><li><p><code class="function">std::nth_element</code></p></li><li><p><code class="function">std::partial_sort</code></p></li><li><p><code class="function">std::partition</code></p></li><li><p><code class="function">std::random_shuffle</code></p></li><li><p><code class="function">std::set_union</code></p></li><li><p><code class="function">std::set_intersection</code></p></li><li><p><code class="function">std::set_symmetric_difference</code></p></li><li><p><code class="function">std::set_difference</code></p></li><li><p><code class="function">std::sort</code></p></li><li><p><code class="function">std::stable_sort</code></p></li><li><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id546923"></a><p><span class="title"><i>
+<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="function">std::adjacent_find</code></p></li><li><p><code class="function">std::count</code></p></li><li><p><code class="function">std::count_if</code></p></li><li><p><code class="function">std::equal</code></p></li><li><p><code class="function">std::find</code></p></li><li><p><code class="function">std::find_if</code></p></li><li><p><code class="function">std::find_first_of</code></p></li><li><p><code class="function">std::for_each</code></p></li><li><p><code class="function">std::generate</code></p></li><li><p><code class="function">std::generate_n</code></p></li><li><p><code class="function">std::lexicographical_compare</code></p></li><li><p><code class="function">std::mismatch</code></p></li><li><p><code class="function">std::search</code></p></li><li><p><code class="function">std::search_n</code></p></li><li><p><code class="function">std::transform</code></p></li><li><p><code class="function">std::replace</code></p></li><li><p><code class="function">std::replace_if</code></p></li><li><p><code class="function">std::max_element</code></p></li><li><p><code class="function">std::merge</code></p></li><li><p><code class="function">std::min_element</code></p></li><li><p><code class="function">std::nth_element</code></p></li><li><p><code class="function">std::partial_sort</code></p></li><li><p><code class="function">std::partition</code></p></li><li><p><code class="function">std::random_shuffle</code></p></li><li><p><code class="function">std::set_union</code></p></li><li><p><code class="function">std::set_intersection</code></p></li><li><p><code class="function">std::set_symmetric_difference</code></p></li><li><p><code class="function">std::set_difference</code></p></li><li><p><code class="function">std::sort</code></p></li><li><p><code class="function">std::stable_sort</code></p></li><li><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id479570"></a><p><span class="title"><i>
Parallelization of Bulk Operations for STL Dictionaries
</i>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Leonor</span> <span class="surname">Frias</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername">
Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS)
- . </span></span></p></div><div class="biblioentry"><a id="id454271"></a><p><span class="title"><i>
+ . </span></span></p></div><div class="biblioentry"><a id="id479616"></a><p><span class="title"><i>
The Multi-Core Standard Template Library
</i>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Peter</span> <span class="surname">Sanders</span>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Putze</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername">
Euro-Par 2007: Parallel Processing. (LNCS 4641)
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch16.html b/libstdc++-v3/doc/html/manual/sequences.html
index 3d1b251973a..00d5255d5dc 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch16.html
+++ b/libstdc++-v3/doc/html/manual/sequences.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 16. Sequences</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII. Containers" /><link rel="prev" href="containers.html" title="Part VII. Containers" /><link rel="next" href="bk01pt07ch16s02.html" title="vector" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Sequences</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><th width="60%" align="center">Part VII. Containers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt07ch16s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.sequences"></a>Chapter 16. Sequences</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt07ch16.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch16.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt07ch16s02.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch16s02.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.sequences.list"></a>list</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sequences.list.size"></a>list::size() is O(n)</h3></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 16. Sequences</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII.  Containers" /><link rel="prev" href="containers.html" title="Part VII.  Containers" /><link rel="next" href="vector.html" title="vector" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Sequences</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><th width="60%" align="center">Part VII. 
+ Containers
+
+</th><td width="20%" align="right"> <a accesskey="n" href="vector.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.sequences"></a>Chapter 16. Sequences</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="sequences.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="sequences.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="vector.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="vector.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.sequences.list"></a>list</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sequences.list.size"></a>list::size() is O(n)</h3></div></div></div><p>
Yes it is, and that's okay. This is a decision that we preserved
when we imported SGI's STL implementation. The following is
quoted from <a class="ulink" href="http://www.sgi.com/tech/stl/FAQ.html" target="_top">their FAQ</a>:
@@ -34,4 +37,7 @@
</p><pre class="programlisting">
if (L.empty())
...
- </pre></blockquote></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt07ch16s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VII. Containers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> vector</td></tr></table></div></body></html>
+ </pre></blockquote></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="vector.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VII. 
+ Containers
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> vector</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch02.html b/libstdc++-v3/doc/html/manual/setup.html
index b6738731ea6..f1e45ae0896 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch02.html
+++ b/libstdc++-v3/doc/html/manual/setup.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 2. Setup</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="bk01pt01ch01s03.html" title="Bugs" /><link rel="next" href="configure.html" title="Configure" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Setup</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch01s03.html">Prev</a> </td><th width="60%" align="center">Part I. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup"></a>Chapter 2. Setup</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt01ch02.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch02s03.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></div><p>To transform libstdc++ sources into installed include files
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 2. Setup</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="bugs.html" title="Bugs" /><link rel="next" href="configure.html" title="Configure" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Setup</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bugs.html">Prev</a> </td><th width="60%" align="center">Part I. 
+ Introduction
+
+</th><td width="20%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup"></a>Chapter 2. Setup</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></div><p>To transform libstdc++ sources into installed include files
and properly built binaries useful for linking to other software is
a multi-step process. Steps include getting the sources,
configuring and building the sources, testing, and installation.
@@ -95,4 +98,4 @@ zh_TW BIG5
</p></li></ul></div></li><li><p>install just the necessary locales</p><div class="itemizedlist"><ul type="circle"><li><p>with Debian Linux:</p><p> Add the above list, as shown, to the file
<code class="code">/etc/locale.gen</code> </p><p> run <code class="code">/usr/sbin/locale-gen</code> </p></li><li><p>on most Unix-like operating systems:</p><p><code class="code"> localedef -i de_DE -f ISO-8859-1 de_DE </code></p><p>(repeat for each entry in the above list) </p></li><li><p>
Instructions for other operating systems solicited.
- </p></li></ul></div></li></ul></div></dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch01s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Bugs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Configure</td></tr></table></div></body></html>
+ </p></li></ul></div></li></ul></div></dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bugs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Bugs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Configure</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/shared_ptr.html b/libstdc++-v3/doc/html/manual/shared_ptr.html
index dd7c28dc523..eb95f4b045f 100644
--- a/libstdc++-v3/doc/html/manual/shared_ptr.html
+++ b/libstdc++-v3/doc/html/manual/shared_ptr.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>shared_ptr</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; shared_ptr&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt04ch11.html" title="Chapter 11. Memory" /><link rel="prev" href="auto_ptr.html" title="auto_ptr" /><link rel="next" href="bk01pt04ch12.html" title="Chapter 12. Traits" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">shared_ptr</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="auto_ptr.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Memory</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt04ch12.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.util.memory.shared_ptr"></a>shared_ptr</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>shared_ptr</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; shared_ptr&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="memory.html" title="Chapter 11. Memory" /><link rel="prev" href="auto_ptr.html" title="auto_ptr" /><link rel="next" href="traits.html" title="Chapter 12. Traits" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">shared_ptr</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="auto_ptr.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Memory</th><td width="20%" align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.util.memory.shared_ptr"></a>shared_ptr</h2></div></div></div><p>
The shared_ptr class template stores a pointer, usually obtained via new,
and implements shared ownership semantics.
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.req"></a>Requirements</h3></div></div></div><p>
@@ -29,7 +29,7 @@ drops to zero.
Derived classes override those functions to destroy resources in a context
where the correct dynamic type is known. This is an application of the
technique known as type erasure.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id512206"></a>Class Hierarchy</h4></div></div></div><p>
+ </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id505413"></a>Class Hierarchy</h4></div></div></div><p>
A <code class="classname">shared_ptr&lt;T&gt;</code> contains a pointer of
type <span class="type">T*</span> and an object of type
<code class="classname">__shared_count</code>. The shared_count contains a
@@ -71,7 +71,7 @@ be forwarded to <span class="type">Tp</span>'s constructor.
Unlike the other <code class="classname">_Sp_counted_*</code> classes, this one is parameterized on the
type of object, not the type of pointer; this is purely a convenience
that simplifies the implementation slightly.
- </p></dd></dl></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id530740"></a>Thread Safety</h4></div></div></div><p>
+ </p></dd></dl></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id484677"></a>Thread Safety</h4></div></div></div><p>
The interface of <code class="classname">tr1::shared_ptr</code> was extended for C++0x
with support for rvalue-references and the other features from
N2351. As with other libstdc++ headers shared by TR1 and C++0x,
@@ -129,7 +129,7 @@ compiler, standard library, platform etc. For the version of
shared_ptr in libstdc++ the compiler and library are fixed, which
makes things much simpler: we have an atomic CAS or we don't, see Lock
Policy below for details.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id455390"></a>Selecting Lock Policy</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id541215"></a>Selecting Lock Policy</h4></div></div></div><p>
</p><p>
There is a single <code class="classname">_Sp_counted_base</code> class,
which is a template parameterized on the enum
@@ -170,7 +170,7 @@ used when libstdc++ is built without <code class="literal">--enable-threads</cod
<code class="filename">ext/atomicity.h</code>, which detect if the program
is multi-threaded. If only one thread of execution exists in
the program then less expensive non-atomic operations are used.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id512523"></a>Dual C++0x and TR1 Implementation</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id574076"></a>Dual C++0x and TR1 Implementation</h4></div></div></div><p>
The classes derived from <code class="classname">_Sp_counted_base</code> (see Class Hierarchy
below) and <code class="classname">__shared_count</code> are implemented separately for C++0x
and TR1, in <code class="filename">bits/boost_sp_shared_count.h</code> and
@@ -181,7 +181,7 @@ The TR1 implementation is considered relatively stable, so is unlikely to
change unless bug fixes require it. If the code that is common to both
C++0x and TR1 modes needs to diverge further then it might be necessary to
duplicate additional classes and only make changes to the C++0x versions.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id480144"></a>Related functions and classes</h4></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>,
+</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id478669"></a>Related functions and classes</h4></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>,
<code class="code">const_pointer_cast</code></span></dt><dd><p>
As noted in N2351, these functions can be implemented non-intrusively using
the alias constructor. However the aliasing constructor is only available
@@ -214,10 +214,10 @@ is called. Users should not try to use this.
As well as the extra constructors, this implementation also needs some
members of _Sp_counted_deleter to be protected where they could otherwise
be private.
- </p></dd></dl></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.using"></a>Use</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id536250"></a>Examples</h4></div></div></div><p>
+ </p></dd></dl></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.using"></a>Use</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id484864"></a>Examples</h4></div></div></div><p>
Examples of use can be found in the testsuite, under
<code class="filename">testsuite/tr1/2_general_utilities/shared_ptr</code>.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id536266"></a>Unresolved Issues</h4></div></div></div><p>
+ </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id532795"></a>Unresolved Issues</h4></div></div></div><p>
The resolution to C++ Standard Library issue <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#674" target="_top">674</a>,
"shared_ptr interface changes for consistency with N1856" will
need to be implemented after it is accepted into the working
@@ -265,7 +265,7 @@ be private.
code to work with, Peter Dimov in particular for his help and
invaluable advice on thread safety. Phillip Jordan and Paolo
Carlini for the lock policy implementation.
- </p></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id458468"></a><p>[<abbr class="abbrev">
+ </p></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id559812"></a><p>[<abbr class="abbrev">
n2351
</abbr>] <span class="title"><i>
Improving shared_ptr for C++0x, Revision 2
@@ -274,7 +274,7 @@ be private.
. </span><span class="biblioid">
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id414390"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id478322"></a><p>[<abbr class="abbrev">
n2456
</abbr>] <span class="title"><i>
C++ Standard Library Active Issues List (Revision R52)
@@ -283,7 +283,7 @@ be private.
. </span><span class="biblioid">
<a class="ulink" href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id513371"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id496435"></a><p>[<abbr class="abbrev">
n2461
</abbr>] <span class="title"><i>
Working Draft, Standard for Programming Language C++
@@ -292,7 +292,7 @@ be private.
. </span><span class="biblioid">
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf" target="_top">
</a>
- . </span></p></div><div class="biblioentry"><a id="id492282"></a><p>[<abbr class="abbrev">
+ . </span></p></div><div class="biblioentry"><a id="id496459"></a><p>[<abbr class="abbrev">
boostshared_ptr
</abbr>] <span class="title"><i>
Boost C++ Libraries documentation - shared_ptr class template
@@ -301,4 +301,4 @@ be private.
. </span><span class="biblioid">
<a class="ulink" href="http://boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">shared_ptr
</a>
- . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="auto_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt04ch11.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt04ch12.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">auto_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 12. Traits</td></tr></table></div></body></html>
+ . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="auto_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="memory.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">auto_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 12. Traits</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apas03.html b/libstdc++-v3/doc/html/manual/source_code_style.html
index 947c9648912..d8737aebb34 100644
--- a/libstdc++-v3/doc/html/manual/bk01apas03.html
+++ b/libstdc++-v3/doc/html/manual/source_code_style.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Coding Style</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="bk01apas02.html" title="Directory Layout and Source Conventions" /><link rel="next" href="bk01apas04.html" title="Documentation Style" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Coding Style</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apas02.html">Prev</a> </td><th width="60%" align="center">Appendix A. Contributing</th><td width="20%" align="right"> <a accesskey="n" href="bk01apas04.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.coding_style"></a>Coding Style</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Coding Style</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A.  Contributing" /><link rel="prev" href="source_organization.html" title="Directory Layout and Source Conventions" /><link rel="next" href="documentation_style.html" title="Documentation Style" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Coding Style</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_organization.html">Prev</a> </td><th width="60%" align="center">Appendix A. 
+ Contributing
+
+</th><td width="20%" align="right"> <a accesskey="n" href="documentation_style.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.coding_style"></a>Coding Style</h2></div></div></div><p>
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="coding_style.bad_identifiers"></a>Bad Identifiers</h3></div></div></div><p>
Identifiers that conflict and should be avoided.
</p><div class="literallayout"><p><br />
@@ -582,4 +585,4 @@
      // doesn't fit in one line.<br />
      }<br />
      } // namespace std<br />
-    </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apas02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apas04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Directory Layout and Source Conventions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Documentation Style</td></tr></table></div></body></html>
+    </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="source_organization.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="documentation_style.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Directory Layout and Source Conventions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Documentation Style</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apas05.html b/libstdc++-v3/doc/html/manual/source_design_notes.html
index 635b39cde7c..0b3be656f75 100644
--- a/libstdc++-v3/doc/html/manual/bk01apas05.html
+++ b/libstdc++-v3/doc/html/manual/source_design_notes.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design Notes</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="bk01apas04.html" title="Documentation Style" /><link rel="next" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design Notes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apas04.html">Prev</a> </td><th width="60%" align="center">Appendix A. Contributing</th><td width="20%" align="right"> <a accesskey="n" href="appendix_porting.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.design_notes"></a>Design Notes</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design Notes</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A.  Contributing" /><link rel="prev" href="documentation_style.html" title="Documentation Style" /><link rel="next" href="appendix_porting.html" title="Appendix B.  Porting and Maintenance" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design Notes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="documentation_style.html">Prev</a> </td><th width="60%" align="center">Appendix A. 
+ Contributing
+
+</th><td width="20%" align="right"> <a accesskey="n" href="appendix_porting.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.design_notes"></a>Design Notes</h2></div></div></div><p>
</p><div class="literallayout"><p><br />
<br />
    The Library<br />
@@ -854,4 +857,7 @@
    subdirectories ext/ and backward/. (Note that it is better to<br />
    include them via "&lt;backward/hash_map.h&gt;" or "&lt;ext/hash_map&gt;" than<br />
    to search the subdirectory itself via a "-I" directive.<br />
-  </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apas04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_porting.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Documentation Style </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix B. Porting and Maintenance</td></tr></table></div></body></html>
+  </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="documentation_style.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_porting.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Documentation Style </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix B. 
+ Porting and Maintenance
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apas02.html b/libstdc++-v3/doc/html/manual/source_organization.html
index 26f6eb72479..54d014fbd0d 100644
--- a/libstdc++-v3/doc/html/manual/bk01apas02.html
+++ b/libstdc++-v3/doc/html/manual/source_organization.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Directory Layout and Source Conventions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="next" href="bk01apas03.html" title="Coding Style" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Directory Layout and Source Conventions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><th width="60%" align="center">Appendix A. Contributing</th><td width="20%" align="right"> <a accesskey="n" href="bk01apas03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.organization"></a>Directory Layout and Source Conventions</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Directory Layout and Source Conventions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A.  Contributing" /><link rel="prev" href="appendix_contributing.html" title="Appendix A.  Contributing" /><link rel="next" href="source_code_style.html" title="Coding Style" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Directory Layout and Source Conventions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><th width="60%" align="center">Appendix A. 
+ Contributing
+
+</th><td width="20%" align="right"> <a accesskey="n" href="source_code_style.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.organization"></a>Directory Layout and Source Conventions</h2></div></div></div><p>
The unpacked source directory of libstdc++ contains the files
needed to create the GNU C++ Library.
</p><div class="literallayout"><p><br />
@@ -88,4 +91,7 @@ directory; or rename bits to (e.g.) cppbits/.<br />
In files throughout the system, lines marked with an "XXX" indicate<br />
a bug or incompletely-implemented feature.  Lines marked "XXX MT"<br />
indicate a place that may require attention for multi-thread safety.<br />
-  </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apas03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix A. Contributing </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Coding Style</td></tr></table></div></body></html>
+  </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="source_code_style.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix A. 
+ Contributing
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Coding Style</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/spine.html b/libstdc++-v3/doc/html/manual/spine.html
index 347acf6691d..66f955eb256 100644
--- a/libstdc++-v3/doc/html/manual/spine.html
+++ b/libstdc++-v3/doc/html/manual/spine.html
@@ -1,7 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="prev" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="next" href="intro.html" title="Part I. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual-index"></a>The GNU C++ Library</h1></div><div><p class="copyright">Copyright © 2008
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="prev" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="next" href="intro.html" title="Part I.  Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual-index"></a>The GNU C++ Library</h1></div><div><p class="copyright">Copyright © 2009
<a class="ulink" href="http://fsf.org" target="_top">FSF</a>
- </p></div><div><div class="legalnotice"><a id="id516338"></a><p>
- <a class="ulink" href="17_intro/license.html" target="_top">License</a>
- </p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="part"><a href="intro.html">I. Introduction</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt01ch01.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt01ch01.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.1998">C++ 1998</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s02.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s03.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt01ch02.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt01ch02.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch02s03.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch03s02.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch03s03.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s03.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s03.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s03.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch03s04.html">Macros</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch03s05.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch03s06.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s06.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s06.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s06.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="support.html">II. Support</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt02ch04.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt02ch04.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt02ch05.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="bk01pt02ch06.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt02ch06.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch06s02.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="diagnostics.html">III. Diagnostics</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt03ch07.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt03ch07.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="utilities.html">IV. Utilities</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt04ch09.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="bk01pt04ch10.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="bk01pt04ch11.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt04ch11.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt04ch12.html">12. Traits</a></span></dt></dl></dd><dt><span class="part"><a href="strings.html">V. Strings</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="localization.html">VI. Localization</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt06ch14.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt06ch14.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt06ch15.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt06ch15.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt06ch15.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch15.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="containers.html">VII. Containers</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt07ch16.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt07ch16.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch16.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt07ch16s02.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch16s02.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt07ch17.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt07ch17.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bk01pt07ch17s02.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch17s02.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bk01pt07ch17s02.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt07ch18.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt07ch18.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="iterators.html">VIII. Iterators</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="algorithms.html">IX. Algorithms</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap">swap</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="numerics.html">X. Numerics</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt10ch21.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt10ch21.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt10ch22.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="bk01pt10ch23.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt10ch23.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="io.html">XI. Input and Output</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt11ch24.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="bk01pt11ch25.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt11ch25.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt11ch26.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt11ch26.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt11ch27.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt11ch27.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s03.html">More Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt11ch28.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt11ch28.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="extensions.html">XII. Extensions</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt12ch29.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt12ch32.html">32. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt12ch32.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt12ch33.html">33. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt12ch33.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt12ch34.html">34. Utilities</a></span></dt><dt><span class="chapter"><a href="bk01pt12ch35.html">35. Algorithms</a></span></dt><dt><span class="chapter"><a href="bk01pt12ch36.html">36. Numerics</a></span></dt><dt><span class="chapter"><a href="bk01pt12ch37.html">37. Iterators</a></span></dt><dt><span class="chapter"><a href="bk01pt12ch38.html">38. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt12ch38.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt12ch39.html">39. Demangling</a></span></dt><dt><span class="chapter"><a href="concurrency.html">40. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s03.html">Use</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_contributing.html">A. Contributing</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01apas02.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="bk01apas03.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01apas03.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="bk01apas03.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01apas04.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01apas04.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="bk01apas04.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01apas05.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="appendix_porting.html">B. Porting and Maintenance</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C. Free Software Needs Free Documentation</a></span></dt><dt><span class="appendix"><a href="bk01apd.html">D. GNU General Public License</a></span></dt><dd><dl><dt><span class="section"><a href="bk01apd.html#gpl-1">Preamble</a></span></dt><dt><span class="section"><a href="bk01apds02.html">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</a></span></dt><dd><dl><dt><span class="section"><a href="bk01apds02.html#gpl-2-0">Section 0</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-1">Section 1</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-2">Section 2</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-3">Section 3</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-4">Section 4</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-5">Section 5</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-6">Section 6</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-7">Section 7</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-8">Section 8</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-9">Section 9</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-10">Section 10</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-11">NO WARRANTY Section 11</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-12">Section 12</a></span></dt></dl></dd><dt><span class="section"><a href="bk01apds03.html">How to Apply These Terms to Your New Programs</a></span></dt></dl></dd><dt><span class="appendix"><a href="bk01ape.html">E. GNU Free Documentation License</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="bk01pt01ch01.html#id549759">C++ TR1 Implementation Status</a></dt><dt>1.2. <a href="bk01pt01ch01.html#id466249">C++ 200x Implementation Status</a></dt><dt>3.1. <a href="bk01pt01ch03s02.html#id516690">C++ 1998 Library Headers</a></dt><dt>3.2. <a href="bk01pt01ch03s02.html#id508989">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.3. <a href="bk01pt01ch03s02.html#id506064">C++ 200x Library Headers</a></dt><dt>3.4. <a href="bk01pt01ch03s02.html#id450972">C++ 200x Library Headers for C Library Facilities</a></dt><dt>3.5. <a href="bk01pt01ch03s02.html#id474709">C++ TR1 Library Headers</a></dt><dt>3.6. <a href="bk01pt01ch03s02.html#id474193">C++ TR1 Library Headers for C Library Facilities</a></dt><dt>3.7. <a href="bk01pt01ch03s02.html#id466545">C++ ABI Headers</a></dt><dt>3.8. <a href="bk01pt01ch03s02.html#id458800">Extension Headers</a></dt><dt>3.9. <a href="bk01pt01ch03s02.html#id471622">Extension Debug Headers</a></dt><dt>3.10. <a href="bk01pt01ch03s02.html#id475105">Extension Parallel Headers</a></dt><dt>30.1. <a href="bk01pt12ch30s03.html#id513827">Debugging Containers</a></dt><dt>30.2. <a href="bk01pt12ch30s03.html#id470143">Debugging Containers C++0x</a></dt><dt>31.1. <a href="bk01pt12ch31s03.html#id466177">Parallel Algorithms</a></dt><dt>32.1. <a href="bitmap_allocator.html#id461252">Bitmap Allocator Memory Map</a></dt><dt>A.1. <a href="bk01apas04.html#id552441">HTML to Docbook XML markup comparison</a></dt><dt>A.2. <a href="bk01apas04.html#id554436">Docbook XML Element Use</a></dt><dt>B.1. <a href="api.html#id549268">Extension Allocators</a></dt><dt>B.2. <a href="api.html#id502386">Extension Allocators Continued</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Documentation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part I. Introduction</td></tr></table></div></body></html>
+ </p></div><div><div class="legalnotice"><a id="id554684"></a><p>
+ <a class="link" href="license.html" title="License">License</a>
+ </p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="part"><a href="intro.html">I.
+ Introduction
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#manual.intro.status.standard.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="support.html">II.
+ Support
+
+</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="fundamental_types.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="dynamic_memory.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="termination.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="diagnostics.html">III.
+ Diagnostics
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="utilities.html">IV.
+ Utilities
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="traits.html">12. Traits</a></span></dt></dl></dd><dt><span class="part"><a href="strings.html">V.
+ Strings
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="localization.html">VI.
+ Localization
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="locales.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="locales.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="facets.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="containers.html">VII.
+ Containers
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="sequences.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="sequences.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="sequences.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="vector.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="vector.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="associative.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bitset.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitset.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bitset.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="containers_and_c.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="iterators.html">VIII.
+ Iterators
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="algorithms.html">IX.
+ Algorithms
+
+</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap">swap</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="numerics.html">X.
+ Numerics
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="complex.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="complex.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="generalized_numeric_operations.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="numerics_and_c.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="io.html">XI.
+ Input and Output
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="iostream_objects.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="streambufs.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="stringstreams.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="stringstreams.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="fstreams.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="fstreams.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s03.html">More Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="io_and_c.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="io_and_c.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="extensions.html">XII.
+ Extensions
+
+</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#manual.ext.debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#manual.ext.parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_allocators.html">32. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ext_containers.html">33. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_utilities.html">34. Utilities</a></span></dt><dt><span class="chapter"><a href="ext_algorithms.html">35. Algorithms</a></span></dt><dt><span class="chapter"><a href="ext_numerics.html">36. Numerics</a></span></dt><dt><span class="chapter"><a href="ext_iterators.html">37. Iterators</a></span></dt><dt><span class="chapter"><a href="ext_io.html">38. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_demangling.html">39. Demangling</a></span></dt><dt><span class="chapter"><a href="ext_concurrency.html">40. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s03.html">Use</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_contributing.html">A.
+ Contributing
+
+</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="appendix_porting.html">B.
+ Porting and Maintenance
+
+</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C.
+ Free Software Needs Free Documentation
+
+</a></span></dt><dt><span class="appendix"><a href="appendix_gpl.html">D.
+ GNU General Public License version 3
+ </a></span></dt><dt><span class="appendix"><a href="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt><dt><span class="index"><a href="bk01ix01.html">Index</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="status.html#id503972">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#id499458">C++ TR1 Implementation Status</a></dt><dt>1.3. <a href="status.html#id476343">C++ 200x Implementation Status</a></dt><dt>3.1. <a href="using_headers.html#id476874">C++ 1998 Library Headers</a></dt><dt>3.2. <a href="using_headers.html#id531673">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.3. <a href="using_headers.html#id498758">C++ 200x Library Headers</a></dt><dt>3.4. <a href="using_headers.html#id491761">C++ 200x Library Headers for C Library Facilities</a></dt><dt>3.5. <a href="using_headers.html#id532708">C++ TR1 Library Headers</a></dt><dt>3.6. <a href="using_headers.html#id490227">C++ TR1 Library Headers for C Library Facilities</a></dt><dt>3.7. <a href="using_headers.html#id544125">C++ ABI Headers</a></dt><dt>3.8. <a href="using_headers.html#id533698">Extension Headers</a></dt><dt>3.9. <a href="using_headers.html#id421264">Extension Debug Headers</a></dt><dt>3.10. <a href="using_headers.html#id510258">Extension Parallel Headers</a></dt><dt>30.1. <a href="bk01pt12ch30s03.html#id538028">Debugging Containers</a></dt><dt>30.2. <a href="bk01pt12ch30s03.html#id506636">Debugging Containers C++0x</a></dt><dt>31.1. <a href="bk01pt12ch31s03.html#id596074">Parallel Algorithms</a></dt><dt>32.1. <a href="bitmap_allocator.html#id501153">Bitmap Allocator Memory Map</a></dt><dt>A.1. <a href="documentation_style.html#id572515">HTML to Docbook XML markup comparison</a></dt><dt>A.2. <a href="documentation_style.html#id469742">Docbook XML Element Use</a></dt><dt>B.1. <a href="api.html#id530186">Extension Allocators</a></dt><dt>B.2. <a href="api.html#id595728">Extension Allocators Continued</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Documentation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part I. 
+ Introduction
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
new file mode 100644
index 00000000000..1593c3ce5e4
--- /dev/null
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="intro.html" title="Part I.  Introduction" /><link rel="next" href="license.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. 
+ Introduction
+
+</th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#manual.intro.status.standard.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.standard"></a>Implementation Status</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.1998"></a>C++ 1998/2003</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="standard.1998.status"></a>Implementation Status</h4></div></div></div><p>
+This status table is based on the table of contents of ISO/IEC 14882:2003.
+</p><p>
+This page describes the C++0x support in mainline GCC SVN, not in any
+particular release.
+</p><div class="table"><a id="id503972"></a><p class="title"><b>Table 1.1. C++ 1998/2003 Implementation Status</b></p><div class="table-contents"><table summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
+ <span class="emphasis"><em>18</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Language support</em></span>
+ </td></tr><tr><td align="left">18.1</td><td align="left">Types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.2</td><td align="left">Implementation properties</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.2.1</td><td align="left">Numeric Limits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.2.1.1</td><td align="left">Class template <code class="code">numeric_limits</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.2.1.2</td><td align="left"><code class="code">numeric_limits</code> members</td><td align="left">Y</td><td class="auto-generated"> </td></tr><tr><td align="left">18.2.1.3</td><td align="left"><code class="code">float_round_style</code></td><td align="left">Y</td><td class="auto-generated"> </td></tr><tr><td align="left">18.2.1.4</td><td align="left"><code class="code">float_denorm_style</code></td><td align="left">Y</td><td class="auto-generated"> </td></tr><tr><td align="left">18.2.1.5</td><td align="left"><code class="code">numeric_limits</code> specializations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.2.2</td><td align="left">C Library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.3</td><td align="left">Start and termination</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.4</td><td align="left">Dynamic memory management</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.5</td><td align="left">Type identification</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.5.1</td><td align="left">Class type_info</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.5.2</td><td align="left">Class bad_cast</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.5.3</td><td align="left">Class bad_typeid</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.6</td><td align="left">Exception handling</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.6.1</td><td align="left">Class exception</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.6.2</td><td align="left">Violation exception-specifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.6.3</td><td align="left">Abnormal termination</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.6.4</td><td align="left"><code class="code">uncaught_exception</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.7</td><td align="left">Other runtime support</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>19</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Diagnostics</em></span>
+ </td></tr><tr><td align="left">19.1</td><td align="left">Exception classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.2</td><td align="left">Assertions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.3</td><td align="left">Error numbers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>20</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>General utilities</em></span>
+ </td></tr><tr><td align="left">20.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.2</td><td align="left">Utility components</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.2.1</td><td align="left">Operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.2.2</td><td align="left"><code class="code">pair</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1</td><td align="left">Base</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.2</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.3</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.4</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.5</td><td align="left">Negators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.6</td><td align="left">Binders</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.7</td><td align="left">Adaptors for pointers to functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.8</td><td align="left">Adaptors for pointers to members</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4</td><td align="left">Memory</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.1</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2</td><td align="left">Raw storage iterator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.3</td><td align="left">Temporary buffers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.4</td><td align="left">Specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.4.1</td><td align="left"><code class="code">uninitialized_copy</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.4.2</td><td align="left"><code class="code">uninitialized_fill</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.4.3</td><td align="left"><code class="code">uninitialized_fill_n</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.5</td><td align="left">Class template <code class="code">auto_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.6</td><td align="left">C library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>21</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Strings</em></span>
+ </td></tr><tr><td align="left">21.1</td><td align="left">Character traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">21.1.1</td><td align="left">Character traits requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.1.2</td><td align="left">traits typedef</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.1.3</td><td align="left"><code class="code">char_traits</code> specializations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">21.1.3.1</td><td align="left">struct <code class="code">char_traits&lt;char&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.1.3.2</td><td align="left">struct <code class="code">char_traits&lt;wchar_t&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2</td><td align="left">String classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.3</td><td align="left">Class template <code class="code">basic_string</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.4</td><td align="left">Null-terminated sequence utilities</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">
+ <span class="emphasis"><em>22</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Localization</em></span>
+ </td></tr><tr><td align="left">22.1</td><td align="left">Locales</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.1.1</td><td align="left">Class <code class="code">locale</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.1.2</td><td align="left"><code class="code">locale</code> globals</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.1.3</td><td align="left">Convenience interfaces</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.1.3.1</td><td align="left">Character classification</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.1.3.2</td><td align="left">Character conversions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2</td><td align="left">Standard locale categories</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.2.1</td><td align="left"><code class="code">ctype</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.2</td><td align="left">Numeric</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.2.2.1</td><td align="left"><code class="code">num_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.2.2</td><td align="left"><code class="code">num_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.3</td><td align="left"><code class="code">num_punct</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.4</td><td align="left"><code class="code">collate</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.5</td><td align="left">Time</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.2.5.1</td><td align="left"><code class="code">time_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.5.2</td><td align="left"><code class="code">time_get_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.5.3</td><td align="left"><code class="code">time_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.5.3</td><td align="left"><code class="code">time_put_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.6</td><td align="left">Monetary</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.2.6.1</td><td align="left"><code class="code">money_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.6.2</td><td align="left"><code class="code">money_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.6.3</td><td align="left"><code class="code">money_punct</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.6.4</td><td align="left"><code class="code">money_punct_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.7</td><td align="left"><code class="code">messages</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2.8</td><td align="left">Program-defined facets</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3</td><td align="left">C Library Locales</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>23</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Containers</em></span>
+ </td></tr><tr><td align="left">23.1</td><td align="left">Container requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2</td><td align="left">Sequence containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1</td><td align="left">Class template <code class="code">deque</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.2</td><td align="left">Class template <code class="code">list</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.3</td><td align="left">Adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.3.1</td><td align="left">Class template <code class="code">queue</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.3.2</td><td align="left">Class template <code class="code">priority_queue</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.3.3</td><td align="left">Class template <code class="code">stack</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.4</td><td align="left">Class template <code class="code">vector</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.5</td><td align="left">Class <code class="code">vector&lt;bool&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3</td><td align="left">Associative containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.3.1</td><td align="left">Class template <code class="code">map</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.2</td><td align="left">Class template <code class="code">multimap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.3</td><td align="left">Class template <code class="code">set</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.4</td><td align="left">Class template <code class="code">multiset</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>24</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Iterators</em></span>
+ </td></tr><tr><td align="left">24.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.2</td><td align="left">Header <code class="code">&lt;iterator&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.3</td><td align="left">Iterator primitives</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.4</td><td align="left">Predefined iterators and Iterator adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.4.1</td><td align="left">Reverse iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.4.2</td><td align="left">Insert iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5</td><td align="left">Stream iterators</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.5.1</td><td align="left">Class template <code class="code">istream_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5.2</td><td align="left">Class template <code class="code">ostream_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5.3</td><td align="left">Class template <code class="code">istreambuf_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5.4</td><td align="left">Class template <code class="code">ostreambuf_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>25</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Algorithms</em></span>
+ </td></tr><tr><td align="left">25.1</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.2</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.3</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.4</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>26</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Numerics</em></span>
+ </td></tr><tr><td align="left">26.1</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.2</td><td align="left">Complex numbers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3</td><td align="left">Numeric arrays</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.3.1</td><td align="left">Header <code class="code">&lt;valarray&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3.2</td><td align="left">Class template <code class="code">valarray</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3.3</td><td align="left"><code class="code">valarray</code> non-member operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3.4</td><td align="left">Class <code class="code">slice</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3.5</td><td align="left">Class template <code class="code">slice_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3.6</td><td align="left">Class <code class="code">gslice</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3.7</td><td align="left">Class template <code class="code">gslice_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3.8</td><td align="left">Class template <code class="code">mask_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3.9</td><td align="left">Class template <code class="code">indirect_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.4</td><td align="left">Generalized numeric operations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.1</td><td align="left"><code class="code">accumulate</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.4.2</td><td align="left"><code class="code">inner_product</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.4.3</td><td align="left"><code class="code">partial_sum</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.4.4</td><td align="left"><code class="code">adjacent_difference</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.4.5</td><td align="left">iota</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5</td><td align="left">C Library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>27</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Input/output</em></span>
+ </td></tr><tr><td align="left">27.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.3</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.3.1</td><td align="left">Narrow stream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.3.2</td><td align="left">Wide stream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4</td><td align="left">Iostreams base classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.5</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.6</td><td align="left">Formatting and manipulators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.7</td><td align="left">String-based streams</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.8</td><td align="left">File-based streams</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>Appendix D</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Compatibility features</em></span>
+ </td></tr><tr><td align="left">D.1</td><td align="left">Increment operator with bool operand</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.2</td><td align="left"><code class="code">static</code> keyword</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.3</td><td align="left">Access declarations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.4</td><td align="left">Implicit conversion from const strings</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.5</td><td align="left">C standard library headers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.6</td><td align="left">Old iostreams members</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.7</td><td align="left">char* streams</td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="standard.1998.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>
+ The ISO standard defines the following phrase:
+ </p><div class="blockquote"><blockquote class="blockquote"><div class="variablelist"><dl><dt><span class="term">
+ <code class="code">[1.3.5] implementation-defined behavior</code>
+ </span></dt><dd><p>
+ Behavior, for a well-formed program construct and correct data, that
+ depends on the implementation <span class="emphasis"><em>and that each implementation
+ shall document</em></span>.
+ </p></dd></dl></div></blockquote></div><p>
+ We do so here, for the C++ library only. Behavior of the
+ compiler, linker, runtime loader, and other elements of "the
+ implementation" are documented elsewhere. Everything listed
+ in Annex B, Implementation Qualities, are also part of the
+ compiler, not the library.
+ </p><p>
+ For each entry, we give the section number of the standard, when
+ applicable. This list is probably incomplet and inkorrekt.
+ </p><p>
+ <span class="emphasis"><em>[1.9]/11 #3</em></span> If <code class="code">isatty(3)</code> is true, then
+ interactive stream support is implied.
+ </p><p>
+ <span class="emphasis"><em>[17.4.4.5]</em></span> Non-reentrant functions are probably best
+ discussed in the various sections on multithreading (see above).
+ </p><p><span class="emphasis"><em>[18.1]/4</em></span> The type of <code class="code">NULL</code> is described
+ <a class="ulink" href="../18_support/howto.html#1" target="_top">here</a>.
+ </p><p><span class="emphasis"><em>[18.3]/8</em></span> Even though it's listed in the library
+ sections, libstdc++ has zero control over what the cleanup code hands
+ back to the runtime loader. Talk to the compiler people. :-)
+ </p><p><span class="emphasis"><em>[18.4.2.1]/5</em></span> (bad_alloc),
+ <span class="emphasis"><em>[18.5.2]/5</em></span> (bad_cast),
+ <span class="emphasis"><em>[18.5.3]/5</em></span> (bad_typeid),
+ <span class="emphasis"><em>[18.6.1]/8</em></span> (exception),
+ <span class="emphasis"><em>[18.6.2.1]/5</em></span> (bad_exception): The <code class="code">what()</code>
+ member function of class <code class="code">std::exception</code>, and these other
+ classes publicly derived from it, simply returns the name of the
+ class. But they are the <span class="emphasis"><em>mangled</em></span> names; you will need to call
+ <code class="code">c++filt</code> and pass the names as command-line parameters to
+ demangle them, or call a
+ <a class="ulink" href="../18_support/howto.html#5" target="_top">runtime demangler function</a>.
+ (The classes in <code class="code">&lt;stdexcept&gt;</code> have constructors which
+ require an argument to use later for <code class="code">what()</code> calls, so the
+ problem of <code class="code">what()</code>'s value does not arise in most
+ user-defined exceptions.)
+ </p><p><span class="emphasis"><em>[18.5.1]/7</em></span> The return value of
+ <code class="code">std::type_info::name()</code> is the mangled type name (see the
+ previous entry for more).
+ </p><p><span class="emphasis"><em>[20.1.5]/5</em></span> <span class="emphasis"><em>"Implementors are encouraged to
+ supply libraries that can accept allocators that encapsulate more
+ general memory models and that support non-equal instances. In such
+ implementations, any requirements imposed on allocators by containers
+ beyond those requirements that appear in Table 32, and the semantics
+ of containers and algorithms when allocator instances compare
+ non-equal, are implementation-defined."</em></span> As yet we don't
+ have any allocators which compare non-equal, so we can't describe how
+ they behave.
+ </p><p><span class="emphasis"><em>[21.1.3.1]/3,4</em></span>,
+ <span class="emphasis"><em>[21.1.3.2]/2</em></span>,
+ <span class="emphasis"><em>[23.*]'s foo::iterator</em></span>,
+ <span class="emphasis"><em>[27.*]'s foo::*_type</em></span>,
+ <span class="emphasis"><em>others...</em></span>
+ Nope, these types are called implementation-defined because you
+ shouldn't be taking advantage of their underlying types. Listing them
+ here would defeat the purpose. :-)
+ </p><p><span class="emphasis"><em>[21.1.3.1]/5</em></span> I don't really know about the mbstate_t
+ stuff... see the <a class="ulink" href="../22_locale/howto.html" target="_top">chapter 22 notes</a>
+ for what does exist.
+ </p><p><span class="emphasis"><em>[22.*]</em></span> Anything and everything we have on locale
+ implementation will be described
+ <a class="ulink" href="../22_locale/howto.html" target="_top">over here</a>.
+ </p><p><span class="emphasis"><em>[26.2.8]/9</em></span> I have no idea what
+ <code class="code">complex&lt;T&gt;</code>'s pow(0,0) returns.
+ </p><p><span class="emphasis"><em>[27.4.2.4]/2</em></span> Calling
+ <code class="code">std::ios_base::sync_with_stdio</code> after I/O has already been
+ performed on the standard stream objects will
+ flush the buffers, and
+ destroy and recreate the underlying buffer instances. Whether or not
+ the previously-written I/O is destroyed in this process depends mostly
+ on the --enable-libio choice: for stdio, if the written data is
+ already in the stdio buffer, the data may be completely safe!
+ </p><p><span class="emphasis"><em>[27.6.1.1.2]</em></span>,
+ <span class="emphasis"><em>[27.6.2.3]</em></span> The I/O sentry ctor and dtor can perform
+ additional work than the minimum required. We are not currently taking
+ advantage of this yet.
+ </p><p><span class="emphasis"><em>[27.7.1.3]/16</em></span>,
+ <span class="emphasis"><em>[27.8.1.4]/10</em></span>
+ The effects of <code class="code">pubsetbuf/setbuf</code> are described
+ <a class="ulink" href="../27_io/howto.html#2" target="_top">in this chapter</a>.
+ </p><p><span class="emphasis"><em>[27.8.1.4]/16</em></span> Calling <code class="code">fstream::sync</code> when
+ a get area exists will... whatever <code class="code">fflush()</code> does, I think.
+ </p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.tr1"></a>C++ TR1</h3></div></div></div><p>
+This table is based on the table of contents of ISO/IEC DTR 19768
+Doc No: N1836=05-0096 Date: 2005-06-24
+Draft Technical Report on C++ Library Extensions
+</p><p>
+In this implementation the header names are prefixed by
+<code class="code">tr1/</code>, for instance <code class="code">&lt;tr1/functional&gt;</code>,
+<code class="code">&lt;tr1/memory&gt;</code>, and so on.
+</p><p>
+This page describes the TR1 support in mainline GCC SVN, not in any particular
+release.
+</p><div class="table"><a id="id499458"></a><p class="title"><b>Table 1.2. C++ TR1 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left">
+ <p>
+ Uses code from
+ <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
+ </p>
+ </td></tr><tr><td align="left">2.2.3.1</td><td align="left"><code class="code">shared_ptr</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.2</td><td align="left"><code class="code">shared_ptr</code> destructor</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.3</td><td align="left"><code class="code">shared_ptr</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.4</td><td align="left"><code class="code">shared_ptr</code> modifiers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.5</td><td align="left"><code class="code">shared_ptr</code> observers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.6</td><td align="left"><code class="code">shared_ptr</code> comparison</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.7</td><td align="left"><code class="code">shared_ptr</code> I/O</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.8</td><td align="left"><code class="code">shared_ptr</code> specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.9</td><td align="left"><code class="code">shared_ptr</code> casts</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.10</td><td align="left"><code class="code">get_deleter</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.1</td><td align="left"><code class="code">weak_ptr</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.2</td><td align="left"><code class="code">weak_ptr</code> destructor</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.3</td><td align="left"><code class="code">weak_ptr</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.4</td><td align="left"><code class="code">weak_ptr</code> modifiers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.5</td><td align="left"><code class="code">weak_ptr</code> observers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.6</td><td align="left"><code class="code">weak_ptr</code> comparison</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.7</td><td align="left"><code class="code">weak_ptr</code> specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.5</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>3</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Function Objects</em></span></td></tr><tr><td align="left">3.1</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.2</td><td align="left">Additions to <code class="code">&lt;functional&gt; synopsis</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.3</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.4</td><td align="left">Function return types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.5</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.6</td><td align="left">Function object binders</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.1</td><td align="left">Class template <code class="code">is_bind_expression</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.6.2</td><td align="left">Class template <code class="code">is_placeholder</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.6.3</td><td align="left">Function template <code class="code">bind</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.6.4</td><td align="left">Placeholders</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7</td><td align="left">Polymorphic function wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.1</td><td align="left">Class <code class="code">bad_function_call<code class="code"></code></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.1.1</td><td align="left"><code class="code">bad_function_call</code> constructor</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2</td><td align="left">Class template <code class="code">function</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.1</td><td align="left"><code class="code">function</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.2</td><td align="left"><code class="code">function</code> modifiers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.3</td><td align="left"><code class="code">function</code> capacity</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.4</td><td align="left"><code class="code">function</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.5</td><td align="left"><code class="code">function</code> target access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.6</td><td align="left">undefined operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.7</td><td align="left">null pointer comparison operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.8</td><td align="left">specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>4</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td align="left">4.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.4</td><td align="left">General Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.5</td><td align="left">Unary Type Traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.1</td><td align="left">Primary Type Categories</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.5.2</td><td align="left">Composite type traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.5.3</td><td align="left">Type properties</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.7</td><td align="left">Transformations between types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.7.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.7.3</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.7.4</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.8</td><td align="left">Other transformations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.9</td><td align="left">Implementation requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>5</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Numerical Facilities</em></span></td></tr><tr><td align="left">5.1</td><td align="left">Random number generation</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.2</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.3</td><td align="left">Class template <code class="code">variate_generator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4</td><td align="left">Random number engine class templates</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.1</td><td align="left">Class template <code class="code">linear_congruential</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.2</td><td align="left">Class template <code class="code">mersenne_twister</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.3</td><td align="left">Class template <code class="code">subtract_with_carry</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.4</td><td align="left">Class template <code class="code">subtract_with_carry_01</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.5</td><td align="left">Class template <code class="code">discard_block</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.6</td><td align="left">Class template <code class="code">xor_combine</code></td><td align="left">Y</td><td align="left">operator()() per N2079</td></tr><tr><td align="left">5.1.5</td><td align="left">Engines with predefined parameters</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7</td><td align="left">Random distribution class templates</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.1</td><td align="left">Class template <code class="code">uniform_int</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.2</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.4</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.5</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.6</td><td align="left">Class template <code class="code">uniform_real</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.7</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.8</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.9</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2</td><td align="left">Mathematical special functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.1</td><td align="left">associated Laguerre polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.2</td><td align="left">associated Legendre functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.3</td><td align="left">beta function</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.4</td><td align="left">(complete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.5</td><td align="left">(complete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.6</td><td align="left">(complete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.7</td><td align="left">confluent hypergeometric functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.8</td><td align="left">regular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.9</td><td align="left">cylindrical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.10</td><td align="left">irregular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.11</td><td align="left">cylindrical Neumann functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.12</td><td align="left">(incomplete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.13</td><td align="left">(incomplete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.14</td><td align="left">(incomplete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.15</td><td align="left">exponential integral</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.16</td><td align="left">Hermite polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.17</td><td align="left">hypergeometric functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.18</td><td align="left">Laguerre polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.19</td><td align="left">Legendre polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.20</td><td align="left">Riemann zeta function</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.21</td><td align="left">spherical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.22</td><td align="left">spherical associated Legendre functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.23</td><td align="left">spherical Neumann functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.2</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>6</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td align="left">6.1</td><td align="left">Tuple types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.1</td><td align="left">Header <code class="code">&lt;tuple&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.2</td><td align="left">Additions to header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.1</td><td align="left">Construction</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.2</td><td align="left">Tuple creation functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.3</td><td align="left">Tuple helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.4</td><td align="left">Element access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.5</td><td align="left">Relational operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.4</td><td align="left">Pairs</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2</td><td align="left">Fixed size array</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.1</td><td align="left">Header <code class="code">&lt;array&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2</td><td align="left">Class template <code class="code">array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.1</td><td align="left"><code class="code">array</code> constructors, copy, and assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.2</td><td align="left"><code class="code">array</code> specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.3</td><td align="left"><code class="code">array</code> size</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.4</td><td align="left">Zero sized <code class="code">array</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.5</td><td align="left">Tuple interface to class template <code class="code">array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3</td><td align="left">Unordered associative containers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.1</td><td align="left">Unordered associative container requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.1.1</td><td align="left">Exception safety guarantees</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.2</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.3</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4</td><td align="left">Unordered associative container classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.1</td><td align="left">Header <code class="code">&lt;unordered_set&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.2</td><td align="left">Header <code class="code">&lt;unordered_map&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.1</td><td align="left"><code class="code">unordered_set</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.2</td><td align="left"><code class="code">unordered_set</code> swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.4</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.1</td><td align="left"><code class="code">unordered_map</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.2</td><td align="left"><code class="code">unordered_map</code> element access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.3</td><td align="left"><code class="code">unordered_map</code> swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.5</td><td align="left">Class template <code class="code">unordered_multiset<code class="code"></code></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.1</td><td align="left"><code class="code">unordered_multiset</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.2</td><td align="left"><code class="code">unordered_multiset</code> swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.6</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.1</td><td align="left"><code class="code">unordered_multimap</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.2</td><td align="left"><code class="code">unordered_multimap</code> swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>7</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.1</td><td align="left">Definitions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.2</td><td align="left">Requirements</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.3</td><td align="left">Regular expressions summary</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5</td><td align="left">Namespace <code class="code">tr1::regex_constants</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5.1</td><td align="left">Bitmask Type <code class="code">syntax_option_type</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5.2</td><td align="left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5.3</td><td align="left">Implementation defined <code class="code">error_type</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.1</td><td align="left"><code class="code">basic_regex</code> constants</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.2</td><td align="left"><code class="code">basic_regex</code> constructors</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.3</td><td align="left"><code class="code">basic_regex</code> assign</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.4</td><td align="left"><code class="code">basic_regex</code> constant operations</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.5</td><td align="left"><code class="code">basic_regex</code> locale</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.6</td><td align="left"><code class="code">basic_regex</code> swap</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.7</td><td align="left"><code class="code">basic_regex</code> non-member functions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.7.1</td><td align="left"><code class="code">basic_regex</code> non-member swap</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.9.1</td><td align="left"><code class="code">sub_match</code> members</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.9.2</td><td align="left"><code class="code">sub_match</code> non-member operators</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.1</td><td align="left"><code class="code">match_results</code> constructors</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.2</td><td align="left"><code class="code">match_results</code> size</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.3</td><td align="left"><code class="code">match_results</code> element access</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.4</td><td align="left"><code class="code">match_results</code> formatting</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.5</td><td align="left"><code class="code">match_results</code> allocator</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.6</td><td align="left"><code class="code">match_results</code> swap</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11</td><td align="left">Regular expression algorithms</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.1</td><td align="left">exceptions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.2</td><td align="left"><code class="code">regex_match</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.3</td><td align="left"><code class="code">regex_search</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.4</td><td align="left"><code class="code">regex_replace</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12</td><td align="left">Regular expression Iterators</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1</td><td align="left">Class template <code class="code">regex_iterator</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.1</td><td align="left"><code class="code">regex_iterator</code> constructors</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.2</td><td align="left"><code class="code">regex_iterator</code> comparisons</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.3</td><td align="left"><code class="code">regex_iterator</code> dereference</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.4</td><td align="left"><code class="code">regex_iterator</code> increment</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2</td><td align="left">Class template <code class="code">regex_token_iterator</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.1</td><td align="left"><code class="code">regex_token_iterator</code> constructors</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.2</td><td align="left"><code class="code">regex_token_iterator</code> comparisons</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.3</td><td align="left"><code class="code">regex_token_iterator</code> dereference</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.4</td><td align="left"><code class="code">regex_token_iterator</code> increment</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>8</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td align="left">8.1</td><td align="left">Additions to header <code class="code">&lt;complex&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.2</td><td align="left">Function <code class="code">acos</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.3</td><td align="left">Function <code class="code">asin</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.4</td><td align="left">Function <code class="code">atan</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.5</td><td align="left">Function <code class="code">acosh</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.6</td><td align="left">Function <code class="code">asinh</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.7</td><td align="left">Function <code class="code">atanh</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.8</td><td align="left">Function <code class="code">fabs</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.9</td><td align="left">Additional Overloads</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.2</td><td align="left">Header <code class="code">&lt;ccomplex&gt;</code></td><td align="left">N</td><td align="left">DR 551</td></tr><tr bgcolor="#C8B0B0"><td align="left">8.3</td><td align="left">Header <code class="code">&lt;complex.h&gt;</code></td><td align="left">N</td><td align="left">DR 551</td></tr><tr><td align="left">8.4</td><td align="left">Additions to header <code class="code">&lt;cctype&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.4.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.4.2</td><td align="left">Function <code class="code">isblank</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.5</td><td align="left">Additions to header <code class="code">&lt;ctype.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.6</td><td align="left">Header <code class="code">&lt;cfenv&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.6.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.6.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.7</td><td align="left">Header <code class="code">&lt;fenv.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.8</td><td align="left">Additions to header <code class="code">&lt;cfloat&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.9</td><td align="left">Additions to header <code class="code">&lt;float.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.10</td><td align="left">Additions to header <code class="code">&lt;ios&gt;</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.10.1</td><td align="left">Synopsis</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.10.2</td><td align="left">Function <code class="code">hexfloat</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">8.11</td><td align="left">Header <code class="code">&lt;cinttypes&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.11.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left">DR 557</td></tr><tr><td align="left">8.11.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.12</td><td align="left">Header <code class="code">&lt;inttypes.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.13</td><td align="left">Additions to header <code class="code">&lt;climits&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.14</td><td align="left">Additions to header <code class="code">&lt;limits.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.15</td><td align="left">Additions to header <code class="code">&lt;locale&gt;</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">8.16</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.16.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.16.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.16.3</td><td align="left">Function template definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.16.4</td><td align="left">Additional overloads</td><td align="left">Y</td><td align="left">DR 568; DR 550</td></tr><tr><td align="left">8.17</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.18</td><td align="left">Additions to header <code class="code">&lt;cstdarg&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.19</td><td align="left">Additions to header <code class="code">&lt;stdarg.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.20</td><td align="left">The header <code class="code">&lt;cstdbool&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.21</td><td align="left">The header <code class="code">&lt;stdbool.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.22</td><td align="left">The header <code class="code">&lt;cstdint&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.22.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.22.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.23</td><td align="left">The header <code class="code">&lt;stdint.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.24</td><td align="left">Additions to header <code class="code">&lt;cstdio&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.24.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.24.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.24.3</td><td align="left">Additional format specifiers</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">8.24.4</td><td align="left">Additions to header <code class="code">&lt;stdio.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25</td><td align="left">Additions to header <code class="code">&lt;cstdlib&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25.3</td><td align="left">Function <code class="code">abs</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25.4</td><td align="left">Function <code class="code">div</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.26</td><td align="left">Additions to header <code class="code">&lt;stdlib.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.27</td><td align="left">Header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">Y</td><td align="left">DR 551</td></tr><tr><td align="left">8.28</td><td align="left">Header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">Y</td><td align="left">DR 551</td></tr><tr><td align="left">8.29</td><td align="left">Additions to header <code class="code">&lt;ctime&gt;</code></td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">8.30</td><td align="left">Additions to header <code class="code">&lt;cwchar&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.30.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.30.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.30.3</td><td align="left">Additional wide format specifiers</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">8.31</td><td align="left">Additions to header <code class="code">&lt;wchar.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.32</td><td align="left">Additions to header <code class="code">&lt;cwctype&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.32.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.32.2</td><td align="left">Function <code class="code">iswblank</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.33</td><td align="left">Additions to header <code class="code">&lt;wctype.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.200x"></a>C++ 200x</h3></div></div></div><p>
+This table is based on the table of contents of ISO/IEC
+Doc No: N2857=09-0047 Date: 2009-03-23
+Working Draft, Standard for Programming Language C++
+</p><p>
+In this implementation <code class="literal">-std=gnu++0x</code> or
+<code class="literal">-std=c++0x</code> flags must be used to enable language and
+library features. The pre-defined symbol
+<code class="constant">__GXX_EXPERIMENTAL_CXX0X__</code> is used to check for the
+presence of the required flag.
+</p><p>
+This page describes the C++0x support in mainline GCC SVN, not in any
+particular release.
+</p><div class="table"><a id="id476343"></a><p class="title"><b>Table 1.3. C++ 200x Implementation Status</b></p><div class="table-contents"><table summary="C++ 200x Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
+ <span class="emphasis"><em>18</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Language support</em></span>
+ </td></tr><tr><td align="left">18.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">18.2</td><td align="left">Types</td><td align="left">Partial</td><td align="left">Missing offsetof, max_align_t, nullptr_t</td></tr><tr><td align="left">18.3</td><td align="left">Implementation properties</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.3.1</td><td align="left">Numeric Limits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.3.1.1</td><td align="left">Class template <code class="code">numeric_limits</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">18.3.1.2</td><td align="left"><code class="code">numeric_limits</code> members</td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.1.3</td><td align="left"><code class="code">float_round_style</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.1.4</td><td align="left"><code class="code">float_denorm_style</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">18.3.1.5</td><td align="left"><code class="code">numeric_limits</code> specializations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.3.2</td><td align="left">C Library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.4</td><td align="left">Integer types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.4.1</td><td align="left">Header <code class="code">&lt;cstdint&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">18.4.2</td><td align="left">The header <code class="code">&lt;stdint.h&gt;</code></td><td align="left">Partial</td><td align="left">May use configure-generated stdint.h via GCC_HEADER_STDINT</td></tr><tr bgcolor="#B0B0B0"><td align="left">18.5</td><td align="left">Start and termination</td><td align="left">Partial</td><td align="left">Missing quick_exit, at_quick_exit</td></tr><tr><td align="left">18.6</td><td align="left">Dynamic memory management</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.7</td><td align="left">Type identification</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.7.1</td><td align="left">Class type_info</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">18.7.2</td><td align="left">Class type_index</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">18.7.3</td><td align="left">Class bad_cast</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.7.4</td><td align="left">Class bad_typeid</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8</td><td align="left">Exception handling</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.8.1</td><td align="left">Class exception</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.2</td><td align="left">Violation exception-specifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.3</td><td align="left">Abnormal termination</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.4</td><td align="left"><code class="code">uncaught_exception</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.5</td><td align="left">Propagation</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">18.8.6</td><td align="left">Class <code class="code">nested_exception</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">18.9</td><td align="left">Initializer lists</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.9.1</td><td align="left">Initializer list constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.9.2</td><td align="left">Initializer list access</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">18.9.3</td><td align="left">Initializer list concept maps</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">18.10</td><td align="left">Other runtime support</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>19</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Diagnostics</em></span>
+ </td></tr><tr><td align="left">19.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.2</td><td align="left">Exception classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.3</td><td align="left">Assertions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.4</td><td align="left">Error numbers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.5</td><td align="left">System error support</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">19.5.1</td><td align="left">Class <code class="code">error_category</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">19.5.2</td><td align="left">Class <code class="code">error_code</code></td><td align="left">Partial</td><td align="left">Missing concept ErrorCodeEnum</td></tr><tr bgcolor="#B0B0B0"><td align="left">19.5.3</td><td align="left">Class <code class="code">error_condition</code></td><td align="left">Partial</td><td align="left">Missing concept ErrorConditionEnum</td></tr><tr><td align="left">19.5.4</td><td align="left">Comparison operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.5.5</td><td align="left">Class <code class="code">system_error</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>20</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>General utilities</em></span>
+ </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.1</td><td align="left">General</td><td align="left">Partial</td><td align="left">Missing all concepts</td></tr><tr bgcolor="#C8B0B0"><td align="left">20.2</td><td align="left">Concepts</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.3</td><td align="left">Utility components</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1</td><td align="left">Operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.2</td><td align="left"><code class="code">forward</code> and <code class="code">move</code> helpers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.3</td><td align="left"><code class="code">pair</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.4</td><td align="left">tuple-like access to <code class="code">pair</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.3.5</td><td align="left">Range concept maps for <code class="code">pair</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.3.6</td><td align="left">Class template <code class="code">bitset</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4</td><td align="left">Compile-time rational arithmetic</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.1</td><td align="left">Class template <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2</td><td align="left">Arithmetic on <code class="code">ratio</code> types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.3</td><td align="left">Comparison of <code class="code">ratio</code> types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.4</td><td align="left">SI types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.5</td><td align="left">Tuples</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.5.2</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">Partial</td><td align="left">Missing range concept maps</td></tr><tr><td align="left">20.6</td><td align="left">Metaprogramming and type traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.6.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.4</td><td align="left">Unary Type Traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.4.1</td><td align="left">Primary type categories</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.4.2</td><td align="left">Composite type traits</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.6.4.3</td><td align="left">Type properties</td><td align="left">Partial</td><td align="left">Missing is_system_layout</td></tr><tr><td align="left">20.6.5</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6</td><td align="left">Transformations between types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6.3</td><td align="left">Sign modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6.4</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6.5</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.6.7</td><td align="left">Other transformations</td><td align="left">Partial</td><td align="left">Missing decay</td></tr><tr><td align="left">20.7</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.7.1</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.3</td><td align="left">Base</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.4</td><td align="left">Function object return types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.7.6</td><td align="left">Identity operation</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.7.7</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.8</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.9</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.10</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.11</td><td align="left">Negators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.12</td><td align="left">Template <code class="code">function</code> and function template <code class="code">bind</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.13</td><td align="left">Adaptors for pointers to functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.14</td><td align="left">Adaptors for pointers to members</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.15</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.16</td><td align="left">Polymorphic function wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.7.16.1</td><td align="left">Class <code class="code">bad_function_call</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.16.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.17</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.7.18</td><td align="left">Class template <code class="code">reference_closure</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8</td><td align="left">Memory</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.01</td><td align="left">Allocator argument tag</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.02</td><td align="left">Allocators</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.02.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.02.2</td><td align="left">Allocator concept</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.02.3</td><td align="left">Support for legacy allocators</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.02.4</td><td align="left">Allocator and Legacy Allocator members</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.03</td><td align="left">Allocator-related element concepts</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.04</td><td align="left">Allocator propagation traits</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.05</td><td align="left">Allocator propagation map</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.06</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.07</td><td align="left">Scoped allocator adaptor</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.1</td><td align="left"><code class="code">scoped_allocator_adaptor_base</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.2</td><td align="left"><code class="code">scoped_allocator_adaptor constructors</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.3</td><td align="left"><code class="code">scoped_allocator_adaptor2</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.3</td><td align="left">scoped_allocator_adaptor members</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.4</td><td align="left"><code class="code">scoped_allocator_adaptor globals</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.08</td><td align="left">Raw storage iterator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.09</td><td align="left">Temporary buffers</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.10</td><td align="left"><code class="code">construct_element</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.11</td><td align="left">Specialized algorithms</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.11.1</td><td align="left"><code class="code">addressof</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.11.2</td><td align="left"><code class="code">uninitialized_copy</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.11.3</td><td align="left"><code class="code">uninitialized_fill</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.11.4</td><td align="left"><code class="code">uninitialized_fill_n</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.12</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.13</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.13.1</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.13.2</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">Y</td><td align="left">
+ <p>
+ Uses code from
+ <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
+ </p>
+ </td></tr><tr><td align="left">20.8.13.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.13.4</td><td align="left">Class template <code class="code">owner_less</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.13.5</td><td align="left">Class template <code class="code">emable_shared_from_this</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.8.13.6</td><td align="left"><code class="code">shared_ptr</code> atomic access</td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.8.13.7</td><td align="left">Pointer safety</td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.14</td><td align="left">Align</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.15</td><td align="left">C library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.1</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.2</td><td align="left">Time-related traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.2.1</td><td align="left"><code class="code">treat_as_floating_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.2.2</td><td align="left"><code class="code">duration_values</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.2.3</td><td align="left">Specializations of <code class="code">common_type</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.3</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.4</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.5</td><td align="left">Clocks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.5.1</td><td align="left">Class <code class="code">system_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.5.2</td><td align="left">Class <code class="code">monotonic_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.5.3</td><td align="left">Class <code class="code">high_resolution_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10</td><td align="left">Date and time functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>21</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Strings</em></span>
+ </td></tr><tr><td align="left">21.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2</td><td align="left">Character traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">21.2.1</td><td align="left">Character traits requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2.2</td><td align="left">traits typedef</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2.3</td><td align="left"><code class="code">char_traits</code> specializations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">21.2.3.1</td><td align="left">struct <code class="code">char_traits&lt;char&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2.3.2</td><td align="left">struct <code class="code">char_traits&lt;char16_t&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2.3.3</td><td align="left">struct <code class="code">char_traits&lt;char32_t&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2.3.4</td><td align="left">struct <code class="code">char_traits&lt;wchar_t&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.3</td><td align="left">String classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.4</td><td align="left">Class template <code class="code">basic_string</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.5</td><td align="left">Numeric Conversions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.6</td><td align="left">Null-terminated sequence utilities</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">
+ <span class="emphasis"><em>22</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Localization</em></span>
+ </td></tr><tr><td align="left">22.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2</td><td align="left">Header <code class="code">&lt;locale&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3</td><td align="left">Locales</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.3.1</td><td align="left">Class <code class="code">locale</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3.2</td><td align="left"><code class="code">locale</code> globals</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3.3</td><td align="left">Convenience interfaces</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.3.3.1</td><td align="left">Character classification</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3.3.2</td><td align="left">Conversions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.3.3.2.1</td><td align="left">Character</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">22.3.3.2.2</td><td align="left">String</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">22.3.3.2.3</td><td align="left">Buffer</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">22.4</td><td align="left">Standard locale categories</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.1</td><td align="left"><code class="code">ctype</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.2</td><td align="left">Numeric</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.2.1</td><td align="left"><code class="code">num_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.2.2</td><td align="left"><code class="code">num_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.3</td><td align="left"><code class="code">num_punct</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.4</td><td align="left"><code class="code">collate</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5</td><td align="left">Time</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.5.1</td><td align="left"><code class="code">time_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5.2</td><td align="left"><code class="code">time_get_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5.3</td><td align="left"><code class="code">time_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5.3</td><td align="left"><code class="code">time_put_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6</td><td align="left">Monetary</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.6.1</td><td align="left"><code class="code">money_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6.2</td><td align="left"><code class="code">money_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6.3</td><td align="left"><code class="code">money_punct</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6.4</td><td align="left"><code class="code">money_punct_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.7</td><td align="left"><code class="code">messages</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.8</td><td align="left">Program-defined facets</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">22.5</td><td align="left">Standard code conversion facets</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">22.6</td><td align="left">C Library Locales</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>23</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Containers</em></span>
+ </td></tr><tr bgcolor="#B0B0B0"><td align="left">23.1</td><td align="left">General</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr><td align="left">23.2</td><td align="left">Container requirements</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">23.2.1</td><td align="left">General requirements</td><td align="left">Partial</td><td align="left">Missing construct_element</td></tr><tr><td align="left">23.2.2</td><td align="left">Data races</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3</td><td align="left">Sequence containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.3.1</td><td align="left">Class template <code class="code">array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.2</td><td align="left">Class template <code class="code">deque</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.3</td><td align="left">Class template <code class="code">forward_list</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.4</td><td align="left">Class template <code class="code">list</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.5</td><td align="left">Adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.3.5.1</td><td align="left">Class template <code class="code">queue</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.5.2</td><td align="left">Class template <code class="code">priority_queue</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.5.3</td><td align="left">Class template <code class="code">stack</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.6</td><td align="left">Class template <code class="code">vector</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.7</td><td align="left">Class <code class="code">vector&lt;bool&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Associative containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1</td><td align="left">Class template <code class="code">map</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4.2</td><td align="left">Class template <code class="code">multimap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4.3</td><td align="left">Class template <code class="code">set</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4.4</td><td align="left">Class template <code class="code">multiset</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5</td><td align="left">Unordered associative containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.5.1</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5.2</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5.4</td><td align="left">Class template <code class="code">unordered_multiset</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>24</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Iterators</em></span>
+ </td></tr><tr bgcolor="#B0B0B0"><td align="left">24.1</td><td align="left">General</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr bgcolor="#C8B0B0"><td align="left">24.2</td><td align="left">Iterator concepts</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">24.3</td><td align="left">Header <code class="code">&lt;iterator&gt;</code> synopsis</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr><td align="left">24.4</td><td align="left">Iterator operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5</td><td align="left">Predefined iterators and Iterator adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.5.1</td><td align="left">Reverse iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5.2</td><td align="left">Insert iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5.3</td><td align="left">Move iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6</td><td align="left">Stream iterators</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.6.1</td><td align="left">Class template <code class="code">istream_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6.2</td><td align="left">Class template <code class="code">ostream_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6.3</td><td align="left">Class template <code class="code">istreambuf_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6.4</td><td align="left">Class template <code class="code">ostreambuf_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.7</td><td align="left">Insert iterators</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.7.1</td><td align="left">Class template <code class="code">back_insert_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.7.3</td><td align="left">Class template <code class="code">front_insert_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.7.5</td><td align="left">Class template <code class="code">insert_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>25</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Algorithms</em></span>
+ </td></tr><tr bgcolor="#B0B0B0"><td align="left">25.1</td><td align="left">General</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr><td align="left">25.2</td><td align="left">Header <code class="code">&lt;algorithm&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.3</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.4</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.5</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.6</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>26</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Numerics</em></span>
+ </td></tr><tr><td align="left">26.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.2</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3</td><td align="left">The floating-point environment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.4</td><td align="left">Complex numbers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5</td><td align="left">Random number generation</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">26.5.1</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr bgcolor="#C8B0B0"><td align="left">26.5.2</td><td align="left">Concepts and related requirements</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">26.5.3</td><td align="left">Random number engines</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.3.1</td><td align="left">Class template <code class="code">linear_congruential_engine</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.3.2</td><td align="left">Class template <code class="code">mersenne_twister_engine</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.3.3</td><td align="left">Class template <code class="code">subtract_with_carry_engine</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.4</td><td align="left">Random number engine adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.4.1</td><td align="left">Class template <code class="code">discard_block_engine</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.4.2</td><td align="left">Class template <code class="code">independent_bits_engine</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.4.3</td><td align="left">Class template <code class="code">shuffle_order_engine</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.5</td><td align="left">Engines and engine adaptors with predefined parameters</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.7</td><td align="left">Utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.7.1</td><td align="left">Class <code class="code">seed_seq</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.7.2</td><td align="left">Function template generate_canonical</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8</td><td align="left">Random number distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.1</td><td align="left">Uniform distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.1.1</td><td align="left">Class template <code class="code">uniform_int_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.1.2</td><td align="left">Class template <code class="code">uniform_real_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2</td><td align="left">Bernoulli distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.1</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.2</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.4</td><td align="left">Class template <code class="code">negative_binomial_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3</td><td align="left">Poisson distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.1</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.2</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.3</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.4</td><td align="left">Class template <code class="code">weibull_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.5</td><td align="left">Class template <code class="code">extreme_value_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4</td><td align="left">Normal distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.1</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.2</td><td align="left">Class template <code class="code">lognormal_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.3</td><td align="left">Class template <code class="code">chi_squared_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.4</td><td align="left">Class template <code class="code">cauchy_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.5</td><td align="left">Class template <code class="code">fisher_f_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.6</td><td align="left">Class template <code class="code">student_t_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.5</td><td align="left">Sampling distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.5.1</td><td align="left">Class template <code class="code">discrete_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.5.2</td><td align="left">Class template <code class="code">piecewise_constant_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.5.3</td><td align="left">Class template <code class="code">piecewise_linear_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6</td><td align="left">Numeric arrays</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.6.1</td><td align="left">Header <code class="code">&lt;valarray&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.2</td><td align="left">Class template <code class="code">valarray</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.3</td><td align="left"><code class="code">valarray</code> non-member operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.4</td><td align="left">Class <code class="code">slice</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.5</td><td align="left">Class template <code class="code">slice_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.6</td><td align="left">Class <code class="code">gslice</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.7</td><td align="left">Class template <code class="code">gslice_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.8</td><td align="left">Class template <code class="code">mask_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.9</td><td align="left">Class template <code class="code">indirect_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7</td><td align="left">Generalized numeric operations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.7.1</td><td align="left"><code class="code">accumulate</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.2</td><td align="left"><code class="code">inner_product</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.3</td><td align="left"><code class="code">partial_sum</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.4</td><td align="left"><code class="code">adjacent_difference</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.5</td><td align="left">iota</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.8</td><td align="left">C Library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>27</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Input/output</em></span>
+ </td></tr><tr><td align="left">27.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2.1</td><td align="left">Imbue limitations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2.2</td><td align="left">Positioning type limitations</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">27.2.3</td><td align="left">Thread safety</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">27.3</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4.1</td><td align="left">Narrow stream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4.2</td><td align="left">Wide stream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.5</td><td align="left">Iostreams base classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.6</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.7</td><td align="left">Formatting and manipulators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.8</td><td align="left">String-based streams</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.9</td><td align="left">File-based streams</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>28</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Regular expressions</em></span>
+ </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.01</td><td align="left">General</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.02</td><td align="left">Definitions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.03</td><td align="left">Requirements</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.04</td><td align="left">Regular expressions summary</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.05</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">28.06</td><td align="left">Namespace <code class="code">std::regex_constants</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">28.07</td><td align="left">Class <code class="code">regex_error</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.08</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.09</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.10</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.11</td><td align="left">Class template <code class="code">match_results</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.12</td><td align="left">Regular expression algorithms</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.13</td><td align="left">Regular expression Iterators</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.14</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>29</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Atomic operations</em></span>
+ </td></tr><tr><td align="left">29.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">29.2</td><td align="left">Header <code class="code">&lt;cstdatomic&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">29.3</td><td align="left">Order and consistency</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">29.4</td><td align="left">Lock-free property</td><td align="left">Y</td><td align="left">Based on _GLIBCXX_ATOMIC_PROPERTY</td></tr><tr><td align="left">29.5</td><td align="left">Atomic types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">29.5.1</td><td align="left">Integral types</td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">29.5.2</td><td align="left">Address types</td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">29.5.3</td><td align="left">Generic types</td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">29.6</td><td align="left">Operations on atomic types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">29.7</td><td align="left">Flag Type and operations</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">29.8</td><td align="left">Fences</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>30</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Thread support</em></span>
+ </td></tr><tr><td align="left">30.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.2</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.3</td><td align="left">Threads</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.3.1</td><td align="left">Class <code class="code">thread</code></td><td align="left">Partial</td><td align="left">Missing futures</td></tr><tr><td align="left">30.3.2</td><td align="left">Namespace <code class="code">this_thread</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4</td><td align="left">Mutual exclusion</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.1</td><td align="left">Mutex requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.1.1</td><td align="left">Class <code class="code">mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.1.2</td><td align="left">Class <code class="code">recursive_mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.2</td><td align="left">Timed mutex requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.2.1</td><td align="left">Class <code class="code">timed_mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.2.2</td><td align="left">Class <code class="code">recursive_timed_mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.3</td><td align="left">Locks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.3.1</td><td align="left">Class template <code class="code">lock_guard</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.3.2</td><td align="left">Class template <code class="code">unique_lock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.4</td><td align="left">Generic locking algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.5</td><td align="left">Call once</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.5.1</td><td align="left"><code class="code">once_flag</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.5.2</td><td align="left"><code class="code">call_once</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.5</td><td align="left">Condition variables</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.5.1</td><td align="left">Class <code class="code">condition_variable</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.5.2</td><td align="left">Class <code class="code">condition_variable_any</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">30.6</td><td align="left">Futures</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.1</td><td align="left">Overview</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.2</td><td align="left">Error handling</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.3</td><td align="left">Class <code class="code">future_error</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.4</td><td align="left">Class template <code class="code">unique_future</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.5</td><td align="left">Class template <code class="code">shared_future</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.6</td><td align="left">Class template <code class="code">promise</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.7</td><td align="left">Allocator templates</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.8</td><td align="left">Class template <code class="code">packaged_task</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">
+ <span class="emphasis"><em>Appendix D</em></span>
+ </td><td colspan="3" align="left">
+ <span class="emphasis"><em>Compatibility features</em></span>
+ </td></tr><tr><td align="left">D.1</td><td align="left">Increment operator with bool operand</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.2</td><td align="left"><code class="code">static</code> keyword</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.3</td><td align="left">Access declarations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.4</td><td align="left">Implicit conversion from const strings</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.5</td><td align="left">C standard library headers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.6</td><td align="left">Old iostreams members</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.7</td><td align="left">char* streams</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.8</td><td align="left">Binders</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.9</td><td align="left"><code class="code">auto_ptr</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.10</td><td align="left">Iterator primitives</td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part I. 
+ Introduction
+
+ </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> License</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch25.html b/libstdc++-v3/doc/html/manual/streambufs.html
index a3bbfded422..a78c2ab4ae7 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch25.html
+++ b/libstdc++-v3/doc/html/manual/streambufs.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 25. Stream Buffers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch24.html" title="Chapter 24. Iostream Objects" /><link rel="next" href="bk01pt11ch25s02.html" title="Buffering" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 25. Stream Buffers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch24.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch25s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.streambufs"></a>Chapter 25. Stream Buffers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt11ch25.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="io.streambuf.derived"></a>Derived streambuf Classes</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 25. Stream Buffers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI.  Input and Output" /><link rel="prev" href="iostream_objects.html" title="Chapter 24. Iostream Objects" /><link rel="next" href="bk01pt11ch25s02.html" title="Buffering" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 25. Stream Buffers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="iostream_objects.html">Prev</a> </td><th width="60%" align="center">Part XI. 
+ Input and Output
+
+</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch25s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.streambufs"></a>Chapter 25. Stream Buffers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="io.streambuf.derived"></a>Derived streambuf Classes</h2></div></div></div><p>
</p><p>Creating your own stream buffers for I/O can be remarkably easy.
If you are interested in doing so, we highly recommend two very
excellent books:
@@ -54,4 +57,4 @@
<code class="code">include/ext/*_filebuf.h</code>, and on
<a class="ulink" href="http://www.informatik.uni-konstanz.de/~kuehl/c++/iostream/" target="_top">Dietmar
Kühl's IOStreams page</a>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch24.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch25s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 24. Iostream Objects </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Buffering</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="iostream_objects.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch25s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 24. Iostream Objects </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Buffering</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/strings.html b/libstdc++-v3/doc/html/manual/strings.html
index 75eba315023..e05af9f8aae 100644
--- a/libstdc++-v3/doc/html/manual/strings.html
+++ b/libstdc++-v3/doc/html/manual/strings.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part V. Strings</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="shared_ptr.html" title="shared_ptr" /><link rel="next" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part V. Strings</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.strings"></a>Part V. Strings</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">shared_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 13. String Classes</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part V.  Strings</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="shared_ptr.html" title="shared_ptr" /><link rel="next" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part V. 
+ Strings
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.strings"></a>Part V. 
+ Strings
+ <a id="id440662" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">shared_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 13. String Classes</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch26.html b/libstdc++-v3/doc/html/manual/stringstreams.html
index 23c5189868a..ccd6fdd4860 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch26.html
+++ b/libstdc++-v3/doc/html/manual/stringstreams.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 26. Memory Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch25s02.html" title="Buffering" /><link rel="next" href="bk01pt11ch27.html" title="Chapter 27. File Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 26. Memory Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch25s02.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch27.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.memstreams"></a>Chapter 26. Memory Based Streams</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt11ch26.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.memstreams.compat"></a>Compatibility With strstream</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 26. Memory Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI.  Input and Output" /><link rel="prev" href="bk01pt11ch25s02.html" title="Buffering" /><link rel="next" href="fstreams.html" title="Chapter 27. File Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 26. Memory Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch25s02.html">Prev</a> </td><th width="60%" align="center">Part XI. 
+ Input and Output
+
+</th><td width="20%" align="right"> <a accesskey="n" href="fstreams.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.memstreams"></a>Chapter 26. Memory Based Streams</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="stringstreams.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.memstreams.compat"></a>Compatibility With strstream</h2></div></div></div><p>
</p><p>Stringstreams (defined in the header <code class="code">&lt;sstream&gt;</code>)
are in this author's opinion one of the coolest things since
sliced time. An example of their use is in the Received Wisdom
@@ -31,4 +34,4 @@
memory yourself. The strstreams have been officially deprecated,
which means that 1) future revisions of the C++ Standard won't
support them, and 2) if you use them, people will laugh at you.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch25s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch27.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Buffering </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 27. File Based Streams</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch25s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="fstreams.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Buffering </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 27. File Based Streams</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/support.html b/libstdc++-v3/doc/html/manual/support.html
index 2e38596d909..3982cd8dc89 100644
--- a/libstdc++-v3/doc/html/manual/support.html
+++ b/libstdc++-v3/doc/html/manual/support.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part II. Support</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="debug.html" title="Debugging Support" /><link rel="next" href="bk01pt02pr01.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02pr01.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.support"></a>Part II. Support</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt02ch04.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt02ch04.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt02ch05.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="bk01pt02ch06.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt02ch06.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch06s02.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Debugging Support </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part II.  Support</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="debug.html" title="Debugging Support" /><link rel="next" href="bk01pt02pr01.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. 
+ Support
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02pr01.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.support"></a>Part II. 
+ Support
+ <a id="id485364" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="fundamental_types.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="dynamic_memory.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="termination.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Debugging Support </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch06.html b/libstdc++-v3/doc/html/manual/termination.html
index f3ec9218505..30dafcd0f07 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch06.html
+++ b/libstdc++-v3/doc/html/manual/termination.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 6. Termination</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="bk01pt02ch05.html" title="Chapter 5. Dynamic Memory" /><link rel="next" href="bk01pt02ch06s02.html" title="Verbose Terminate Handler" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Termination</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch05.html">Prev</a> </td><th width="60%" align="center">Part II. Support</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch06s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.termination"></a>Chapter 6. Termination</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt02ch06.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch06s02.html">Verbose Terminate Handler</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="support.termination.handlers"></a>Termination Handlers</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 6. Termination</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II.  Support" /><link rel="prev" href="dynamic_memory.html" title="Chapter 5. Dynamic Memory" /><link rel="next" href="verbose_termination.html" title="Verbose Terminate Handler" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Termination</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><th width="60%" align="center">Part II. 
+ Support
+
+</th><td width="20%" align="right"> <a accesskey="n" href="verbose_termination.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.termination"></a>Chapter 6. Termination</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="support.termination.handlers"></a>Termination Handlers</h2></div></div></div><p>
Not many changes here to <code class="filename">cstdlib</code>. You should note that the
<code class="function">abort()</code> function does not call the
destructors of automatic nor static objects, so if you're
@@ -42,4 +45,4 @@
functions, and the compiler/library might already be using some of
those slots. If you think you may run out, we recommend using
the <code class="function">xatexit</code>/<code class="function">xexit</code> combination from <code class="literal">libiberty</code>, which has no such limit.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch06s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. Dynamic Memory </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Verbose Terminate Handler</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="verbose_termination.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. Dynamic Memory </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Verbose Terminate Handler</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html
index 4ae5e27f7e7..aa5e0e3b166 100644
--- a/libstdc++-v3/doc/html/manual/test.html
+++ b/libstdc++-v3/doc/html/manual/test.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Test</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; test&#10; , &#10; testsuite&#10; , &#10; performance&#10; , &#10; conformance&#10; , &#10; ABI&#10; , &#10; exception safety&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt01ch02.html" title="Chapter 2. Setup" /><link rel="prev" href="bk01pt01ch02s03.html" title="Make" /><link rel="next" href="using.html" title="Chapter 3. Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Test</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch02s03.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.test"></a>Test</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Test</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; test&#10; , &#10; testsuite&#10; , &#10; performance&#10; , &#10; conformance&#10; , &#10; ABI&#10; , &#10; exception safety&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="make.html" title="Make" /><link rel="next" href="using.html" title="Chapter 3. Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Test</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.test"></a>Test</h2></div></div></div><p>
The libstdc++ testsuite includes testing for standard conformance,
regressions, ABI, and performance.
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="test.organization"></a>Organization</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="test.organization.layout"></a>Directory Layout</h4></div></div></div><p>
@@ -486,4 +486,4 @@ only default variables.
</p><p>
A number of class abstractions for performance counters, and
reporting functions including:
- </p><div class="itemizedlist"><ul type="circle"><li><p>time_counter</p></li><li><p>resource_counter</p></li><li><p>report_performance</p></li></ul></div></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch02s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt01ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Make </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Using</td></tr></table></div></body></html>
+ </p><div class="itemizedlist"><ul type="circle"><li><p>time_counter</p></li><li><p>resource_counter</p></li><li><p>report_performance</p></li></ul></div></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Make </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Using</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt04ch12.html b/libstdc++-v3/doc/html/manual/traits.html
index b771aaf4d2a..70837004480 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt04ch12.html
+++ b/libstdc++-v3/doc/html/manual/traits.html
@@ -1,4 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 12. Traits</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="shared_ptr.html" title="shared_ptr" /><link rel="next" href="strings.html" title="Part V. Strings" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12. Traits</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><th width="60%" align="center">Part IV. Utilities</th><td width="20%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.traits"></a>Chapter 12. Traits</h2></div></div></div><p>
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">shared_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part V. Strings</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 12. Traits</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV.  Utilities" /><link rel="prev" href="shared_ptr.html" title="shared_ptr" /><link rel="next" href="strings.html" title="Part V.  Strings" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12. Traits</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><th width="60%" align="center">Part IV. 
+ Utilities
+
+</th><td width="20%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.traits"></a>Chapter 12. Traits</h2></div></div></div><p>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">shared_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part V. 
+ Strings
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html
index be70731bfc7..0bf3c7b5cea 100644
--- a/libstdc++-v3/doc/html/manual/using.html
+++ b/libstdc++-v3/doc/html/manual/using.html
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="test.html" title="Test" /><link rel="next" href="bk01pt01ch03s02.html" title="Headers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><th width="60%" align="center">Part I. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch03s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using"></a>Chapter 3. Using</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch03s02.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s02.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch03s03.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s03.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s03.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s03.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch03s04.html">Macros</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch03s05.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s05.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch03s06.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch03s06.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s06.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch03s06.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.lib"></a>Linking Library Binary Files</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="test.html" title="Test" /><link rel="next" href="using_headers.html" title="Headers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><th width="60%" align="center">Part I. 
+ Introduction
+
+</th><td width="20%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using"></a>Chapter 3. Using</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.lib"></a>Linking Library Binary Files</h2></div></div></div><p>
If you only built a static library (libstdc++.a), or if you
specified static linking, you don't have to worry about this.
But if you built a shared library (libstdc++.so) and linked
@@ -38,4 +41,4 @@
A libstdc++.la file is also installed, for use with Libtool. If
you use Libtool to create your executables, these details are
taken care of for you.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch03s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Test </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Headers</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Test </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Headers</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html b/libstdc++-v3/doc/html/manual/using_concurrency.html
index d814ad6034e..2ddde83a1a1 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html
+++ b/libstdc++-v3/doc/html/manual/using_concurrency.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Concurrency</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="bk01pt01ch03s04.html" title="Macros" /><link rel="next" href="bk01pt01ch03s06.html" title="Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch03s04.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch03s06.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.concurrency"></a>Concurrency</h2></div></div></div><p>This section discusses issues surrounding the proper compilation
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Concurrency</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_macros.html" title="Macros" /><link rel="next" href="using_exceptions.html" title="Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_macros.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_exceptions.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.concurrency"></a>Concurrency</h2></div></div></div><p>This section discusses issues surrounding the proper compilation
of multithreaded applications which use the Standard C++
library. This information is GCC-specific since the C++
standard does not address matters of multithreaded applications.
@@ -216,4 +216,4 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
is a better way to tune an application for high-speed using this
implementation of the STL. There is
<a class="ulink" href="../ext/howto.html#3" target="_top">more information on allocators here</a>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch03s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch03s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Macros </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Exceptions</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_macros.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_exceptions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Macros </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Exceptions</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/using_exceptions.html b/libstdc++-v3/doc/html/manual/using_exceptions.html
new file mode 100644
index 00000000000..123c459be55
--- /dev/null
+++ b/libstdc++-v3/doc/html/manual/using_exceptions.html
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_concurrency.html" title="Concurrency" /><link rel="next" href="debug.html" title="Debugging Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.exception"></a>Exceptions</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.propagating"></a>Propagating Exceptions aka Exception Neutrality</h3></div></div></div><p>
+ </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.safety"></a>Exception Safety</h3></div></div></div><p>
+ </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.no"></a>Support for <code class="literal">-fno-exceptions</code></h3></div></div></div><p>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html b/libstdc++-v3/doc/html/manual/using_headers.html
index 537a34b3171..5950020018a 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html
+++ b/libstdc++-v3/doc/html/manual/using_headers.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Headers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using.html" title="Chapter 3. Using" /><link rel="next" href="bk01pt01ch03s03.html" title="Namespaces" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Headers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch03s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.headers"></a>Headers</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.all"></a>Header Files</h3></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Headers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using.html" title="Chapter 3. Using" /><link rel="next" href="using_namespaces.html" title="Namespaces" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Headers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_namespaces.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.headers"></a>Headers</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.all"></a>Header Files</h3></div></div></div><p>
The C++ standard specifies the entire set of header files that
must be available to all hosted implementations. Actually, the
word "files" is a misnomer, since the contents of the
@@ -20,16 +20,16 @@
upcoming 200x standard.
</p><p>
C++98/03 include files. These are available in the default compilation mode, i.e. <code class="code">-std=c++98</code> or <code class="code">-std=gnu++98</code>.
- </p><div class="table"><a id="id516690"></a><p class="title"><b>Table 3.1. C++ 1998 Library Headers</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id508989"></a><p class="title"><b>Table 3.2. C++ 1998 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
+ </p><div class="table"><a id="id476874"></a><p class="title"><b>Table 3.1. C++ 1998 Library Headers</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id531673"></a><p class="title"><b>Table 3.2. C++ 1998 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
C++0x include files. These are only available in C++0x compilation
mode, i.e. <code class="literal">-std=c++0x</code> or <code class="literal">-std=gnu++0x</code>.
-</p><p></p><div class="table"><a id="id506064"></a><p class="title"><b>Table 3.3. C++ 200x Library Headers</b></p><div class="table-contents"><table summary="C++ 200x Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td><td align="left"><code class="filename">new</code></td></tr><tr><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td><td align="left"><code class="filename">ratio</code></td></tr><tr><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td><td align="left"><code class="filename">stdexcept</code></td></tr><tr><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td><td align="left"><code class="filename">tuple</code></td></tr><tr><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="filename">utility</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id450972"></a><p class="title"><b>Table 3.4. C++ 200x Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 200x Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdatomic</code></td></tr><tr><td align="left"><code class="filename">cstdbool</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td></tr><tr><td align="left"><code class="filename">cstring</code></td><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td></tr><tr><td align="left"><code class="filename">cwctype</code></td><td align="left"><code class="filename">stdatomic.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
+</p><p></p><div class="table"><a id="id498758"></a><p class="title"><b>Table 3.3. C++ 200x Library Headers</b></p><div class="table-contents"><table summary="C++ 200x Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td><td align="left"><code class="filename">new</code></td></tr><tr><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td><td align="left"><code class="filename">ratio</code></td></tr><tr><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td><td align="left"><code class="filename">stdexcept</code></td></tr><tr><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td><td align="left"><code class="filename">tuple</code></td></tr><tr><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="filename">utility</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id491761"></a><p class="title"><b>Table 3.4. C++ 200x Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 200x Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdatomic</code></td></tr><tr><td align="left"><code class="filename">cstdbool</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td></tr><tr><td align="left"><code class="filename">cstring</code></td><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td></tr><tr><td align="left"><code class="filename">cwctype</code></td><td align="left"><code class="filename">stdatomic.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
In addition, TR1 includes as:
-</p><div class="table"><a id="id474709"></a><p class="title"><b>Table 3.5. C++ TR1 Library Headers</b></p><div class="table-contents"><table summary="C++ TR1 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id474193"></a><p class="title"><b>Table 3.6. C++ TR1 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ TR1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
+</p><div class="table"><a id="id532708"></a><p class="title"><b>Table 3.5. C++ TR1 Library Headers</b></p><div class="table-contents"><table summary="C++ TR1 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id490227"></a><p class="title"><b>Table 3.6. C++ TR1 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ TR1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
Also included are files for the C++ ABI interface:
-</p><div class="table"><a id="id466545"></a><p class="title"><b>Table 3.7. C++ ABI Headers</b></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
+</p><div class="table"><a id="id544125"></a><p class="title"><b>Table 3.7. C++ ABI Headers</b></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
And a large variety of extensions.
-</p><div class="table"><a id="id458800"></a><p class="title"><b>Table 3.8. Extension Headers</b></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id471622"></a><p class="title"><b>Table 3.9. Extension Debug Headers</b></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id475105"></a><p class="title"><b>Table 3.10. Extension Parallel Headers</b></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules.
+</p><div class="table"><a id="id533698"></a><p class="title"><b>Table 3.8. Extension Headers</b></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id421264"></a><p class="title"><b>Table 3.9. Extension Debug Headers</b></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id510258"></a><p class="title"><b>Table 3.10. Extension Parallel Headers</b></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules.
</p><p>First, mixing different dialects of the standard headers is not
possible. It's an all-or-nothing affair. Thus, code like
</p><pre class="programlisting">
@@ -98,4 +98,4 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
. /mnt/share/bld/H-x86-gcc.20071201/include/c++/4.3.0/iostream
. /mnt/share/bld/H-x86-gcc.20071201include/c++/4.3.0/string
</pre><p>The exclamation point to the left of the <code class="code">stdc++.h.gch</code> listing means that the generated PCH file was used, and thus the </p><p></p><p> Detailed information about creating precompiled header files can be found in the GCC <a class="ulink" href="http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html" target="_top">documentation</a>.
-</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch03s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 3. Using </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Namespaces</td></tr></table></div></body></html>
+</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_namespaces.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 3. Using </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Namespaces</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s04.html b/libstdc++-v3/doc/html/manual/using_macros.html
index 3d839e9afe3..1ff70f49405 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s04.html
+++ b/libstdc++-v3/doc/html/manual/using_macros.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Macros</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="bk01pt01ch03s03.html" title="Namespaces" /><link rel="next" href="bk01pt01ch03s05.html" title="Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Macros</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch03s03.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch03s05.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.macros"></a>Macros</h2></div></div></div><p>All pre-processor switches and configurations are all gathered
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Macros</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_namespaces.html" title="Namespaces" /><link rel="next" href="using_concurrency.html" title="Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Macros</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_namespaces.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_concurrency.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.macros"></a>Macros</h2></div></div></div><p>All pre-processor switches and configurations are all gathered
in the file <code class="code">c++config.h</code>, which is generated during
the libstdc++ configuration and build process, and included by
files part of the public libstdc++ API. Most of these macros
@@ -67,4 +67,4 @@
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_PARALLEL</code></span></dt><dd><p>Undefined by default. When defined, compiles
user code using the <a class="ulink" href="../ext/parallel_mode.html" target="_top">libstdc++ parallel
mode</a>.
- </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch03s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch03s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Namespaces </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Concurrency</td></tr></table></div></body></html>
+ </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_namespaces.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_concurrency.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Namespaces </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Concurrency</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s03.html b/libstdc++-v3/doc/html/manual/using_namespaces.html
index 2250ea69fec..f39feac521c 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s03.html
+++ b/libstdc++-v3/doc/html/manual/using_namespaces.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Namespaces</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="bk01pt01ch03s02.html" title="Headers" /><link rel="next" href="bk01pt01ch03s04.html" title="Macros" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Namespaces</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch03s02.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch03s04.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.namespaces"></a>Namespaces</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.all"></a>Available Namespaces</h3></div></div></div><p> There are three main namespaces.
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Namespaces</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_headers.html" title="Headers" /><link rel="next" href="using_macros.html" title="Macros" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Namespaces</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_headers.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_macros.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.namespaces"></a>Namespaces</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.all"></a>Available Namespaces</h3></div></div></div><p> There are three main namespaces.
</p><div class="itemizedlist"><ul type="disc"><li><p>std</p><p>The ISO C++ standards specify that "all library entities are defined
within namespace std." This includes namespaces nested
within <code class="code">namespace std</code>, such as <code class="code">namespace
@@ -58,4 +58,4 @@ namespace gtk
std::string;</code> (depending on whether the system has
libstdc++ in <code class="code">std::</code> or not). (ideas from
<code class="email">&lt;<a class="email" href="mailto:llewelly@dbritsch.dsl.xmission.com">llewelly@dbritsch.dsl.xmission.com</a>&gt;</code>, Karl Nelson <code class="email">&lt;<a class="email" href="mailto:kenelson@ece.ucdavis.edu">kenelson@ece.ucdavis.edu</a>&gt;</code>)
-</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch03s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch03s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Headers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Macros</td></tr></table></div></body></html>
+</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_headers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_macros.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Headers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Macros</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/utilities.html b/libstdc++-v3/doc/html/manual/utilities.html
index c67881bf3f1..83687f96a95 100644
--- a/libstdc++-v3/doc/html/manual/utilities.html
+++ b/libstdc++-v3/doc/html/manual/utilities.html
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IV. Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt03ch07s03.html" title="Cancellation" /><link rel="next" href="bk01pt04ch09.html" title="Chapter 9. Functors" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV. Utilities</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt04ch09.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.util"></a>Part IV. Utilities</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt04ch09.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="bk01pt04ch10.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="bk01pt04ch11.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt04ch11.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="bk01pt04ch12.html">12. Traits</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt04ch09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Cancellation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. Functors</td></tr></table></div></body></html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IV.  Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt03ch07s03.html" title="Cancellation" /><link rel="next" href="functors.html" title="Chapter 9. Functors" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV. 
+ Utilities
+
+</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="functors.html">Next</a></td></tr></table><hr /></div><div class="part" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="manual.util"></a>Part IV. 
+ Utilities
+ <a id="id497830" class="indexterm"></a>
+</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="traits.html">12. Traits</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="functors.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Cancellation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. Functors</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch16s02.html b/libstdc++-v3/doc/html/manual/vector.html
index f1561554143..2f80a7cda39 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch16s02.html
+++ b/libstdc++-v3/doc/html/manual/vector.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>vector</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt07ch16.html" title="Chapter 16. Sequences" /><link rel="prev" href="bk01pt07ch16.html" title="Chapter 16. Sequences" /><link rel="next" href="bk01pt07ch17.html" title="Chapter 17. Associative" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">vector</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt07ch16.html">Prev</a> </td><th width="60%" align="center">Chapter 16. Sequences</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt07ch17.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.sequences.vector"></a>vector</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>vector</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="sequences.html" title="Chapter 16. Sequences" /><link rel="prev" href="sequences.html" title="Chapter 16. Sequences" /><link rel="next" href="associative.html" title="Chapter 17. Associative" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">vector</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sequences.html">Prev</a> </td><th width="60%" align="center">Chapter 16. Sequences</th><td width="20%" align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.sequences.vector"></a>vector</h2></div></div></div><p>
</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sequences.vector.management"></a>Space Overhead Management</h3></div></div></div><p>
In <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html" target="_top">this
message to the list</a>, Daniel Kostecky announced work on an
@@ -13,4 +13,4 @@
The releases themselves are available at
<a class="ulink" href="http://www.kotelna.sk/dk/sw/caphint/" target="_top">
http://www.kotelna.sk/dk/sw/caphint/</a>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt07ch16.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt07ch16.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt07ch17.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 16. Sequences </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 17. Associative</td></tr></table></div></body></html>
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sequences.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sequences.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 16. Sequences </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 17. Associative</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch06s02.html b/libstdc++-v3/doc/html/manual/verbose_termination.html
index 9f3f4017e91..a941728337e 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch06s02.html
+++ b/libstdc++-v3/doc/html/manual/verbose_termination.html
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Verbose Terminate Handler</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02ch06.html" title="Chapter 6. Termination" /><link rel="prev" href="bk01pt02ch06.html" title="Chapter 6. Termination" /><link rel="next" href="diagnostics.html" title="Part III. Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Verbose Terminate Handler</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch06.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Termination</th><td width="20%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="support.termination.verbose"></a>Verbose Terminate Handler</h2></div></div></div><p>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Verbose Terminate Handler</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="termination.html" title="Chapter 6. Termination" /><link rel="prev" href="termination.html" title="Chapter 6. Termination" /><link rel="next" href="diagnostics.html" title="Part III.  Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Verbose Terminate Handler</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="termination.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Termination</th><td width="20%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="support.termination.verbose"></a>Verbose Terminate Handler</h2></div></div></div><p>
If you are having difficulty with uncaught exceptions and want a
little bit of help debugging the causes of the core dumps, you can
make use of a GNU extension, the verbose terminate handler.
@@ -73,4 +73,7 @@ int main(int argc)
inappropriate location,
<code class="function">__verbose_terminate_handler</code> will behave in
an unspecified manner.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02ch06.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 6. Termination </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part III. Diagnostics</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="termination.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="termination.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 6. Termination </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part III. 
+ Diagnostics
+
+</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/spine.html b/libstdc++-v3/doc/html/spine.html
index 01b26a40c91..4758fde84ec 100644
--- a/libstdc++-v3/doc/html/spine.html
+++ b/libstdc++-v3/doc/html/spine.html
@@ -1,5 +1,52 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="next" href="manual/spine.html" title="The GNU C++ Library" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Documentation</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr></table><hr /></div><div class="set" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"></a>The GNU C++ Library Documentation</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="next" href="manual/spine.html" title="The GNU C++ Library" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Documentation</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr></table><hr /></div><div class="set" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"></a>The GNU C++ Library Documentation</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
<a class="ulink" href="http://fsf.org" target="_top">FSF</a>
- </p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="book"><a href="manual/spine.html">The GNU C++ Library</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I. Introduction</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt01ch01.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt01ch01.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt01ch01.html#manual.intro.status.standard.1998">C++ 1998</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch01.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch01.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt01ch01s02.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt01ch01s02.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch01s02.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt01ch01s03.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt01ch01s03.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch01s03.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/bk01pt01ch02.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt01ch02.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt01ch02s03.html">Make</a></span></dt><dt><span class="sect1"><a href="manual/test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt01ch03s02.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt01ch03s02.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s02.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s02.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s02.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt01ch03s03.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt01ch03s03.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s03.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s03.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt01ch03s04.html">Macros</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt01ch03s05.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt01ch03s05.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s05.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s05.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s05.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s05.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt01ch03s06.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt01ch03s06.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s06.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt01ch03s06.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/support.html">II. Support</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="manual/bk01pt02ch04.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt02ch04.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt02ch05.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="manual/bk01pt02ch06.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt02ch06.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt02ch06s02.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/diagnostics.html">III. Diagnostics</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt03ch07.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt03ch07.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="manual/utilities.html">IV. Utilities</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt04ch09.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="manual/bk01pt04ch10.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="manual/bk01pt04ch11.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt04ch11.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt04ch11.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt04ch11.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt04ch11.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt04ch11.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt04ch11.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt04ch11.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="manual/auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/bk01pt04ch12.html">12. Traits</a></span></dt></dl></dd><dt><span class="part"><a href="manual/strings.html">V. Strings</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/localization.html">VI. Localization</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt06ch14.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt06ch14.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt06ch14.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt06ch14.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt06ch14.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt06ch14.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/bk01pt06ch15.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt06ch15.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt06ch15.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt06ch15.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/containers.html">VII. Containers</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt07ch16.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt07ch16.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt07ch16.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt07ch16s02.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt07ch16s02.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/bk01pt07ch17.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt07ch17.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt07ch17s02.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt07ch17s02.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt07ch17s02.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/bk01pt07ch18.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt07ch18.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/iterators.html">VIII. Iterators</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/algorithms.html">IX. Algorithms</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="manual/bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt09ch20.html#algorithms.mutating.swap">swap</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/numerics.html">X. Numerics</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt10ch21.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt10ch21.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt10ch22.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="manual/bk01pt10ch23.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt10ch23.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/io.html">XI. Input and Output</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt11ch24.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="manual/bk01pt11ch25.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt11ch25.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt11ch26.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt11ch26.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt11ch27.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt11ch27.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch27s02.html">Binary Input and Output</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch27s03.html">More Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt11ch28.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt11ch28.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/extensions.html">XII. Extensions</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="manual/bk01pt12ch29.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="manual/debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch30s04.html#manual.ext.debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch30s04.html#manual.ext.debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch30s04.html#manual.ext.debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch31s04.html#manual.ext.parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s04.html#manual.ext.parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s04.html#manual.ext.parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="manual/parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt12ch32.html">32. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt12ch32.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch32.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/bk01pt12ch33.html">33. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt12ch33.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch33s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch33s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt12ch34.html">34. Utilities</a></span></dt><dt><span class="chapter"><a href="manual/bk01pt12ch35.html">35. Algorithms</a></span></dt><dt><span class="chapter"><a href="manual/bk01pt12ch36.html">36. Numerics</a></span></dt><dt><span class="chapter"><a href="manual/bk01pt12ch37.html">37. Iterators</a></span></dt><dt><span class="chapter"><a href="manual/bk01pt12ch38.html">38. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt12ch38.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt12ch39.html">39. Demangling</a></span></dt><dt><span class="chapter"><a href="manual/concurrency.html">40. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="manual/concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch40s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch40s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch40s03.html">Use</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="manual/appendix_contributing.html">A. Contributing</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01apas02.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="manual/bk01apas03.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01apas03.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="manual/bk01apas03.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01apas04.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01apas04.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="manual/bk01apas04.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01apas05.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="manual/appendix_porting.html">B. Porting and Maintenance</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="manual/appendix_free.html">C. Free Software Needs Free Documentation</a></span></dt><dt><span class="appendix"><a href="manual/bk01apd.html">D. GNU General Public License</a></span></dt><dd><dl><dt><span class="section"><a href="manual/bk01apd.html#gpl-1">Preamble</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</a></span></dt><dd><dl><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-0">Section 0</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-1">Section 1</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-2">Section 2</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-3">Section 3</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-4">Section 4</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-5">Section 5</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-6">Section 6</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-7">Section 7</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-8">Section 8</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-9">Section 9</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-10">Section 10</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-11">NO WARRANTY Section 11</a></span></dt><dt><span class="section"><a href="manual/bk01apds02.html#gpl-2-12">Section 12</a></span></dt></dl></dd><dt><span class="section"><a href="manual/bk01apds03.html">How to Apply These Terms to Your New Programs</a></span></dt></dl></dd><dt><span class="appendix"><a href="manual/bk01ape.html">E. GNU Free Documentation License</a></span></dt></dl></dd><dt><span class="book"><a href="bk02.html"></a></span></dt><dd><dl><dt><span class="article"><a href="api.html">API and Source Level Documentation</a></span></dt></dl></dd><dt><span class="book"><a href="bk03.html"></a></span></dt><dd><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> The GNU C++ Library</td></tr></table></div></body></html>
+ </p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="book"><a href="manual/spine.html">The GNU C++ Library</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I.
+ Introduction
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/status.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/status.html#manual.intro.status.standard.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="manual/status.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="manual/status.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="manual/make.html">Make</a></span></dt><dt><span class="sect1"><a href="manual/test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/using.html#manual.intro.using.lib">Linking Library Binary Files</a></span></dt><dt><span class="sect1"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and namespace std</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Propagating Exceptions aka Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.no">Support for -fno-exceptions</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/debug.html#debug.compiler">Using g++</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.gdb">Using gdb</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/support.html">II.
+ Support
+
+</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="manual/fundamental_types.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/dynamic_memory.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="manual/termination.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="manual/verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/diagnostics.html">III.
+ Diagnostics
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="manual/utilities.html">IV.
+ Utilities
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="manual/pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="manual/memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="manual/auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/traits.html">12. Traits</a></span></dt></dl></dd><dt><span class="part"><a href="manual/strings.html">V.
+ Strings
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/localization.html">VI.
+ Localization
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/locales.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/locales.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/locales.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/locales.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/locales.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/locales.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/facets.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/containers.html">VII.
+ Containers
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/sequences.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/sequences.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/sequences.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/vector.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/vector.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/associative.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="manual/bitset.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bitset.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="manual/bitset.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/containers_and_c.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/iterators.html">VIII.
+ Iterators
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/algorithms.html">IX.
+ Algorithms
+
+</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="manual/bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt09ch20.html#algorithms.mutating.swap">swap</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/numerics.html">X.
+ Numerics
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/complex.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/complex.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/generalized_numeric_operations.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="manual/numerics_and_c.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/io.html">XI.
+ Input and Output
+
+</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/iostream_objects.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="manual/streambufs.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/stringstreams.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/stringstreams.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/fstreams.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/fstreams.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch27s02.html">Binary Input and Output</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch27s03.html">More Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/io_and_c.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/io_and_c.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/extensions.html">XII.
+ Extensions
+
+</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="manual/ext_compile_checks.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="manual/debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch30s04.html#manual.ext.debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch30s04.html#manual.ext.debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch30s04.html#manual.ext.debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch31s04.html#manual.ext.parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s04.html#manual.ext.parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s04.html#manual.ext.parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="manual/parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/ext_allocators.html">32. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/ext_containers.html">33. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch33s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch33s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/ext_utilities.html">34. Utilities</a></span></dt><dt><span class="chapter"><a href="manual/ext_algorithms.html">35. Algorithms</a></span></dt><dt><span class="chapter"><a href="manual/ext_numerics.html">36. Numerics</a></span></dt><dt><span class="chapter"><a href="manual/ext_iterators.html">37. Iterators</a></span></dt><dt><span class="chapter"><a href="manual/ext_io.html">38. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/ext_demangling.html">39. Demangling</a></span></dt><dt><span class="chapter"><a href="manual/ext_concurrency.html">40. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="manual/ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch40s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch40s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch40s03.html">Use</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="manual/appendix_contributing.html">A.
+ Contributing
+
+</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="manual/source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="manual/source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="manual/documentation_style.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="manual/appendix_porting.html">B.
+ Porting and Maintenance
+
+</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.enable">GLIBCXX_ENABLE, the --enable maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/api.html#api.rel_300">3.0</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_310">3.1</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_320">3.2</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_330">3.3</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_340">3.4</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_400">4.0</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_410">4.1</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_420">4.2</a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_430">4.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="manual/appendix_free.html">C.
+ Free Software Needs Free Documentation
+
+</a></span></dt><dt><span class="appendix"><a href="manual/appendix_gpl.html">D.
+ GNU General Public License version 3
+ </a></span></dt><dt><span class="appendix"><a href="manual/appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt><dt><span class="index"><a href="manual/bk01ix01.html">Index</a></span></dt></dl></dd><dt><span class="book"><a href="bk02.html"></a></span></dt><dd><dl><dt><span class="article"><a href="api.html">API and Source Level Documentation</a></span></dt></dl></dd><dt><span class="book"><a href="bk03.html"></a></span></dt><dd><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> The GNU C++ Library</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/xml/gnu/fdl-1.2.xml b/libstdc++-v3/doc/xml/gnu/fdl-1.2.xml
index 326d89db15f..8ad3a41c964 100644
--- a/libstdc++-v3/doc/xml/gnu/fdl-1.2.xml
+++ b/libstdc++-v3/doc/xml/gnu/fdl-1.2.xml
@@ -1,4 +1,5 @@
<appendix id="appendix.gfdl-1.2">
+ <?dbhtml filename="appendix_gfdl.html"?>
<title>GNU Free Documentation License</title>
<para>
Copyright (C) 2000, 2001, 2002 Free Software Foundation,
diff --git a/libstdc++-v3/doc/xml/gnu/gpl-3.0.xml b/libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
index ffd736ffca9..1d9a8c5894d 100644
--- a/libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
+++ b/libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
@@ -2,6 +2,7 @@
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<appendix id="appendix.gpl-3.0">
+ <?dbhtml filename="appendix_gpl.html"?>
<title>
<acronym>GNU</acronym> General Public License version 3
</title>
diff --git a/libstdc++-v3/doc/xml/manual/appendix_contributing.xml b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml
index e57ca08c964..f61b4534f97 100644
--- a/libstdc++-v3/doc/xml/manual/appendix_contributing.xml
+++ b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml
@@ -216,6 +216,7 @@
</sect1>
<sect1 id="contrib.organization" xreflabel="Source Organization">
+ <?dbhtml filename="source_organization.html"?>
<title>Directory Layout and Source Conventions</title>
<para>
@@ -313,6 +314,7 @@ indicate a place that may require attention for multi-thread safety.
</sect1>
<sect1 id="contrib.coding_style" xreflabel="Coding Style">
+ <?dbhtml filename="source_code_style.html"?>
<title>Coding Style</title>
<para>
</para>
@@ -911,6 +913,7 @@ indicate a place that may require attention for multi-thread safety.
</sect1>
<sect1 id="contrib.doc_style" xreflabel="Documentation Style">
+ <?dbhtml filename="documentation_style.html"?>
<title>Documentation Style</title>
<sect2 id="doc_style.doxygen" xreflabel="doc_style.doxygen">
<title>Doxygen</title>
@@ -1383,6 +1386,7 @@ table below.
</sect1>
<sect1 id="contrib.design_notes" xreflabel="Design Notes">
+ <?dbhtml filename="source_design_notes.html"?>
<title>Design Notes</title>
<para>
</para>
diff --git a/libstdc++-v3/doc/xml/manual/concurrency.xml b/libstdc++-v3/doc/xml/manual/concurrency.xml
index 7efc2956858..2a676eda3e1 100644
--- a/libstdc++-v3/doc/xml/manual/concurrency.xml
+++ b/libstdc++-v3/doc/xml/manual/concurrency.xml
@@ -4,7 +4,7 @@
[ ]>
<chapter id="manual.ext.concurrency" xreflabel="Concurrency Extensions">
-<?dbhtml filename="concurrency.html"?>
+<?dbhtml filename="ext_concurrency.html"?>
<chapterinfo>
<keywordset>
diff --git a/libstdc++-v3/doc/xml/manual/containers.xml b/libstdc++-v3/doc/xml/manual/containers.xml
index a860abae501..2b29ba6fca9 100644
--- a/libstdc++-v3/doc/xml/manual/containers.xml
+++ b/libstdc++-v3/doc/xml/manual/containers.xml
@@ -24,9 +24,11 @@
<!-- Chapter 01 : Sequences -->
<chapter id="manual.containers.sequences" xreflabel="Sequences">
+<?dbhtml filename="sequences.html"?>
<title>Sequences</title>
<sect1 id="containers.sequences.list" xreflabel="list">
+<?dbhtml filename="list.html"?>
<title>list</title>
<sect2 id="sequences.list.size" xreflabel="list::size() is O(n)">
<title>list::size() is O(n)</title>
@@ -80,6 +82,7 @@
</sect1>
<sect1 id="containers.sequences.vector" xreflabel="vector">
+<?dbhtml filename="vector.html"?>
<title>vector</title>
<para>
</para>
@@ -108,6 +111,7 @@
<!-- Chapter 02 : Associative -->
<chapter id="manual.containers.associative" xreflabel="Associative">
+<?dbhtml filename="associative.html"?>
<title>Associative</title>
<sect1 id="containers.associative.insert_hints" xreflabel="Insertion Hints">
@@ -219,6 +223,7 @@
<sect1 id="containers.associative.bitset" xreflabel="bitset">
+ <?dbhtml filename="bitset.html"?>
<title>bitset</title>
<sect2 id="associative.bitset.size_variable" xreflabel="Variable">
<title>Size Variable</title>
@@ -362,6 +367,7 @@
<!-- Chapter 03 : Interacting with C -->
<chapter id="manual.containers.c" xreflabel="Interacting with C">
+<?dbhtml filename="containers_and_c.html"?>
<title>Interacting with C</title>
<sect1 id="containers.c.vs_array" xreflabel="Containers vs. Arrays">
diff --git a/libstdc++-v3/doc/xml/manual/diagnostics.xml b/libstdc++-v3/doc/xml/manual/diagnostics.xml
index 3497f3c96f7..ebdc6c7a255 100644
--- a/libstdc++-v3/doc/xml/manual/diagnostics.xml
+++ b/libstdc++-v3/doc/xml/manual/diagnostics.xml
@@ -23,6 +23,7 @@
</title>
<chapter id="manual.diagnostics.exceptions" xreflabel="Exceptions">
+ <?dbhtml filename="exceptions.html"?>
<title>Exceptions</title>
<sect1 id="manual.diagnostics.exceptions.hierarchy" xreflabel="Exception Classes">
diff --git a/libstdc++-v3/doc/xml/manual/extensions.xml b/libstdc++-v3/doc/xml/manual/extensions.xml
index 0aa28c7103a..a0e75ccbb08 100644
--- a/libstdc++-v3/doc/xml/manual/extensions.xml
+++ b/libstdc++-v3/doc/xml/manual/extensions.xml
@@ -57,6 +57,7 @@ extensions, be aware of two things:
<!-- Chapter 01 : Compile Time Checks -->
<chapter id="manual.ext.compile_checks" xreflabel="Compile Time Checks">
+<?dbhtml filename="ext_compile_checks.html"?>
<title>Compile Time Checks</title>
<para>
Also known as concept checking.
@@ -115,6 +116,7 @@ extensions, be aware of two things:
<!-- Chapter 04 : Allocators -->
<chapter id="manual.ext.allocator" xreflabel="Allocators">
+<?dbhtml filename="ext_allocators.html"?>
<title>Allocators</title>
<!-- Section 01 : __mt_alloc -->
@@ -131,6 +133,7 @@ extensions, be aware of two things:
<!-- Chapter 05 : Containers -->
<chapter id="manual.ext.containers" xreflabel="Containers">
+<?dbhtml filename="ext_containers.html"?>
<title>Containers</title>
<para>
</para>
@@ -266,6 +269,7 @@ extensions, be aware of two things:
<!-- Chapter 06 : Utilities -->
<chapter id="manual.ext.util" xreflabel="Utilities">
+<?dbhtml filename="ext_utilities.html"?>
<title>Utilities</title>
<para>
The &lt;functional&gt; header contains many additional functors
@@ -335,6 +339,7 @@ get_temporary_buffer(5, (int*)0);
<!-- Chapter 07 : Algorithms -->
<chapter id="manual.ext.algorithms" xreflabel="Algorithms">
+<?dbhtml filename="ext_algorithms.html"?>
<title>Algorithms</title>
<para>25.1.6 (count, count_if) is extended with two more versions of count
and count_if. The standard versions return their results. The
@@ -372,6 +377,7 @@ get_temporary_buffer(5, (int*)0);
<!-- Chapter 08 : Numerics -->
<chapter id="manual.ext.numerics" xreflabel="Numerics">
+<?dbhtml filename="ext_numerics.html"?>
<title>Numerics</title>
<para>26.4, the generalized numeric operations such as accumulate, are extended
with the following functions:
@@ -396,6 +402,7 @@ get_temporary_buffer(5, (int*)0);
<!-- Chapter 09 : Iterators -->
<chapter id="manual.ext.iterators" xreflabel="Iterators">
+<?dbhtml filename="ext_iterators.html"?>
<title>Iterators</title>
<para>24.3.2 describes <code>struct iterator</code>, which didn't exist in the
original HP STL implementation (the language wasn't rich enough at the
@@ -419,6 +426,7 @@ get_temporary_buffer(5, (int*)0);
<!-- Chapter 08 : IO -->
<chapter id="manual.ext.io" xreflabel="IO">
+<?dbhtml filename="ext_io.html"?>
<title>Input and Output</title>
<para>
@@ -487,8 +495,9 @@ get_temporary_buffer(5, (int*)0);
</sect1>
</chapter>
-<!-- Chapter 11 : Demangling -->
+<!-- Chapter 09 : Demangling -->
<chapter id="manual.ext.demangle" xreflabel="Demangling">
+<?dbhtml filename="ext_demangling.html"?>
<title>Demangling</title>
<para>
Transforming C++ ABI identifiers (like RTTI symbols) into the
@@ -572,7 +581,7 @@ int main()
</para>
</chapter>
-<!-- Chapter 12 : Concurrency -->
+<!-- Chapter 10 : Concurrency -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="concurrency.xml">
</xi:include>
diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml
index d64d8b24dfc..7a5e7ce97b2 100644
--- a/libstdc++-v3/doc/xml/manual/intro.xml
+++ b/libstdc++-v3/doc/xml/manual/intro.xml
@@ -23,23 +23,24 @@
</title>
<!-- Chapter 01 : Status -->
<chapter id="manual.intro.status" xreflabel="Status">
+ <?dbhtml filename="status.html"?>
<title>Status</title>
-
- <sect1 id="manual.intro.status.standard" xreflabel="Implementation Status">
+ <!-- Section 01 : Implementation Status -->
+ <sect1 id="manual.intro.status.standard" xreflabel="Status">
<title>Implementation Status</title>
- <!-- Section 01 : Status C++ 1998 -->
+ <!-- Section 01.1 : Status C++ 1998 -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="status_cxx1998.xml">
</xi:include>
- <!-- Section 02 : Status C++ TR1 -->
+ <!-- Section 01.2 : Status C++ TR1 -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="status_cxxtr1.xml">
</xi:include>
- <!-- Section 03 : Status C++ 200x -->
+ <!-- Section 01.3 : Status C++ 200x -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
parse="xml" href="status_cxx200x.xml">
</xi:include>
@@ -47,6 +48,7 @@
<!-- Section 02 : License -->
<sect1 id="manual.intro.status.license" xreflabel="License">
+ <?dbhtml filename="license.html"?>
<title>License</title>
<para>
There are two licenses affecting GNU libstdc++: one for the code,
@@ -181,6 +183,7 @@ requirements of the license of GCC.
<!-- Section 03 : Known Bugs -->
<sect1 id="manual.intro.status.bugs" xreflabel="Bugs">
+ <?dbhtml filename="bugs.html"?>
<title>Bugs</title>
<sect2 id="manual.intro.status.bugs.impl" xreflabel="Bugs impl">
@@ -783,6 +786,7 @@ requirements of the license of GCC.
<!-- Chapter 02 : Setup -->
<chapter id="manual.intro.setup" xreflabel="Setup">
+ <?dbhtml filename="setup.html"?>
<title>Setup</title>
<para>To transform libstdc++ sources into installed include files
@@ -821,6 +825,7 @@ requirements of the license of GCC.
<!-- Section 03 : Make -->
<sect1 id="manual.intro.setup.make" xreflabel="Make">
+ <?dbhtml filename="make.html"?>
<title>Make</title>
<para>If you have never done this before, you should read the basic
<ulink url="http://gcc.gnu.org/install/">GCC Installation
diff --git a/libstdc++-v3/doc/xml/manual/io.xml b/libstdc++-v3/doc/xml/manual/io.xml
index 1108b0d864c..8431f6f4dfa 100644
--- a/libstdc++-v3/doc/xml/manual/io.xml
+++ b/libstdc++-v3/doc/xml/manual/io.xml
@@ -24,6 +24,7 @@
<!-- Chapter 01 : Iostream Objects -->
<chapter id="manual.io.objects" xreflabel="IO Objects">
+<?dbhtml filename="iostream_objects.html"?>
<title>Iostream Objects</title>
<para>To minimize the time you have to wait on the compiler, it's good to
@@ -160,6 +161,7 @@
<!-- Chapter 02 : Stream Buffers -->
<chapter id="manual.io.streambufs" xreflabel="Stream Buffers">
+<?dbhtml filename="streambufs.html"?>
<title>Stream Buffers</title>
<sect1 id="io.streambuf.derived" xreflabel="Derived streambuf Classes">
@@ -323,6 +325,7 @@
<!-- Chapter 03 : Memory-based Streams -->
<chapter id="manual.io.memstreams" xreflabel="Memory Streams">
+<?dbhtml filename="stringstreams.html"?>
<title>Memory Based Streams</title>
<sect1 id="manual.io.memstreams.compat" xreflabel="Compatibility strstream">
<title>Compatibility With strstream</title>
@@ -369,6 +372,7 @@
<!-- Chapter 04 : File-based Streams -->
<chapter id="manual.io.filestreams" xreflabel="File Streams">
+<?dbhtml filename="fstreams.html"?>
<title>File Based Streams</title>
<sect1 id="manual.io.filestreams.copying_a_file" xreflabel="Copying a File">
@@ -591,6 +595,7 @@
<!-- Chapter 03 : Interacting with C -->
<chapter id="manual.io.c" xreflabel="Interacting with C">
+<?dbhtml filename="io_and_c.html"?>
<title>Interacting with C</title>
diff --git a/libstdc++-v3/doc/xml/manual/locale.xml b/libstdc++-v3/doc/xml/manual/locale.xml
index 275534d3669..9cb0a17e6b2 100644
--- a/libstdc++-v3/doc/xml/manual/locale.xml
+++ b/libstdc++-v3/doc/xml/manual/locale.xml
@@ -1,5 +1,4 @@
<sect1 id="manual.localization.locales.locale" xreflabel="locale">
-<?dbhtml filename="locale.html"?>
<sect1info>
<keywordset>
diff --git a/libstdc++-v3/doc/xml/manual/localization.xml b/libstdc++-v3/doc/xml/manual/localization.xml
index 63fd315fa94..475bee18627 100644
--- a/libstdc++-v3/doc/xml/manual/localization.xml
+++ b/libstdc++-v3/doc/xml/manual/localization.xml
@@ -24,6 +24,7 @@
<!-- Chapter 01 : Locale -->
<chapter id="manual.localization.locales" xreflabel="Locales">
+<?dbhtml filename="locales.html"?>
<title>Locales</title>
<!-- Section 01 : locale -->
@@ -34,6 +35,7 @@
<!-- Chapter 02 : Facet -->
<chapter id="manual.localization.facet" xreflabel="facet">
+<?dbhtml filename="facets.html"?>
<title>Facets aka Categories</title>
<!-- Section 01 : ctype -->
diff --git a/libstdc++-v3/doc/xml/manual/numerics.xml b/libstdc++-v3/doc/xml/manual/numerics.xml
index 02b1f1da54b..13853146451 100644
--- a/libstdc++-v3/doc/xml/manual/numerics.xml
+++ b/libstdc++-v3/doc/xml/manual/numerics.xml
@@ -24,6 +24,7 @@
<!-- Chapter 01 : Complex -->
<chapter id="manual.numerics.complex" xreflabel="complex">
+<?dbhtml filename="complex.html"?>
<title>Complex</title>
<para>
</para>
@@ -53,6 +54,7 @@
<!-- Chapter 02 : Generalized Operations -->
<chapter id="manual.numerics.generalized_ops" xreflabel="Generalized Ops">
+<?dbhtml filename="generalized_numeric_operations.html"?>
<title>Generalized Operations</title>
<para>
</para>
@@ -95,6 +97,7 @@
<!-- Chapter 03 : Interacting with C -->
<chapter id="manual.numerics.c" xreflabel="Interacting with C">
+<?dbhtml filename="numerics_and_c.html"?>
<title>Interacting with C</title>
<sect1 id="numerics.c.array" xreflabel="Numerics vs. Arrays">
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml
index fc22af00d3b..dde3cc06c6e 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml
@@ -1,5 +1,5 @@
-<sect2 id="manual.intro.status.standard.1998" xreflabel="Status C++ 1998">
-<?dbhtml filename="standard_cxx1998.html"?>
+<sect2 id="manual.intro.status.standard.1998" xreflabel="ISO C++ 1998">
+<?dbhtml filename="status_iso_cxx1998.html"?>
<sect2info>
<keywordset>
@@ -12,6017 +12,1026 @@
</keywordset>
</sect2info>
-<title>C++ 1998</title>
-
-<sect3 id="standard.1998" xreflabel="Status C++ 1998">
- <title>Checklist</title>
-
-<literallayout>
- Completion Checklist for the Standard C++ Library
- Updated: 2003-04-25
-
- Status Code Legend:
- M - Missing
- S - Present as stub.
- X - Partially implemented, or buggy.
- T - Implemented, pending test/inspection.
- V - Verified to pass all available test suites.
- Q - Qualified by inspection for non-testable correctness.
- P - Portability verified.
- C - Certified.
-
- Lexical notes:
- Only status codes appear in column 0. Notes relating to conformance
- issues appear [in brackets].
-
- Note that this checklist does not (yet) include all emendations
- recommended by the ISO Library Working Group:
- http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-toc.html
-
- Detailed explanation of status codes:
-
- M - Missing: The name is not visible to programs that include
- the specified header, either at compile or link stage.
-
- S - Present as stub: A program can use the name, but no implementation
- is provided. Programs that use the name link correctly, but
- cannot usefully be run.
-
- X - Partially implemented, or buggy: Some implementation has been
- provided, but it is known or believed not to conform fully.
- It may have an incorrect base class, wrong namespace, wrong
- storage class, or simply not fully implement requirements.
- However, it may be sufficiently usable to help test other
- components.
-
- T - Implemented, pending test/inspection: Implementation believed
- to be complete, and informal testing suggests it is ready for
- formal verification.
-
- V - Verified, passes all test suites: Verified to satisfy all
- generically testable conformance requirements.
-
- Q - Qualified by inspection for non-testable correctness:
- Inspected, "implementation-defined" documentation accepted,
- local usability criteria satisfied, formally inspected for
- other untestable conformance. (Untestable requirements
- include exception-safety, thread-safety, worst-case
- complexity, memory cleanliness, usefulness.)
-
- P - Portability verified: Qualified on all primary target platforms.
-
- C - Certified: Formally certified to have passed all tests,
- inspections, qualifications; approved under "signing authority"
- to be used to satisfy contractual guarantees.
-
- ----------------------------------------------------------------------
- &lt;algorithm&gt; &lt;iomanip&gt; &lt;list&gt; &lt;ostream&gt; &lt;streambuf&gt;
- &lt;bitset&gt; &lt;ios&gt; &lt;locale&gt; &lt;queue&gt; &lt;string&gt;
- &lt;complex&gt; &lt;iosfwd&gt; &lt;map&gt; &lt;set&gt; &lt;typeinfo&gt;
-X &lt;deque&gt; &lt;iostream&gt; &lt;memory&gt; &lt;sstream&gt; &lt;utility&gt;
- &lt;exception&gt; &lt;istream&gt; &lt;new&gt; &lt;stack&gt; &lt;valarray&gt;
- &lt;fstream&gt; &lt;iterator&gt; &lt;numeric&gt; &lt;stdexcept&gt; &lt;vector&gt;
- &lt;functional&gt; &lt;limits&gt;
-
- [C header names must be in std:: to qualify. Related to shadow/ dir.]
- &lt;cassert&gt; &lt;ciso646&gt; &lt;csetjmp&gt; &lt;cstdio&gt; &lt;ctime&gt;
- &lt;cctype&gt; &lt;climits&gt; &lt;csignal&gt; &lt;cstdlib&gt; &lt;cwchar&gt;
-X &lt;cerrno&gt; &lt;clocale&gt; &lt;cstdarg&gt; &lt;cstring&gt; &lt;cwctype&gt;
- &lt;cfloat&gt; &lt;cmath&gt; &lt;cstddef&gt;
-
- Macro:
-X errno, declared or defined in &lt;cerrno&gt;.
-
- Macro fn:
-X setjmp(jmp_buf), declared or defined in &lt;csetjmp&gt;
-X va_end(va_list), declared or defined in &lt;cstdarg&gt;
-
- Types:
-X clock_t, div_t, FILE, fpos_t, lconv, ldiv_t, mbstate_t,
-X ptrdiff_t, sig_atomic_t, size_t, time_t, tm, va_list,
-X wctrans_t, wctype_t, and wint_t.
-
- 1 Which of the functions in the C++ Standard Library are not reentrant
- subroutines is implementation-defined.
-
- 18.1 Types [lib.support.types]
-X &lt;cstddef&gt;
-X NULL
-X offsetof
-X ptrdiff_t
-X size_t
-
- 18.2 Implementation properties [lib.support.limits]
-
- &lt;limits&gt;, &lt;climits&gt;, and &lt;cfloat&gt;
-
- 18.2.1 Numeric limits [lib.limits]
-
-X template&lt;class T&gt; class numeric_limits;
-
-T enum float_round_style;
-T enum float_denorm_style;
-
-T template&lt;&gt; class numeric_limits&lt;bool&gt;;
-
-T template&lt;&gt; class numeric_limits&lt;char&gt;;
-T template&lt;&gt; class numeric_limits&lt;signed char&gt;;
-T template&lt;&gt; class numeric_limits&lt;unsigned char&gt;;
-T template&lt;&gt; class numeric_limits&lt;wchar_t&gt;;
-
-T template&lt;&gt; class numeric_limits&lt;short&gt;;
-T template&lt;&gt; class numeric_limits&lt;int&gt;;
-T template&lt;&gt; class numeric_limits&lt;long&gt;;
-T template&lt;&gt; class numeric_limits&lt;unsigned short&gt;;
-T template&lt;&gt; class numeric_limits&lt;unsigned int&gt;;
-T template&lt;&gt; class numeric_limits&lt;unsigned long&gt;;
-
-X template&lt;&gt; class numeric_limits&lt;float&gt;;
-X template&lt;&gt; class numeric_limits&lt;double&gt;;
-X template&lt;&gt; class numeric_limits&lt;long double&gt;;
-
- 18.2.1.1 Template class numeric_limits [lib.numeric.limits]
-T template&lt;class T&gt; class numeric_limits {
- public:
-T static const bool is_specialized = false;
-T static T min() throw();
-T static T max() throw();
-T static const int digits = 0;
-T static const int digits10 = 0;
-T static const bool is_signed = false;
-T static const bool is_integer = false;
-T static const bool is_exact = false;
-T static const int radix = 0;
-T static T epsilon() throw();
-T static T round_error() throw();
-
-T static const int min_exponent = 0;
-T static const int min_exponent10 = 0;
-T static const int max_exponent = 0;
-T static const int max_exponent10 = 0;
-
-T static const bool has_infinity = false;
-T static const bool has_quiet_NaN = false;
-T static const bool has_signaling_NaN = false;
-T static const float_denorm_style has_denorm = denorm_absent;
-T static const bool has_denorm_loss = false;
-T static T infinity() throw();
-T static T quiet_NaN() throw();
-T static T signaling_NaN() throw();
-T static T denorm_min() throw();
-
-T static const bool is_iec559 = false;
-T static const bool is_bounded = false;
-T static const bool is_modulo = false;
-
-T static const bool traps = false;
-T static const bool tinyness_before = false;
-T static const float_round_style round_style = round_toward_zero;
- };
-
- 18.2.1.3 Type float_round_style [lib.round.style]
-
-T enum float_round_style {
-T round_indeterminate = -1,
-T round_toward_zero = 0,
-T round_to_nearest = 1,
-T round_toward_infinity = 2,
-T round_toward_neg_infinity = 3
- };
-
- 18.2.1.4 Type float_denorm_style [lib.denorm.style]
-
-T enum float_denorm_style {
-T denorm_indeterminate = -1;
-T denorm_absent = 0;
-T denorm present = 1;
- };
-
- 18.2.1.5 numeric_limits specializations [lib.numeric.special]
-
- [Note: see Note at 18.2.1. ]
-
- 18.2.2 C Library [lib.c.limits]
-
- 1 Header &lt;climits&gt; (Table 3):
- CHAR_BIT INT_MAX LONG_MIN SCHAR_MIN UCHAR_MAX USHRT_MAX
-X CHAR_MAX INT_MIN MB_LEN_MAX SHRT_MAX UINT_MAX
- CHAR_MIN LONG_MAX SCHAR_MAX SHRT_MIN ULONG_MAX
-
- 3 Header &lt;cfloat&gt; (Table 4):
-
- DBL_DIG DBL_MIN_EXP FLT_MIN_10_EXP LDBL_MAX_10_EXP
- DBL_EPSILON FLT_DIG FLT_MIN_EXP LDBL_MAX_EXP
- DBL_MANT_DIG FLT_EPSILON FLT_RADIX LDBL_MIN
-X DBL_MAX FLT_MANT_DIG FLT_ROUNDS LDBL_MIN_10_EXP
- DBL_MAX_10_EXP FLT_MAX LDBL_DIG LDBL_MIN_EXP
- DBL_MAX_EXP FLT_MAX_10_EXP LDBL_EPSILON
- DBL_MIN FLT_MAX_EXP LDBL_MANT_DIG
- DBL_MIN_10_EXP FLT_MIN LDBL_MAX
-
-
- 1 Header &lt;cstdlib&gt; (partial), Table 5:
-X EXIT_FAILURE EXIT_SUCCESS
- abort atexit exit
-
-S abort(void)
-S extern "C" int atexit(void (*f)(void))
-S extern "C++" int atexit(void (*f)(void))
-S exit(int status)
-
- 18.4 Dynamic memory management [lib.support.dynamic]
-
- Header &lt;new&gt; synopsis
-
-T class bad_alloc;
-T struct nothrow_t {};
-T extern const nothrow_t nothrow;
-T typedef void (*new_handler)();
-T new_handler set_new_handler(new_handler new_p) throw();
-
-T void* operator new(std::size_t size) throw(std::bad_alloc);
-T void* operator new(std::size_t size, const std::nothrow_t&amp;) throw();
-T void operator delete(void* ptr) throw();
-T void operator delete(void* ptr, const std::nothrow_t&amp;) throw();
-T void* operator new[](std::size_t size) throw(std::bad_alloc);
-T void* operator new[](std::size_t size, const std::nothrow_t&amp;) throw();
-T void operator delete[](void* ptr) throw();
-T void operator delete[](void* ptr, const std::nothrow_t&amp;) throw();
-T void* operator new (std::size_t size, void* ptr) throw();
-T void* operator new[](std::size_t size, void* ptr) throw();
-T void operator delete (void* ptr, void*) throw();
-T void operator delete[](void* ptr, void*) throw();
-
- 18.4.2.1 Class bad_alloc [lib.bad.alloc]
-
-T class bad_alloc : public exception {
- public:
-T bad_alloc() throw();
-T bad_alloc(const bad_alloc&amp;) throw();
-T bad_alloc&amp; operator=(const bad_alloc&amp;) throw();
-T virtual ~bad_alloc() throw();
-T virtual const char* what() const throw();
-
-
-
-T new_handler set_new_handler(new_handler new_p) throw();
-
-
- Header &lt;typeinfo&gt; synopsis
-
-T class type_info;
-T class bad_cast;
-T class bad_typeid;
-
- 18.5.1 - Class type_info [lib.type.info]
-
-T class type_info {
- public:
-T virtual ~type_info();
-T bool operator==(const type_info&amp; rhs) const;
-T bool operator!=(const type_info&amp; rhs) const;
-T bool before(const type_info&amp; rhs) const;
-T const char* name() const;
- private:
-T type_info(const type_info&amp; rhs);
-T type_info&amp; operator=(const type_info&amp; rhs);
- };
-
- 18.5.2 - Class bad_cast [lib.bad.cast]
-
-T bad_cast() throw();
-T virtual const char* bad_cast::what() const throw();
-
- 18.5.3 Class bad_typeid [lib.bad.typeid]
-
-T class bad_typeid : public exception {
- public:
-T bad_typeid() throw();
-T bad_typeid(const bad_typeid&amp;) throw();
-T bad_typeid&amp; operator=(const bad_typeid&amp;) throw();
-T virtual ~bad_typeid() throw();
-T virtual const char* what() const throw();
- };
-
- 18.6 Exception handling [lib.support.exception]
-
-T Header &lt;exception&gt; synopsis
-
-T class exception;
-T class bad_exception;
-
-T typedef void (*unexpected_handler)();
-T unexpected_handler set_unexpected(unexpected_handler f) throw();
-T void unexpected();
-T typedef void (*terminate_handler)();
-T terminate_handler set_terminate(terminate_handler f) throw();
-T void terminate();
-T bool uncaught_exception();
-
- 18.6.1 Class exception [lib.exception]
-
-T class exception {
- public:
-T exception() throw();
-T exception(const exception&amp;) throw();
-T exception&amp; operator=(const exception&amp;) throw();
-T virtual ~exception() throw();
-T virtual const char* what() const throw();
- };
-
- 18.6.2.1 Class bad_exception [lib.bad.exception]
-T class bad_exception : public exception {
- public:
-T bad_exception() throw();
-T bad_exception(const bad_exception&amp;) throw();
-T bad_exception&amp; operator=(const bad_exception&amp;) throw();
-T virtual ~bad_exception() throw();
-T virtual const char* what() const throw();
- };
-
- 18.7 Other runtime support [lib.support.runtime]
-
- 1 Headers &lt;cstdarg&gt; (variable arguments), &lt;csetjmp&gt; (nonlocal jumps),
- &lt;ctime&gt; (system clock clock(), time()), &lt;csignal&gt; (signal handling),
- and &lt;cstdlib&gt; (runtime environment getenv(), system()).
-
- Table 6--Header &lt;cstdarg&gt; synopsis
- Macros: va_arg va_end va_start
-X Type: va_list
-
- Table 7--Header &lt;csetjmp&gt; synopsis
-
- Macro: setjmp |
-X Type: jmp_buf
- Function: longjmp
-
- Table 8--Header &lt;ctime&gt; synopsis
-
- Macros: CLOCKS_PER_SEC
-X Types: clock_t
- Functions: clock
-
- Table 9--Header &lt;csignal&gt; synopsis
-
-X Macros: SIGABRT SIGILL SIGSEGV SIG_DFL
- SIG_IGN SIGFPE SIGINT SIGTERM SIG_ERR
- Type: sig_atomic_t
- Functions: raise signal
-
- Table 10--Header &lt;cstdlib&gt; synopsis
-
-X Functions: getenv system
-
- 19.1 Exception classes [lib.std.exceptions]
-
- Header &lt;stdexcept&gt; synopsis
-
-T class logic_error;
-T class domain_error;
-T class invalid_argument;
-T class length_error;
-T class out_of_range;
-T class runtime_error;
-T class range_error;
-T class overflow_error;
-T class underflow_error;
-
- 19.1.1 Class logic_error [lib.logic.error]
-T class logic_error : public exception {
- public:
-T explicit logic_error(const string&amp; what_arg);
- };
-
- 19.1.2 Class domain_error [lib.domain.error]
-
-T class domain_error : public logic_error {
- public:
-T explicit domain_error(const string&amp; what_arg);
- };
-
- 19.1.3 Class invalid_argument [lib.invalid.argument]
-
-T class invalid_argument : public logic_error {
- public:
-T explicit invalid_argument(const string&amp; what_arg);
- };
-
- 19.1.4 Class length_error [lib.length.error]
-
-T class length_error : public logic_error {
- public:
-T explicit length_error(const string&amp; what_arg);
- };
-
- 19.1.5 Class out_of_range [lib.out.of.range]
-
-T class out_of_range : public logic_error {
- public:
-T explicit out_of_range(const string&amp; what_arg);
- };
-
-
- 19.1.6 Class runtime_error [lib.runtime.error]
-
-T class runtime_error : public exception {
- public:
-T explicit runtime_error(const string&amp; what_arg);
- };
-
-
- 19.1.7 Class range_error [lib.range.error]
-
-T class range_error : public runtime_error {
- public:
-T explicit range_error(const string&amp; what_arg);
- };
-
- 19.1.8 Class overflow_error [lib.overflow.error]
-
-T class overflow_error : public runtime_error {
- public:
-T explicit overflow_error(const string&amp; what_arg);
- };
-
-
- 19.1.9 Class underflow_error [lib.underflow.error]
-
-T class underflow_error : public runtime_error {
- public:
-T explicit underflow_error(const string&amp; what_arg);
- };
-
-
- 19.2 Assertions [lib.assertions]
-
- Table 2--Header &lt;cassert&gt; synopsis
-
-X Macro: assert
-
- 19.3 Error numbers [lib.errno]
-
- Table 3--Header &lt;cerrno&gt; synopsis
-
-X |Macros: EDOM ERANGE errno |
-
-
- 20.2 Utility components [lib.utility]
-
- Header &lt;utility&gt; synopsis
-
- // _lib.operators_, operators:
-T namespace rel_ops {
-T template&lt;class T&gt; bool operator!=(const T&amp;, const T&amp;);
-T template&lt;class T&gt; bool operator&gt; (const T&amp;, const T&amp;);
-T template&lt;class T&gt; bool operator&lt;=(const T&amp;, const T&amp;);
-T template&lt;class T&gt; bool operator&gt;=(const T&amp;, const T&amp;);
- }
- // _lib.pairs_, pairs:
-T template &lt;class T1, class T2&gt; struct pair;
-T template &lt;class T1, class T2&gt;
- bool operator==(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);
-T template &lt;class T1, class T2&gt;
- bool operator&lt; (const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);
-T template &lt;class T1, class T2&gt;
- bool operator!=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);
-T template &lt;class T1, class T2&gt;
- bool operator&gt; (const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);
-T template &lt;class T1, class T2&gt;
- bool operator&gt;=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);
-T template &lt;class T1, class T2&gt;
- bool operator&lt;=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);
-T template &lt;class T1, class T2&gt; pair&lt;T1,T2&gt; make_pair(const T1&amp;, const T2&amp;);
-
-
- 20.2.2 Pairs [lib.pairs]
-
-T template &lt;class T1, class T2&gt;
- struct pair {
-T typedef T1 first_type;
-T typedef T2 second_type;
-
-T T1 first;
-T T2 second;
-T pair();
-T pair(const T1&amp; x, const T2&amp; y);
-T template&lt;class U, class V&gt; pair(const pair&lt;U, V&gt; &amp;p);
- };
-
- 20.3 Function objects [lib.function.objects]
-
- Header &lt;functional&gt; synopsis
-
- // _lib.base_, base:
-V template &lt;class Arg, class Result&gt; struct unary_function;
-V template &lt;class Arg1, class Arg2, class Result&gt; struct binary_function;
-
- // _lib.arithmetic.operations_, arithmetic operations:
-V template &lt;class T&gt; struct plus;
-V template &lt;class T&gt; struct minus;
-V template &lt;class T&gt; struct multiplies;
-V template &lt;class T&gt; struct divides;
-V template &lt;class T&gt; struct modulus;
-V template &lt;class T&gt; struct negate;
- // _lib.comparisons_, comparisons:
-V template &lt;class T&gt; struct equal_to;
-V template &lt;class T&gt; struct not_equal_to;
-V template &lt;class T&gt; struct greater;
-V template &lt;class T&gt; struct less;
-V template &lt;class T&gt; struct greater_equal;
-V template &lt;class T&gt; struct less_equal;
- // _lib.logical.operations_, logical operations:
-V template &lt;class T&gt; struct logical_and;
-V template &lt;class T&gt; struct logical_or;
-V template &lt;class T&gt; struct logical_not;
- // _lib.negators_, negators:
- template &lt;class Predicate&gt; struct unary_negate;
-V template &lt;class Predicate&gt;
- unary_negate&lt;Predicate&gt; not1(const Predicate&amp;);
-V template &lt;class Predicate&gt; struct binary_negate;
-V template &lt;class Predicate&gt;
- binary_negate&lt;Predicate&gt; not2(const Predicate&amp;);
- // _lib.binders_, binders:
-V template &lt;class Operation&gt; class binder1st;
-V template &lt;class Operation, class T&gt;
- binder1st&lt;Operation&gt; bind1st(const Operation&amp;, const T&amp;);
-V template &lt;class Operation&gt; class binder2nd;
-V template &lt;class Operation, class T&gt;
- binder2nd&lt;Operation&gt; bind2nd(const Operation&amp;, const T&amp;);
- // _lib.function.pointer.adaptors_, adaptors:
-V template &lt;class Arg, class Result&gt; class pointer_to_unary_function;
-V template &lt;class Arg, class Result&gt;
- pointer_to_unary_function&lt;Arg,Result&gt; ptr_fun(Result (*)(Arg));
-V template &lt;class Arg1, class Arg2, class Result&gt;
- class pointer_to_binary_function;
-V template &lt;class Arg1, class Arg2, class Result&gt;
- pointer_to_binary_function&lt;Arg1,Arg2,Result&gt;
- ptr_fun(Result (*)(Arg1,Arg2));
-
- // _lib.member.pointer.adaptors_, adaptors:
-V template&lt;class S, class T&gt; class mem_fun_t;
-V template&lt;class S, class T, class A&gt; class mem_fun1_t;
-V template&lt;class S, class T&gt;
- mem_fun_t&lt;S,T&gt; mem_fun(S (T::*f)());
-V template&lt;class S, class T, class A&gt;
- mem_fun1_t&lt;S,T,A&gt; mem_fun(S (T::*f)(A));
-V template&lt;class S, class T&gt; class mem_fun_ref_t;
-V template&lt;class S, class T, class A&gt; class mem_fun1_ref_t;
-V template&lt;class S, class T&gt;
- mem_fun_ref_t&lt;S,T&gt; mem_fun_ref(S (T::*f)());
-V template&lt;class S, class T, class A&gt;
- mem_fun1_ref_t&lt;S,T,A&gt; mem_fun_ref(S (T::*f)(A));
-
-V template &lt;class S, class T&gt; class const_mem_fun_t;
-V template &lt;class S, class T, class A&gt; class const_mem_fun1_t;
-V template &lt;class S, class T&gt;
- const_mem_fun_t&lt;S,T&gt; mem_fun(S (T::*f)() const);
-V template &lt;class S, class T, class A&gt;
- const_mem_fun1_t&lt;S,T,A&gt; mem_fun(S (T::*f)(A) const);
-V template &lt;class S, class T&gt; class const_mem_fun_ref_t;
-V template &lt;class S, class T, class A&gt; class const_mem_fun1_ref_t;
-V template &lt;class S, class T&gt;
- const_mem_fun_ref_t&lt;S,T&gt; mem_fun_ref(S (T::*f)() const);
-V template &lt;class S, class T, class A&gt;
- const_mem_fun1_ref_t&lt;S,T,A&gt; mem_fun_ref(S (T::*f)(A) const);
- }
-
- 20.3.1 Base [lib.base]
-
-V template &lt;class Arg, class Result&gt;
- struct unary_function {
-V typedef Arg argument_type;
-V typedef Result result_type;
- };
-V template &lt;class Arg1, class Arg2, class Result&gt;
- struct binary_function {
-V typedef Arg1 first_argument_type;
-V typedef Arg2 second_argument_type;
-V typedef Result result_type;
- };
-
- 20.3.2 Arithmetic operations [lib.arithmetic.operations]
-
-T template &lt;class T&gt; struct plus : binary_function&lt;T,T,T&gt; {
-V T operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct minus : binary_function&lt;T,T,T&gt; {
-V T operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct multiplies : binary_function&lt;T,T,T&gt; {
-V T operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct divides : binary_function&lt;T,T,T&gt; {
-V T operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct modulus : binary_function&lt;T,T,T&gt; {
-V T operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct negate : unary_function&lt;T,T&gt; {
-V T operator()(const T&amp; x) const;
- };
-
- 20.3.3 Comparisons [lib.comparisons]
-
-T template &lt;class T&gt; struct equal_to : binary_function&lt;T,T,bool&gt; {
-V bool operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct not_equal_to : binary_function&lt;T,T,bool&gt; {
-V bool operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct greater : binary_function&lt;T,T,bool&gt; {
-V bool operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct less : binary_function&lt;T,T,bool&gt; {
-V bool operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct greater_equal : binary_function&lt;T,T,bool&gt; {
-V bool operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct less_equal : binary_function&lt;T,T,bool&gt; {
-V bool operator()(const T&amp; x, const T&amp; y) const;
- };
-
- 20.3.4 Logical operations [lib.logical.operations]
-
-T template &lt;class T&gt; struct logical_and : binary_function&lt;T,T,bool&gt; {
-V bool operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct logical_or : binary_function&lt;T,T,bool&gt; {
-V bool operator()(const T&amp; x, const T&amp; y) const;
- };
-
-T template &lt;class T&gt; struct logical_not : unary_function&lt;T,bool&gt; {
-V bool operator()(const T&amp; x) const;
- };
-
- 20.3.5 Negators [lib.negators]
-
-T template &lt;class Predicate&gt;
- class unary_negate
- : public unary_function&lt;typename Predicate::argument_type,bool&gt; {
- public:
-T explicit unary_negate(const Predicate&amp; pred);
-V bool operator()(const typename Predicate::argument_type&amp; x) const;
- };
-
-T template &lt;class Predicate&gt;
- class binary_negate
- : public binary_function&lt;typename Predicate::first_argument_type,
- typename Predicate::second_argument_type, bool&gt; {
- public:
-T explicit binary_negate(const Predicate&amp; pred);
-V bool operator()(const typename Predicate::first_argument_type&amp; x,
- const typename Predicate::second_argument_type&amp; y) const;
- };
-
-
- 20.3.6 Binders [lib.binders]
-
- 20.3.6.1 Template class binder1st [lib.binder.1st]
-T template &lt;class Operation&gt;
- class binder1st
- : public unary_function&lt;typename Operation::second_argument_type,
- typename Operation::result_type&gt; {
- protected:
-T Operation op;
-T typename Operation::first_argument_type value;
- public:
-V binder1st(const Operation&amp; x,
- const typename Operation::first_argument_type&amp; y);
-V typename Operation::result_type
- operator()(const typename Operation::second_argument_type&amp; x) const;
- };
-
- 20.3.6.2 bind1st [lib.bind.1st]
-
-V template &lt;class Operation, class T&gt;
- binder1st&lt;Operation&gt; bind1st(const Operation&amp; op, const T&amp; x);
-
- 20.3.6.3 Template class binder2nd [lib.binder.2nd]
-T template &lt;class Operation&gt;
- class binder2nd
- : public unary_function&lt;typename Operation::first_argument_type,
- typename Operation::result_type&gt; {
- protected:
-T Operation op;
-T typename Operation::second_argument_type value;
- public:
-V binder2nd(const Operation&amp; x,
- const typename Operation::second_argument_type&amp; y);
-V typename Operation::result_type
- operator()(const typename Operation::first_argument_type&amp; x) const;
- };
-
- 20.3.6.4 bind2nd [lib.bind.2nd]
-
-T template &lt;class Operation, class T&gt;
- binder2nd&lt;Operation&gt; bind2nd(const Operation&amp; op, const T&amp; x);
-
-
- 20.3.7 Adaptors for pointers to [lib.function.pointer.adaptors]
- functions
-
- 1 To allow pointers to (unary and binary) functions to work with func-
- tion adaptors the library provides:
-
-T template &lt;class Arg, class Result&gt;
- class pointer_to_unary_function : public unary_function&lt;Arg, Result&gt; {
- public:
-T explicit pointer_to_unary_function(Result (*f)(Arg));
-V Result operator()(Arg x) const;
- };
-
-T template &lt;class Arg, class Result&gt;
- pointer_to_unary_function&lt;Arg, Result&gt; ptr_fun(Result (*f)(Arg));
-
-T template &lt;class Arg1, class Arg2, class Result&gt;
- class pointer_to_binary_function :
- public binary_function&lt;Arg1,Arg2,Result&gt; {
- public:
-T explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2));
-V Result operator()(Arg1 x, Arg2 y) const;
- };
-
-
- 20.3.8 Adaptors for pointers to [lib.member.pointer.adaptors]
- members
-
-T template &lt;class S, class T&gt; class mem_fun_t
- : public unary_function&lt;T*, S&gt; {
- public:
-T explicit mem_fun_t(S (T::*p)());
-V S operator()(T* p) const;
- };
-
-T template &lt;class S, class T, class A&gt; class mem_fun1_t
- : public binary_function&lt;T*, A, S&gt; {
- public:
-T explicit mem_fun1_t(S (T::*p)(A));
-V S operator()(T* p, A x) const;
- };
-
-V template&lt;class S, class T&gt; mem_fun_t&lt;S,T&gt;
- mem_fun(S (T::*f)());
-V template&lt;class S, class T, class A&gt; mem_fun1_t&lt;S,T,A&gt;
- mem_fun(S (T::*f)(A));
-
-T template &lt;class S, class T&gt; class mem_fun_ref_t
- : public unary_function&lt;T, S&gt; {
- public:
-T explicit mem_fun_ref_t(S (T::*p)());
-V S operator()(T&amp; p) const;
- };
-
-T template &lt;class S, class T, class A&gt; class mem_fun1_ref_t
- : public binary_function&lt;T, A, S&gt; {
- public:
-T explicit mem_fun1_ref_t(S (T::*p)(A));
-V S operator()(T&amp; p, A x) const;
- };
-
-T template&lt;class S, class T&gt; mem_fun_ref_t&lt;S,T&gt;
- mem_fun_ref(S (T::*f)());
-
-T template&lt;class S, class T, class A&gt; mem_fun1_ref_t&lt;S,T,A&gt;
- mem_fun_ref(S (T::*f)(A));
-
-T template &lt;class S, class T&gt; class const_mem_fun_t
- : public unary_function&lt;T*, S&gt; {
- public:
-T explicit const_mem_fun_t(S (T::*p)() const);
-V S operator()(const T* p) const;
- };
-
-T template &lt;class S, class T, class A&gt; class const_mem_fun1_t
- : public binary_function&lt;T*, A, S&gt; {
- public:
-T explicit const mem_fun1_t(S (T::*p)(A) const);
-V S operator()(const T* p, A x) const;
- };
-
-V template&lt;class S, class T&gt; const_mem_fun_t&lt;S,T&gt;
- mem_fun(S (T::*f)() const);
-V template&lt;class S, class T, class A&gt; const_mem_fun1_t&lt;S,T,A&gt;
- mem_fun(S (T::*f)(A) const);
-
-T template &lt;class S, class T&gt; class const_mem_fun_ref_t
- : public unary_function&lt;T, S&gt; {
- public:
-T explicit const_mem_fun_ref_t(S (T::*p)() const);
-V S operator()(const T&amp; p) const;
- };
-
-T template &lt;class S, class T, class A&gt; class const_mem_fun1_ref_t
- : public binary_function&lt;T, A, S&gt; {
- public:
-T explicit const_mem_fun1_ref_t(S (T::*p)(A) const);
-V S operator()(const T&amp; p, A x) const;
- };
-
-T template&lt;class S, class T&gt; const_mem_fun_ref_t&lt;S,T&gt;
- mem_fun_ref(S (T::*f)() const);
-
-T template&lt;class S, class T, class A&gt; const_mem_fun1_ref_t&lt;S,T,A&gt;
- mem_fun_ref(S (T::*f)(A) const);
-
- 20.4 Memory [lib.memory]
-
- Header &lt;memory&gt; synopsis
-
- // _lib.default.allocator_, the default allocator:
-T template &lt;class T&gt; class allocator;
-T template &lt;&gt; class allocator&lt;void&gt;;
-T template &lt;class T, class U&gt;
- bool operator==(const allocator&lt;T&gt;&amp;, const allocator&lt;U&gt;&amp;) throw();
-T template &lt;class T, class U&gt;
- bool operator!=(const allocator&lt;T&gt;&amp;, const allocator&lt;U&gt;&amp;) throw();
- // _lib.storage.iterator_, raw storage iterator:
-T template &lt;class OutputIterator, class T&gt; class raw_storage_iterator;
- // _lib.temporary.buffer_, temporary buffers:
-T template &lt;class T&gt;
- pair&lt;T*,ptrdiff_t&gt; get_temporary_buffer(ptrdiff_t n);
-T template &lt;class T&gt;
- void return_temporary_buffer(T* p);
- // _lib.specialized.algorithms_, specialized algorithms:
-T template &lt;class InputIterator, class ForwardIterator&gt;
- ForwardIterator
- uninitialized_copy(InputIterator first, InputIterator last,
- ForwardIterator result);
-T template &lt;class ForwardIterator, class T&gt;
- void uninitialized_fill(ForwardIterator first, ForwardIterator last,
- const T&amp; x);
-T template &lt;class ForwardIterator, class Size, class T&gt;
- void uninitialized_fill_n(ForwardIterator first, Size n, const T&amp; x);
- // _lib.auto.ptr_, pointers:
-X template&lt;class X&gt; class auto_ptr;
- }
-
- 20.4.1 The default allocator [lib.default.allocator]
-
-T template &lt;class T&gt; class allocator;
- // specialize for void:
-T template &lt;&gt; class allocator&lt;void&gt; {
- public:
-T typedef void* pointer;
-T typedef const void* const_pointer;
- // reference-to-void members are impossible.
-T typedef void value_type;
-T template &lt;class U&gt; struct rebind { typedef allocator&lt;U&gt; other; };
- };
-
-T template &lt;class T&gt; class allocator {
- public:
-T typedef size_t size_type;
-T typedef ptrdiff_t difference_type;
-T typedef T* pointer;
-T typedef const T* const_pointer;
-T typedef T&amp; reference;
-T typedef const T&amp; const_reference;
-T typedef T value_type;
-T template &lt;class U&gt; struct rebind { typedef allocator&lt;U&gt; other; };
-T allocator() throw();
-T allocator(const allocator&amp;) throw();
-T template &lt;class U&gt; allocator(const allocator&lt;U&gt;&amp;) throw();
-T ~allocator() throw();
-T pointer address(reference x) const;
-T const_pointer address(const_reference x) const;
-T pointer allocate(
- size_type, allocator&lt;void&gt;::const_pointer hint = 0);
-T void deallocate(pointer p, size_type n);
-T size_type max_size() const throw();
-T void construct(pointer p, const T&amp; val);
-T void destroy(pointer p);
- };
-
- 20.4.1.2 allocator globals [lib.allocator.globals]
-
-T template &lt;class T1, class T2&gt;
- bool operator==(const allocator&lt;T1&gt;&amp;, const allocator&lt;T2&gt;&amp;) throw();
-T template &lt;class T1, class T2&gt;
- bool operator!=(const allocator&lt;T1&gt;&amp;, const allocator&lt;T2&gt;&amp;) throw();
-
- 20.4.2 Raw storage iterator [lib.storage.iterator]
-
-T template &lt;class OutputIterator, class T&gt;
- class raw_storage_iterator
- : public iterator&lt;output_iterator_tag,void,void,void,void&gt; {
- public:
-T explicit raw_storage_iterator(OutputIterator x);
-T raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator*();
-T raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator=(const T&amp; element);
-T raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator++();
-T raw_storage_iterator&lt;OutputIterator,T&gt; operator++(int);
- };
-
- 20.4.3 Temporary buffers [lib.temporary.buffer]
-
-T template &lt;class T&gt;
- pair&lt;T*, ptrdiff_t&gt; get_temporary_buffer(ptrdiff_t n);
-
-T template &lt;class T&gt; void return_temporary_buffer(T* p);
-
- 20.4.4 Specialized algorithms [lib.specialized.algorithms]
-
- 20.4.4.1 uninitialized_copy [lib.uninitialized.copy]
-
-V template &lt;class InputIterator, class ForwardIterator&gt;
- ForwardIterator
- uninitialized_copy(InputIterator first, InputIterator last,
- ForwardIterator result);
-
- 20.4.4.2 uninitialized_fill [lib.uninitialized.fill]
-
-V template &lt;class ForwardIterator, class T&gt;
- void uninitialized_fill(ForwardIterator first, ForwardIterator last,
- const T&amp; x);
-
- 20.4.4.3 uninitialized_fill_n [lib.uninitialized.fill.n]
-
-V template &lt;class ForwardIterator, class Size, class T&gt;
- void uninitialized_fill_n(ForwardIterator first, Size n, const T&amp; x);
-
- 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-X template&lt;class X&gt; class auto_ptr {
- template &lt;class Y&gt; struct auto_ptr_ref {};
- public:
-T typedef X element_type;
- // _lib.auto.ptr.cons_ construct/copy/destroy:
-T explicit auto_ptr(X* p =0) throw();
-T auto_ptr(auto_ptr&amp;) throw();
-T template&lt;class Y&gt; auto_ptr(auto_ptr&lt;Y&gt;&amp;) throw();
-T auto_ptr&amp; operator=(auto_ptr&amp;) throw();
-T template&lt;class Y&gt; auto_ptr&amp; operator=(auto_ptr&lt;Y&gt;&amp;) throw();
-T ~auto_ptr() throw();
- // _lib.auto.ptr.members_ members:
-T X&amp; operator*() const throw();
-T X* operator-&gt;() const throw();
-T X* get() const throw();
-T X* release() throw();
-T void reset(X* p =0) throw();
-
- // _lib.auto.ptr.conv_ conversions:
-X auto_ptr(auto_ptr_ref&lt;X&gt;) throw();
-X template&lt;class Y&gt; operator auto_ptr_ref&lt;Y&gt;() throw();
-X template&lt;class Y&gt; operator auto_ptr&lt;Y&gt;() throw();
- };
-
- 20.4.6 C Library [lib.c.malloc]
-
- Table 7--Header &lt;cstdlib&gt; synopsis
-
-X Functions: calloc malloc
- free realloc
-
-
- Table 8--Header &lt;cstring&gt; synopsis
-
-X Macro: NULL
-X Type: size_t
-X Functions: memchr memcmp
-X memcpy memmove memset
-
- Table 9--Header &lt;ctime&gt; synopsis
-
-X Macros: NULL
-X Types: size_t clock_t time_t
-X Struct: tm
- Functions:
-X asctime clock difftime localtime strftime
-X ctime gmtime mktime time
-
- 21.1.1 Character traits requirements [lib.char.traits.require]
-
- 2 The struct template
-T template&lt;class charT&gt; struct char_traits;
- shall be provided in the header &lt;string&gt; as a basis for explicit spe-
- cializations.
-
-
- 21.1.3.1 struct [lib.char.traits.specializations.char]
- char_traits&lt;char&gt;
-
-T template&lt;&gt;
- struct char_traits&lt;char&gt; {
-T typedef char char_type;
-T typedef int int_type;
-T typedef streamoff off_type;
-T typedef streampos pos_type;
-T typedef mbstate_t state_type;
-
-T static void assign(char_type&amp; c1, const char_type&amp; c2);
-T static bool eq(const char_type&amp; c1, const char_type&amp; c2);
-T static bool lt(const char_type&amp; c1, const char_type&amp; c2);
-
-T static int compare(const char_type* s1, const char_type* s2, size_t n);
-T static size_t length(const char_type* s);
-T static const char_type* find(const char_type* s, size_t n,
- const char_type&amp; a);
-T static char_type* move(char_type* s1, const char_type* s2, size_t n);
-T static char_type* copy(char_type* s1, const char_type* s2, size_t n);
-T static char_type* assign(char_type* s, size_t n, char_type a);
-
-T static int_type not_eof(const int_type&amp; c);
-T static char_type to_char_type(const int_type&amp; c);
-T static int_type to_int_type(const char_type&amp; c);
-T static bool eq_int_type(const int_type&amp; c1, const int_type&amp; c2);
-T static int_type eof();
- };
-
- 21.1.3.2 struct [lib.char.traits.specializations.wchar.t]
- char_traits&lt;wchar_t&gt;
-
-V template&lt;&gt;
- struct char_traits&lt;wchar_t&gt; {
-V typedef wchar_t char_type;
-V typedef wint_t int_type;
-V typedef streamoff off_type;
-V typedef wstreampos pos_type;
-V typedef mbstate_t state_type;
-
-V static void assign(char_type&amp; c1, const char_type&amp; c2);
-V static bool eq(const char_type&amp; c1, const char_type&amp; c2);
-V static bool lt(const char_type&amp; c1, const char_type&amp; c2);
-
-V static int compare(const char_type* s1, const char_type* s2, size_t n);
-V static size_t length(const char_type* s);
-V static const char_type* find(const char_type* s, size_t n,
- const char_type&amp; a);
-V static char_type* move(char_type* s1, const char_type* s2, size_t n);
-V static char_type* copy(char_type* s1, const char_type* s2, size_t n);
-V static char_type* assign(char_type* s, size_t n, char_type a);
-
-V static int_type not_eof(const int_type&amp; c);
-V static char_type to_char_type(const int_type&amp; c);
-V static int_type to_int_type(const char_type&amp; c);
-V static bool eq_int_type(const int_type&amp; c1, const int_type&amp; c2);
-V static int_type eof();
- };
-
- 21.2 String classes [lib.string.classes]
-
- // _lib.char.traits_, character traits:
-V template&lt;class charT&gt;
- struct char_traits;
-V template &lt;&gt; struct char_traits&lt;char&gt;;
-V template &lt;&gt; struct char_traits&lt;wchar_t&gt;;
-
- // _lib.basic.string_, basic_string:
-V template&lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
- class basic_string;
-V template&lt;class charT, class traits, class Allocator&gt;
- basic_string&lt;charT,traits,Allocator&gt;
- operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- basic_string&lt;charT,traits,Allocator&gt;
- operator+(const charT* lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- basic_string&lt;charT,traits,Allocator&gt;
- operator+(charT lhs, const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- basic_string&lt;charT,traits,Allocator&gt;
- operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const charT* rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- basic_string&lt;charT,traits,Allocator&gt;
- operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs, charT rhs);
-
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator==(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator==(const charT* lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator==(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const charT* rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator!=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator!=(const charT* lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator!=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const charT* rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&lt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&lt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const charT* rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&lt; (const charT* lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&gt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&gt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const charT* rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&gt; (const charT* lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&lt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&lt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const charT* rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&lt;=(const charT* lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&gt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&gt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- const charT* rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- bool operator&gt;=(const charT* lhs,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-
- // _lib.string.special_:
-V template&lt;class charT, class traits, class Allocator&gt;
- void swap(basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,
- basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);
-V template&lt;class charT, class traits, class Allocator&gt;
- basic_istream&lt;charT,traits&gt;&amp;
- operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp; is,
- basic_string&lt;charT,traits,Allocator&gt;&amp; str);
-T template&lt;class charT, class traits, class Allocator&gt;
- basic_ostream&lt;charT, traits&gt;&amp;
- operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp; os,
- const basic_string&lt;charT,traits,Allocator&gt;&amp; str);
-V template&lt;class charT, class traits, class Allocator&gt;
- basic_istream&lt;charT,traits&gt;&amp;
- getline(basic_istream&lt;charT,traits&gt;&amp; is,
- basic_string&lt;charT,traits,Allocator&gt;&amp; str,
- charT delim);
-V template&lt;class charT, class traits, class Allocator&gt;
- basic_istream&lt;charT,traits&gt;&amp;
- getline(basic_istream&lt;charT,traits&gt;&amp; is,
- basic_string&lt;charT,traits,Allocator&gt;&amp; str);
-V typedef basic_string&lt;char&gt; string;
-T typedef basic_string&lt;wchar_t&gt; wstring;
- }
-
- 21.3 Template class basic_string [lib.basic.string]
-
-V namespace std {
- template&lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
- class basic_string {
- public:
- // types:
- typedef traits traits_type;
- typedef typename traits::char_type value_type;
- typedef Allocator allocator_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
- typedef typename Allocator::reference reference;
- typedef typename Allocator::const_reference const_reference;
- typedef typename Allocator::pointer pointer;
- typedef typename Allocator::const_pointer const_pointer;
- typedef implementation defined iterator;
- typedef implementation defined const_iterator;
- typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;
- typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;
- static const size_type npos = -1;
-
- // _lib.string.cons_ construct/copy/destroy:
-V explicit basic_string(const Allocator&amp; a = Allocator());
-V basic_string(const basic_string&amp; str, size_type pos = 0,
- size_type n = npos, const Allocator&amp; a = Allocator());
-V basic_string(const charT* s,
- size_type n, const Allocator&amp; a = Allocator());
-V basic_string(const charT* s, const Allocator&amp; a = Allocator());
-V basic_string(size_type n, charT c, const Allocator&amp; a = Allocator());
-V template&lt;class InputIterator&gt;
- basic_string(InputIterator begin, InputIterator end,
- const Allocator&amp; a = Allocator());
-V ~basic_string();
-V basic_string&amp; operator=(const basic_string&amp; str);
-V basic_string&amp; operator=(const charT* s);
-V basic_string&amp; operator=(charT c);
- // _lib.string.iterators_ iterators:
-V iterator begin();
-V const_iterator begin() const;
-V iterator end();
-V const_iterator end() const;
-
-V reverse_iterator rbegin();
-V const_reverse_iterator rbegin() const;
-V reverse_iterator rend();
-V const_reverse_iterator rend() const;
- // _lib.string.capacity_ capacity:
-V size_type size() const;
-V size_type length() const;
-V size_type max_size() const;
-V void resize(size_type n, charT c);
-V void resize(size_type n);
-V size_type capacity() const;
-V void reserve(size_type res_arg = 0);
-V void clear();
-V bool empty() const;
- // _lib.string.access_ element access:
-V const_reference operator[](size_type pos) const;
-V reference operator[](size_type pos);
-V const_reference at(size_type n) const;
-V reference at(size_type n);
- // _lib.string.modifiers_ modifiers:
-V basic_string&amp; operator+=(const basic_string&amp; str);
-V basic_string&amp; operator+=(const charT* s);
-V basic_string&amp; operator+=(charT c);
-V basic_string&amp; append(const basic_string&amp; str);
-V basic_string&amp; append(const basic_string&amp; str, size_type pos,
- size_type n);
-V basic_string&amp; append(const charT* s, size_type n);
-V basic_string&amp; append(const charT* s);
-V basic_string&amp; append(size_type n, charT c);
-V template&lt;class InputIterator&gt;
- basic_string&amp; append(InputIterator first, InputIterator last);
-V void push_back(const charT);
-
-V basic_string&amp; assign(const basic_string&amp;);
-V basic_string&amp; assign(const basic_string&amp; str, size_type pos,
- size_type n);
-V basic_string&amp; assign(const charT* s, size_type n);
-V basic_string&amp; assign(const charT* s);
-V basic_string&amp; assign(size_type n, charT c);
-V template&lt;class InputIterator&gt;
- basic_string&amp; assign(InputIterator first, InputIterator last);
-V basic_string&amp; insert(size_type pos1, const basic_string&amp; str);
-V basic_string&amp; insert(size_type pos1, const basic_string&amp; str,
- size_type pos2, size_type n);
-V basic_string&amp; insert(size_type pos, const charT* s, size_type n);
-V basic_string&amp; insert(size_type pos, const charT* s);
-V basic_string&amp; insert(size_type pos, size_type n, charT c);
-V iterator insert(iterator p, charT c);
-V void insert(iterator p, size_type n, charT c);
-V template&lt;class InputIterator&gt;
- void insert(iterator p, InputIterator first, InputIterator last);
-V basic_string&amp; erase(size_type pos = 0, size_type n = npos);
-V iterator erase(iterator position);
-V iterator erase(iterator first, iterator last);
-V basic_string&amp; replace(size_type pos1, size_type n1,
- const basic_string&amp; str);
-V basic_string&amp; replace(size_type pos1, size_type n1,
- const basic_string&amp; str,
- size_type pos2, size_type n2);
-V basic_string&amp; replace(size_type pos, size_type n1, const charT* s,
- size_type n2);
-V basic_string&amp; replace(size_type pos, size_type n1, const charT* s);
-V basic_string&amp; replace(size_type pos, size_type n1, size_type n2,
- charT c);
-V basic_string&amp; replace(iterator i1, iterator i2, const basic_string&amp; str);
-V basic_string&amp; replace(iterator i1, iterator i2, const charT* s,
- size_type n);
-V basic_string&amp; replace(iterator i1, iterator i2, const charT* s);
-V basic_string&amp; replace(iterator i1, iterator i2,
- size_type n, charT c);
-V template&lt;class InputIterator&gt;
- basic_string&amp; replace(iterator i1, iterator i2,
- InputIterator j1, InputIterator j2);
-V size_type copy(charT* s, size_type n, size_type pos = 0) const;
-V void swap(basic_string&lt;charT,traits,Allocator&gt;&amp;);
- // _lib.string.ops_ string operations:
-V const charT* c_str() const; // explicit
-V const charT* data() const;
-V allocator_type get_allocator() const;
-V size_type find (const basic_string&amp; str, size_type pos = 0) const;
-V size_type find (const charT* s, size_type pos, size_type n) const;
-V size_type find (const charT* s, size_type pos = 0) const;
-V size_type find (charT c, size_type pos = 0) const;
-V size_type rfind(const basic_string&amp; str, size_type pos = npos) const;
-V size_type rfind(const charT* s, size_type pos, size_type n) const;
-V size_type rfind(const charT* s, size_type pos = npos) const;
-V size_type rfind(charT c, size_type pos = npos) const;
-
-V size_type find_first_of(const basic_string&amp; str,
- size_type pos = 0) const;
-V size_type find_first_of(const charT* s,
- size_type pos, size_type n) const;
-V size_type find_first_of(const charT* s, size_type pos = 0) const;
-V size_type find_first_of(charT c, size_type pos = 0) const;
-V size_type find_last_of (const basic_string&amp; str,
- size_type pos = npos) const;
-V size_type find_last_of (const charT* s,
- size_type pos, size_type n) const;
-V size_type find_last_of (const charT* s, size_type pos = npos) const;
-V size_type find_last_of (charT c, size_type pos = npos) const;
-V size_type find_first_not_of(const basic_string&amp; str,
- size_type pos = 0) const;
-V size_type find_first_not_of(const charT* s, size_type pos,
- size_type n) const;
-V size_type find_first_not_of(const charT* s, size_type pos = 0) const;
-V size_type find_first_not_of(charT c, size_type pos = 0) const;
-V size_type find_last_not_of (const basic_string&amp; str,
- size_type pos = npos) const;
-V size_type find_last_not_of (const charT* s, size_type pos,
- size_type n) const;
-V size_type find_last_not_of (const charT* s,
- size_type pos = npos) const;
-V size_type find_last_not_of (charT c, size_type pos = npos) const;
-V basic_string substr(size_type pos = 0, size_type n = npos) const;
-V int compare(const basic_string&amp; str) const;
-V int compare(size_type pos1, size_type n1,
- const basic_string&amp; str) const;
-V int compare(size_type pos1, size_type n1,
- const basic_string&amp; str,
- size_type pos2, size_type n2) const;
-V int compare(const charT* s) const;
-V int compare(size_type pos1, size_type n1,
- const charT* s, size_type n2 = npos) const;
- };
- }
-
- 21.4 Null-terminated sequence utilities [lib.c.strings]
-
- Table 10--Header &lt;cctype&gt; synopsis
-
- isalnum isdigit isprint isupper tolower
-X isalpha isgraph ispunct isxdigit toupper
- iscntrl islower isspace
-
- Table 11--Header &lt;cwctype&gt; synopsis
-
-X Macro: WEOF &lt;cwctype&gt;
-X Types: wctrans_t wctype_t wint_t &lt;cwctype&gt;
- Functions:
-X iswalnum iswctype iswlower iswspace towctrans wctrans
-X iswalpha iswdigit iswprint iswupper towlower wctype
-X iswcntrl iswgraph iswpunct iswxdigit towupper
-
- Table 12--Header &lt;cstring&gt; synopsis
-
-X Macro: NULL &lt;cstring&gt;
-X Type: size_t &lt;cstring&gt;
- Functions:
-X memchr strcat strcspn strncpy strtok
-X memcmp strchr strerror strpbrk strxfrm
-X memcpy strcmp strlen strrchr
-X memmove strcoll strncat strspn
-X memset strcpy strncmp strstr
-
- Table 13--Header &lt;cwchar&gt; synopsis
- Macros: NULL &lt;cwchar&gt; WCHAR_MAX WCHAR_MIN WEOF &lt;cwchar&gt;
- Types: mbstate_t wint_t &lt;cwchar&gt; size_t
- Functions:
-X btowc getwchar ungetwc wcscpy wcsrtombs wmemchr
-X fgetwc mbrlen vfwprintf wcscspn wcsspn wmemcmp
-X fgetws mbrtowc vswprintf wcsftime wcsstr wmemcpy
-X fputwc mbsinit vwprintf wcslen wcstod wmemmove
-X fputws mbsrtowcs wcrtomb wcsncat wcstok wmemset
-X fwide putwc wcscat wcsncmp wcstol wprintf
-X fwprintf putwchar wcschr wcsncpy wcstoul wscanf
-X fwscanf swprintf wcscmp wcspbrk wcsxfrm
-X getwc swscanf wcscoll wcsrchr wctob
-
- Table 14--Header &lt;cstdlib&gt; synopsis
-
- Macros: MB_CUR_MAX
- Functions:
-X atol mblen strtod wctomb
-X atof mbstowcs strtol wcstombs
-X atoi mbtowc strtoul
-
-X const char* strchr(const char* s, int c);
-X char* strchr( char* s, int c);
-
-X const char* strpbrk(const char* s1, const char* s2);
-X char* strpbrk( char* s1, const char* s2);
-
-X const char* strrchr(const char* s, int c);
-X char* strrchr( char* s, int c);
-
-X const char* strstr(const char* s1, const char* s2);
-X char* strstr( char* s1, const char* s2);
-
-X const void* memchr(const void* s, int c, size_t n);
-X void* memchr( void* s, int c, size_t n);
-
-X const wchar_t* wcschr(const wchar_t* s, wchar_t c);
-X wchar_t* wcschr( wchar_t* s, wchar_t c);
-
-X const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);
-X wchar_t* wcspbrk( wchar_t* s1, const wchar_t* s2);
-
-X const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);
-X wchar_t* wcsrchr( wchar_t* s, wchar_t c);
-
-X const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);
-X wchar_t* wcsstr( wchar_t* s1, const wchar_t* s2);
-
-X const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);
-X wchar_t* wmemchr( wchar_t* s, wchar_t c, size_t n);
-
- [for initial efforts on the above, see shadow/string.h]
-
- 22.1 Locales [lib.locales]
-
- Header &lt;locale&gt; synopsis
-
- // _lib.locale_, locale:
-T class locale;
-T template &lt;class Facet&gt; const Facet&amp; use_facet(const locale&amp;);
-T template &lt;class Facet&gt; bool has_facet(const locale&amp;) throw();
-
- // _lib.locale.convenience_, convenience interfaces:
-T template &lt;class charT&gt; bool isspace (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool isprint (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool iscntrl (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool isupper (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool islower (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool isalpha (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool isdigit (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool ispunct (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool isxdigit(charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool isalnum (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; bool isgraph (charT c, const locale&amp; loc);
-T template &lt;class charT&gt; charT toupper(charT c, const locale&amp; loc);
-T template &lt;class charT&gt; charT tolower(charT c, const locale&amp; loc);
- // _lib.category.ctype_ and _lib.facet.ctype.special_, ctype:
- class ctype_base;
-T template &lt;class charT&gt; class ctype;
-T template &lt;&gt; class ctype&lt;char&gt;; // specialization
-S template &lt;class charT&gt; class ctype_byname;
-S template &lt;&gt; class ctype_byname&lt;char&gt;; // specialization
-T class codecvt_base;
-X template &lt;class internT, class externT, class stateT&gt; class codecvt;
-S template &lt;class internT, class externT, class stateT&gt; class codecvt_byname;
- // _lib.category.numeric_ and _lib.facet.numpunct_, numeric:
-X template &lt;class charT, class InputIterator&gt; class num_get;
-X template &lt;class charT, class OutputIterator&gt; class num_put;
-T template &lt;class charT&gt; class numpunct;
-S template &lt;class charT&gt; class numpunct_byname;
- // _lib.category.collate_, collation:
-T template &lt;class charT&gt; class collate;
-S template &lt;class charT&gt; class collate_byname;
- // _lib.category.time_, date and time:
-T class time_base;
-S template &lt;class charT, class InputIterator&gt; class time_get;
-S template &lt;class charT, class InputIterator&gt; class time_get_byname;
-S template &lt;class charT, class OutputIterator&gt; class time_put;
-S template &lt;class charT, class OutputIterator&gt; class time_put_byname;
- // _lib.category.monetary_, money:
-T class money_base;
-S template &lt;class charT, class InputIterator&gt; class money_get;
-S template &lt;class charT, class OutputIterator&gt; class money_put;
-S template &lt;class charT, bool Intl&gt; class moneypunct;
-S template &lt;class charT, bool Intl&gt; class moneypunct_byname;
- // _lib.category.messages_, message retrieval:
-T class messages_base;
-S template &lt;class charT&gt; class messages;
-S template &lt;class charT&gt; class messages_byname;
-
-
- 22.1.1 Class locale [lib.locale]
-
-X class locale {
- public:
- // types:
-T class facet;
-T class id;
-T typedef int category;
-T static const category // values assigned here are for exposition only
-T none = 0,
-T collate = 0x010, ctype = 0x020,
-T monetary = 0x040, numeric = 0x080,
-T time = 0x100, messages = 0x200,
-T all = collate | ctype | monetary | numeric | time | messages;
- // construct/copy/destroy:
-T locale() throw()
-T locale(const locale&amp; other) throw()
-X explicit locale(const char* std_name);
-X locale(const locale&amp; other, const char* std_name, category);
-T template &lt;class Facet&gt; locale(const locale&amp; other, Facet* f);
-T locale(const locale&amp; other, const locale&amp; one, category);
-T ~locale() throw(); // non-virtual
-T const locale&amp; operator=(const locale&amp; other) throw();
-T template &lt;class Facet&gt; locale combine(const locale&amp; other) const;
- // locale operations:
-X basic_string&lt;char&gt; name() const;
-T bool operator==(const locale&amp; other) const;
-T bool operator!=(const locale&amp; other) const;
-T template &lt;class charT, class Traits, class Allocator&gt;
- bool operator()(const basic_string&lt;charT,Traits,Allocator&gt;&amp; s1,
- const basic_string&lt;charT,Traits,Allocator&gt;&amp; s2) const;
- // global locale objects:
-T static locale global(const locale&amp;);
-T static const locale&amp; classic();
- };
-
- 22.1.1.1 locale types [lib.locale.types]
-
- 22.1.1.1.1 Type locale::category [lib.locale.category]
-
-T typedef int category;
-
-T none, collate, ctype, monetary, numeric, time, and messages
-
- [required locale members]
-T collate&lt;char&gt;, collate&lt;wchar_t&gt;
-T ctype&lt;char&gt;, ctype&lt;wchar_t&gt;
-T codecvt&lt;char,char,mbstate_t&gt;,
-S codecvt&lt;wchar_t,char,mbstate_t&gt;
-T moneypunct&lt;char&gt;, moneypunct&lt;wchar_t&gt;
-T moneypunct&lt;char,true&gt;, moneypunct&lt;wchar_t,true&gt;,
-S money_get&lt;char&gt;, money_get&lt;wchar_t
-S money_put&lt;char&gt;, money_put&lt;wchar_t&gt;
-T numpunct&lt;char&gt;, numpunct&lt;wchar_t&gt;,
-X num_get&lt;char&gt;, num_get&lt;wchar_t&gt;
-X num_put&lt;char&gt;, num_put&lt;wchar_t&gt;
-S time_get&lt;char&gt;, time_get&lt;wchar_t&gt;,
-S time_put&lt;char&gt;, time_put&lt;wchar_t&gt;
-S messages&lt;char&gt;, messages&lt;wchar_t&gt;
-
- [required instantiations]
-S collate_byname&lt;char&gt;, collate_byname&lt;wchar_t&gt;
-S ctype_byname&lt;char&gt;, ctype_byname&lt;wchar_t&gt;
-S codecvt_byname&lt;char,char,mbstate_t&gt;,
-S codecvt_byname&lt;wchar_t,char,mbstate_t&gt;
-S moneypunct_byname&lt;char,International&gt;,
-S moneypunct_byname&lt;wchar_t,International&gt;,
-S money_get&lt;C,InputIterator&gt;,
-S money_put&lt;C,OutputIterator&gt;
-S numpunct_byname&lt;char&gt;, numpunct_byname&lt;wchar_t&gt;
-X num_get&lt;C,InputIterator&gt;, num_put&lt;C,OutputIterator&gt;
-S time_get&lt;char,InputIterator&gt;,
-S time_get_byname&lt;char,InputIterator&gt;,
-S time_get&lt;wchar_t,OutputIterator&gt;,
-S time_get_byname&lt;wchar_t,OutputIterator&gt;,
-S time_put&lt;char,OutputIterator&gt;,
-S time_put_byname&lt;char,OutputIterator&gt;,
-S time_put&lt;wchar_t,OutputIterator&gt;
-S time_put_byname&lt;wchar_t,OutputIterator&gt;
-S messages_byname&lt;char&gt;, messages_byname&lt;wchar_t&gt;
-
-
- 22.1.1.1.2 Class locale::facet [lib.locale.facet]
-
-T class locale::facet {
- protected:
-T explicit facet(size_t refs = 0);
-T virtual ~facet();
- private:
-T facet(const facet&amp;); // not defined
-T void operator=(const facet&amp;); // not defined
- };
- }
-
-
- 22.1.1.1.3 Class locale::id [lib.locale.id]
-
-T class locale::id {
- public:
-T id();
- private:
-T void operator=(const id&amp;); // not defined
-T id(const id&amp;); // not defined
- };
- }
-
-
- 22.2.1 The ctype category [lib.category.ctype]
-
-T class ctype_base {
- public:
-T enum mask { // numeric values are for exposition only.
-T space=, print=, cntrl=, upper=, lower=,
-T alpha=, digit=, punct=, xdigit=,
-T alnum=, graph=
- };
- };
-
-
- 22.2.1.1 Template class ctype [lib.locale.ctype]
-
-T template &lt;class charT&gt;
- class ctype : public locale::facet, public ctype_base {
- public:
-T typedef charT char_type;
-T explicit ctype(size_t refs = 0);
-T bool is(mask m, charT c) const;
-T const charT* is(const charT* low, const charT* high, mask* vec) const;
-T const charT* scan_is(mask m,
- const charT* low, const charT* high) const;
-T const charT* scan_not(mask m,
- const charT* low, const charT* high) const;
-T charT toupper(charT c) const;
-T const charT* toupper(charT* low, const charT* high) const;
-T charT tolower(charT c) const;
-T const charT* tolower(charT* low, const charT* high) const;
-T charT widen(char c) const;
-T const char* widen(const char* low, const char* high, charT* to) const;
-T char narrow(charT c, char dfault) const;
-T const charT* narrow(const charT* low, const charT*, char dfault,
- char* to) const;
-T static locale::id id;
-
- protected:
-T ~ctype(); // virtual
-T virtual bool do_is(mask m, charT c) const;
-T virtual const charT* do_is(const charT* low, const charT* high,
- mask* vec) const;
-T virtual const charT* do_scan_is(mask m,
- const charT* low, const charT* high) const;
-T virtual const charT* do_scan_not(mask m,
- const charT* low, const charT* high) const;
-T virtual charT do_toupper(charT) const;
-T virtual const charT* do_toupper(charT* low, const charT* high) const;
-T virtual charT do_tolower(charT) const;
-T virtual const charT* do_tolower(charT* low, const charT* high) const;
-T virtual charT do_widen(char) const;
-T virtual const char* do_widen(const char* low, const char* high,
- charT* dest) const;
-T virtual char do_narrow(charT, char dfault) const;
-T virtual const charT* do_narrow(const charT* low, const charT* high,
- char dfault, char* dest) const;
- };
-
-
- 22.2.1.2 Template class ctype_byname [lib.locale.ctype.byname]
-
-X template &lt;class charT&gt;
- class ctype_byname : public ctype&lt;charT&gt; {
- public:
-T typedef ctype&lt;charT&gt;::mask mask;
-S explicit ctype_byname(const char*, size_t refs = 0);
- protected:
-S ~ctype_byname(); // virtual
-S virtual bool do_is(mask m, charT c) const;
-S virtual const charT* do_is(const charT* low, const charT* high,
- mask* vec) const;
-S virtual const char* do_scan_is(mask m,
- const charT* low, const charT* high) const;
-S virtual const char* do_scan_not(mask m,
- const charT* low, const charT* high) const;
-S virtual charT do_toupper(charT) const;
-S virtual const charT* do_toupper(charT* low, const charT* high) const;
-S virtual charT do_tolower(charT) const;
-S virtual const charT* do_tolower(charT* low, const charT* high) const;
-S virtual charT do_widen(char) const;
-S virtual const char* do_widen(const char* low, const char* high,
- charT* dest) const;
-S virtual char do_narrow(charT, char dfault) const;
-S virtual const charT* do_narrow(const charT* low, const charT* high,
- char dfault, char* dest) const;
- };
-
- 22.2.1.3 ctype specializations [lib.facet.ctype.special]
-
-T template &lt;&gt; class ctype&lt;char&gt;
- : public locale::facet, public ctype_base {
- public:
-T typedef char char_type;
-T explicit ctype(const mask* tab = 0, bool del = false,
- size_t refs = 0);
-T bool is(mask m, char c) const;
-T const char* is(const char* low, const char* high, mask* vec) const;
-T const char* scan_is (mask m,
- const char* low, const char* high) const;
-T const char* scan_not(mask m,
- const char* low, const char* high) const;
-T char toupper(char c) const;
-T const char* toupper(char* low, const char* high) const;
-T char tolower(char c) const;
-T const char* tolower(char* low, const char* high) const;
-T char widen(char c) const;
-T const char* widen(const char* low, const char* high, char* to) const;
-T char narrow(char c, char dfault) const;
-T const char* narrow(const char* low, const char* high, char dfault,
- char* to) const;
-T static locale::id id;
-T static const size_t table_size = IMPLEMENTATION_DEFINED;
-
- protected:
-T const mask* table() const throw();
-T static const mask* classic_table() throw();
-T ~ctype(); // virtual
-T virtual char do_toupper(char c) const;
-T virtual const char* do_toupper(char* low, const char* high) const;
-T virtual char do_tolower(char c) const;
-T virtual const char* do_tolower(char* low, const char* high) const;
-
-T virtual char do_widen(char c) const;
-T virtual const char* do_widen(const char* low,
- const char* high,
- char* to) const;
-T virtual char do_narrow(char c, char dfault) const;
-T virtual const char* do_narrow(const char* low,
- const char* high,
- char dfault, char* to) const;
- };
-
-
- 22.2.1.4 Class [lib.locale.ctype.byname.special]
- ctype_byname&lt;char&gt;
-
-X template &lt;&gt; class ctype_byname&lt;char&gt; : public ctype&lt;char&gt; {
- public:
-S explicit ctype_byname(const char*, size_t refs = 0);
- protected:
-S ~ctype_byname(); // virtual
-S virtual char do_toupper(char c) const;
-S virtual const char* do_toupper(char* low, const char* high) const;
-S virtual char do_tolower(char c) const;
-S virtual const char* do_tolower(char* low, const char* high) const;
-
-S virtual char do_widen(char c) const;
-S virtual const char* do_widen(char* low,
- const char* high,
- char* to) const;
-S virtual char do_widen(char c) const;
-S virtual const char* do_widen(char* low, const char* high) const;
-
- };
-
-
-
- 22.2.1.5 Template class codecvt [lib.locale.codecvt]
-
-T class codecvt_base {
- public:
-T enum result { ok, partial, error, noconv };
- };
-
-T template &lt;class internT, class externT, class stateT&gt;
- class codecvt : public locale::facet, public codecvt_base {
- public:
-T typedef internT intern_type;
-T typedef externT extern_type;
-T typedef stateT state_type;
-T explicit codecvt(size_t refs = 0)
-T result out(stateT&amp; state,
- const internT* from, const internT* from_end, const internT*&amp; from_next,
- externT* to, externT* to_limit, externT*&amp; to_next) const;
-T result unshift(stateT&amp; state,
- externT* to, externT* to_limit, externT*&amp; to_next) const;
-T result in(stateT&amp; state,
- const externT* from, const externT* from_end, const externT*&amp; from_next,
- internT* to, internT* to_limit, internT*&amp; to_next) const;
-T int encoding() const throw();
-T bool always_noconv() const throw();
-T int length(const stateT&amp;, const externT* from, const externT* end,
- size_t max) const;
-T int max_length() const throw();
-T static locale::id id;
-
- protected:
-T ~codecvt(); // virtual
-T virtual result do_out(stateT&amp; state,
- const internT* from, const internT* from_end, const internT*&amp; from_next,
- externT* to, externT* to_limit, externT*&amp; to_next) const;
-T virtual result do_in(stateT&amp; state,
-T const externT* from, const externT* from_end, const externT*&amp; from_next,
- internT* to, internT* to_limit, internT*&amp; to_next) const;
-T virtual result do_unshift(stateT&amp; state,
- externT* to, externT* to_limit, externT*&amp; to_next) const;
-T virtual int do_encoding() const throw();
-T virtual bool do_always_noconv() const throw();
-T virtual int do_length(const stateT&amp;, const externT* from,
- const externT* end, size_t max) const;
-T virtual int do_max_length() const throw();
- };
- }
-
-
- 22.2.1.6 Template class [lib.locale.codecvt.byname]
- codecvt_byname
-
-X template &lt;class internT, class externT, class stateT&gt;
- class codecvt_byname : public codecvt&lt;internT, externT, stateT&gt; {
- public:
-S explicit codecvt_byname(const char*, size_t refs = 0);
- protected:
-S ~codecvt_byname(); // virtual
-S virtual result do_out(stateT&amp; state,
- const internT* from, const internT* from_end, const internT*&amp; from_next,
- externT* to, externT* to_limit, externT*&amp; to_next) const;
-S virtual result do_in(stateT&amp; state,
- const externT* from, const externT* from_end, const externT*&amp; from_next,
- internT* to, internT* to_limit, internT*&amp; to_next) const;
-S virtual result do_unshift(stateT&amp; state,
- externT* to, externT* to_limit, externT*&amp; to_next) const;
-S virtual int do_encoding() const throw();
-S virtual bool do_always_noconv() const throw();
-S virtual int do_length(const stateT&amp;, const externT* from,
- const externT* end, size_t max) const;
-S virtual result do_unshift(stateT&amp; state,
- externT* to, externT* to_limit, externT*&amp; to_next) const;
-S virtual int do_max_length() const throw();
- };
-
-
- 22.2.2.1 Template class num_get [lib.locale.num.get]
-
-X template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;
- class num_get : public locale::facet {
- public:
-T typedef charT char_type;
-T typedef InputIterator iter_type;
-T explicit num_get(size_t refs = 0);
-T iter_type get(iter_type in, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, bool&amp; v) const;
-T iter_type get(iter_type in, iter_type end, ios_base&amp; ,
- ios_base::iostate&amp; err, long&amp; v) const;
-T iter_type get(iter_type in, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, unsigned short&amp; v) const;
-T iter_type get(iter_type in, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, unsigned int&amp; v) const;
-T iter_type get(iter_type in, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, unsigned long&amp; v) const;
-T iter_type get(iter_type in, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, float&amp; v) const;
-T iter_type get(iter_type in, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, double&amp; v) const;
-T iter_type get(iter_type in, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, long double&amp; v) const;
-T iter_type get(iter_type in, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, void*&amp; v) const;
-T static locale::id id;
-
- protected:
-T ~num_get(); // virtual
-T virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,
- ios_base::iostate&amp; err, bool&amp; v) const;
-S virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,
- ios_base::iostate&amp; err, long&amp; v) const;
-S virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,
- ios_base::iostate&amp; err, unsigned short&amp; v) const;
-S virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,
- ios_base::iostate&amp; err, unsigned int&amp; v) const;
-S virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,
- ios_base::iostate&amp; err, unsigned long&amp; v) const;
-S virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,
- ios_base::iostate&amp; err, float&amp; v) const;
-S virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,
- ios_base::iostate&amp; err, double&amp; v) const;
-S virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,
- ios_base::iostate&amp; err, long double&amp; v) const;
-S virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,
- ios_base::iostate&amp; err, void*&amp; v) const;
- };
-
-
-
- 22.2.2.2 Template class num_put [lib.locale.nm.put]
-
-X template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;
- class num_put : public locale::facet {
- public:
-T typedef charT char_type;
-T typedef OutputIterator iter_type;
-T explicit num_put(size_t refs = 0);
-T iter_type put(iter_type s, ios_base&amp; f, char_type fill, bool v) const;
-T iter_type put(iter_type s, ios_base&amp; f, char_type fill, long v) const;
-T iter_type put(iter_type s, ios_base&amp; f, char_type fill,
- unsigned long v) const;
-T iter_type put(iter_type s, ios_base&amp; f, char_type fill,
- double v) const;
-T iter_type put(iter_type s, ios_base&amp; f, char_type fill,
- long double v) const;
-T iter_type put(iter_type s, ios_base&amp; f, char_type fill,
- const void* v) const;
-T static locale::id id;
- protected:
-T ~num_put(); // virtual
-T virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,
- bool v) const;
-T virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,
- long v) const;
-T virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,
- unsigned long) const;
-S virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,
- double v) const;
-S virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,
- long double v) const;
-T virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,
- const void* v) const;
- };
- }
-
- 22.2.3.1 Template class numpunct [lib.locale.numpunct]
-
-T template &lt;class charT&gt;
- class numpunct : public locale::facet {
- public:
-T typedef charT char_type;
-T typedef basic_string&lt;charT&gt; string_type;
-T explicit numpunct(size_t refs = 0);
-T char_type decimal_point() const;
-T char_type thousands_sep() const;
-T string grouping() const;
-T string_type truename() const;
-T string_type falsename() const;
-T static locale::id id;
- protected:
-T ~numpunct(); // virtual
-T virtual char_type do_decimal_point() const;
-T virtual char_type do_thousands_sep() const;
-T virtual string do_grouping() const;
-T virtual string_type do_truename() const; // for bool
-T virtual string_type do_falsename() const; // for bool
- };
- }
-
-
-
- 22.2.3.2 Template class [lib.locale.numpunct.byname]
- numpunct_byname
-
-X template &lt;class charT&gt;
- class numpunct_byname : public numpunct&lt;charT&gt; {
- // this class is specialized for char and wchar_t.
- public:
-T typedef charT char_type;
-T typedef basic_string&lt;charT&gt; string_type;
-S explicit numpunct_byname(const char*, size_t refs = 0);
- protected:
-S ~numpunct_byname(); // virtual
-S virtual char_type do_decimal_point() const;
-S virtual char_type do_thousands_sep() const;
-S virtual string do_grouping() const;
-S virtual string_type do_truename() const; // for bool
-S virtual string_type do_falsename() const; // for bool
- };
-
-
- 22.2.4.1 Template class collate [lib.locale.collate]
-
-T template &lt;class charT&gt;
- class collate : public locale::facet {
- public:
-T typedef charT char_type;
-T typedef basic_string&lt;charT&gt; string_type;
-T explicit collate(size_t refs = 0);
-T int compare(const charT* low1, const charT* high1,
- const charT* low2, const charT* high2) const;
-T string_type transform(const charT* low, const charT* high) const;
-T long hash(const charT* low, const charT* high) const;
-T static locale::id id;
- protected:
-T ~collate(); // virtual
-T virtual int do_compare(const charT* low1, const charT* high1,
- const charT* low2, const charT* high2) const;
-T virtual string_type do_transform
- (const charT* low, const charT* high) const;
-T virtual long do_hash (const charT* low, const charT* high) const;
- };
-
-
- 22.2.4.2 Template class [lib.locale.collate.byname]
- collate_byname
-
-X template &lt;class charT&gt;
- class collate_byname : public collate&lt;charT&gt; {
- public:
-T typedef basic_string&lt;charT&gt; string_type;
-T explicit collate_byname(const char*, size_t refs = 0);
- protected:
-S ~collate_byname(); // virtual
-S virtual int do_compare(const charT* low1, const charT* high1,
- const charT* low2, const charT* high2) const;
-S virtual string_type do_transform
- (const charT* low, const charT* high) const;
-S virtual long do_hash (const charT* low, const charT* high) const;
- };
-
-
- 22.2.5.1 Template class time_get [lib.locale.time.get]
-
-T class time_base {
- public:
-T enum dateorder { no_order, dmy, mdy, ymd, ydm };
- };
-
- [Note: semantics of time_get members are implementation-defined.
- To complete implementation requires documenting behavior.]
-
-X template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;
- class time_get : public locale::facet, public time_base {
- public:
-T typedef charT char_type;
-T typedef InputIterator iter_type;
-T explicit time_get(size_t refs = 0);
-
-T dateorder date_order() const { return do_date_order(); }
-T iter_type get_time(iter_type s, iter_type end, ios_base&amp; f,
- ios_base::iostate&amp; err, tm* t) const;
-T iter_type get_date(iter_type s, iter_type end, ios_base&amp; f,
- ios_base::iostate&amp; err, tm* t) const;
-T iter_type get_weekday(iter_type s, iter_type end, ios_base&amp; f,
- ios_base::iostate&amp; err, tm* t) const;
-T iter_type get_monthname(iter_type s, iter_type end, ios_base&amp; f,
- ios_base::iostate&amp; err, tm* t) const;
-T iter_type get_year(iter_type s, iter_type end, ios_base&amp; f,
- ios_base::iostate&amp; err, tm* t) const;
-T static locale::id id;
- protected:
- ~time_get(); // virtual
-X virtual dateorder do_date_order() const;
-S virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
-S virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
-S virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
-S virtual iter_type do_get_monthname(iter_type s, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
-S virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
- };
-
-
-
- 22.2.5.2 Template class [lib.locale.time.get.byname]
- time_get_byname
-
-X template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;
- class time_get_byname : public time_get&lt;charT, InputIterator&gt; {
- public:
-T typedef time_base::dateorder dateorder;
-T typedef InputIterator iter_type
-
-S explicit time_get_byname(const char*, size_t refs = 0);
- protected:
-S ~time_get_byname(); // virtual
-S virtual dateorder do_date_order() const;
-S virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
-S virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
-T virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
-T virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
-S virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&amp;,
- ios_base::iostate&amp; err, tm* t) const;
- };
- }
-
- 22.2.5.3 Template class time_put [lib.locale.time.put]
-
-X template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;
- class time_put : public locale::facet {
- public:
-T typedef charT char_type;
-T typedef OutputIterator iter_type;
-T explicit time_put(size_t refs = 0);
- // the following is implemented in terms of other member functions.
-S iter_type put(iter_type s, ios_base&amp; f, char_type fill, const tm* tmb,
- const charT* pattern, const charT* pat_end) const;
-T iter_type put(iter_type s, ios_base&amp; f, char_type fill,
- const tm* tmb, char format, char modifier = 0) const;
-T static locale::id id;
- protected:
-T ~time_put(); // virtual
-S virtual iter_type do_put(iter_type s, ios_base&amp;, char_type, const tm* t,
- char format, char modifier) const;
- };
-
-
-
- 22.2.5.4 Template class [lib.locale.time.put.byname]
- time_put_byname
-
-T template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;
- class time_put_byname : public time_put&lt;charT, OutputIterator&gt;
- {
- public:
-T typedef charT char_type;
-T typedef OutputIterator iter_type;
-
-T explicit time_put_byname(const char*, size_t refs = 0);
- protected:
-T ~time_put_byname(); // virtual
-S virtual iter_type do_put(iter_type s, ios_base&amp;, char_type, const tm* t,
- char format, char modifier) const;
- };
-
-
- 22.2.6.1 Template class money_get [lib.locale.money.get]
-
-X template &lt;class charT,
- class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;
- class money_get : public locale::facet {
- public:
-T typedef charT char_type;
-T typedef InputIterator iter_type;
-T typedef basic_string&lt;charT&gt; string_type;
-T explicit money_get(size_t refs = 0);
-T iter_type get(iter_type s, iter_type end, bool intl,
- ios_base&amp; f, ios_base::iostate&amp; err,
- long double&amp; units) const;
-T iter_type get(iter_type s, iter_type end, bool intl,
- ios_base&amp; f, ios_base::iostate&amp; err,
- string_type&amp; digits) const;
-T static locale::id id;
- protected:
-T ~money_get(); // virtual
-S virtual iter_type do_get(iter_type, iter_type, bool, ios_base&amp;,
- ios_base::iostate&amp; err, long double&amp; units) const;
-S virtual iter_type do_get(iter_type, iter_type, bool, ios_base&amp;,
- ios_base::iostate&amp; err, string_type&amp; digits) const;
- };
-
- 22.2.6.2 Template class money_put [lib.locale.money.put]
-
-X template &lt;class charT,
- class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;
- class money_put : public locale::facet {
- public:
-T typedef charT char_type;
-T typedef OutputIterator iter_type;
-T typedef basic_string&lt;charT&gt; string_type;
-T explicit money_put(size_t refs = 0);
-T iter_type put(iter_type s, bool intl, ios_base&amp; f,
- char_type fill, long double units) const;
-T iter_type put(iter_type s, bool intl, ios_base&amp; f,
- char_type fill, const string_type&amp; digits) const;
-T static locale::id id;
-
- protected:
-T ~money_put(); // virtual
-S virtual iter_type
- do_put(iter_type, bool, ios_base&amp;, char_type fill,
- long double units) const;
-S virtual iter_type
- do_put(iter_type, bool, ios_base&amp;, char_type fill,
- const string_type&amp; digits) const;
- };
-
-
- 22.2.6.3 Template class moneypunct [lib.locale.moneypunct]
-
-T class money_base {
- public:
-T enum part { none, space, symbol, sign, value };
-T struct pattern { char field[4]; };
- };
-
-X template &lt;class charT, bool International = false&gt;
- class moneypunct : public locale::facet, public money_base {
- public:
-T typedef charT char_type;
-T typedef basic_string&lt;charT&gt; string_type;
-T explicit moneypunct(size_t refs = 0);
-T charT decimal_point() const;
-T charT thousands_sep() const;
-T string grouping() const;
-T string_type curr_symbol() const;
-T string_type positive_sign() const;
-T string_type negative_sign() const;
-T int frac_digits() const;
-T pattern pos_format() const;
-T pattern neg_format() const;
-T static locale::id id;
-T static const bool intl = International;
- protected:
-T ~moneypunct(); // virtual
-S virtual charT do_decimal_point() const;
-S virtual charT do_thousands_sep() const;
-S virtual string do_grouping() const;
-S virtual string_type do_curr_symbol() const;
-S virtual string_type do_positive_sign() const;
-S virtual string_type do_negative_sign() const;
-S virtual int do_frac_digits() const;
-T virtual pattern do_pos_format() const;
-T virtual pattern do_neg_format() const;
- };
- }
-
- 22.2.6.4 Template class [lib.locale.moneypunct.byname]
- moneypunct_byname
-
-X template &lt;class charT, bool Intl = false&gt;
- class moneypunct_byname : public moneypunct&lt;charT, Intl&gt; {
- public:
-T typedef money_base::pattern pattern;
-T typedef basic_string&lt;charT&gt; string_type;
-
-T explicit moneypunct_byname(const char*, size_t refs = 0);
- protected:
-T ~moneypunct_byname(); // virtual
-S virtual charT do_decimal_point() const;
-S virtual charT do_thousands_sep() const;
-S virtual string do_grouping() const;
-S virtual string_type do_curr_symbol() const;
-S virtual string_type do_positive_sign() const;
-S virtual string_type do_negative_sign() const;
-S virtual int do_frac_digits() const;
-S virtual pattern do_pos_format() const;
-S virtual pattern do_neg_format() const;
- };
-
- 22.2.7.1 Template class messages [lib.locale.messages]
-
-T class messages_base {
- public:
-T typedef int catalog;
- };
-
-X template &lt;class charT&gt;
- class messages : public locale::facet, public messages_base {
- public:
-T typedef charT char_type;
-T typedef basic_string&lt;charT&gt; string_type;
-T explicit messages(size_t refs = 0);
-T catalog open(const basic_string&lt;char&gt;&amp; fn, const locale&amp;) const;
-T string_type get(catalog c, int set, int msgid,
- const string_type&amp; dfault) const;
-T void close(catalog c) const;
-T static locale::id id;
- protected:
-T ~messages(); // virtual
-S virtual catalog do_open(const basic_string&lt;char&gt;&amp;, const locale&amp;) const;
-S virtual string_type do_get(catalog, int set, int msgid,
- const string_type&amp; dfault) const;
-S virtual void do_close(catalog) const;
- };
-
- 22.2.7.2 Template class [lib.locale.messages.byname]
- messages_byname
-
-
-X template &lt;class charT&gt;
- class messages_byname : public messages&lt;charT&gt; {
- public:
-T typedef messages_base::catalog catalog;
-T typedef basic_string&lt;charT&gt; string_type;
-
-T explicit messages_byname(const char*, size_t refs = 0);
- protected:
-T ~messages_byname(); // virtual
-S virtual catalog do_open(const basic_string&lt;char&gt;&amp;, const locale&amp;) const;
-S virtual string_type do_get(catalog, int set, int msgid,
- const string_type&amp; dfault) const;
-S virtual void do_close(catalog) const;
- };
-
-
- 22.3 C Library Locales [lib.c.locales]
-
-
- Table 13--Header &lt;clocale&gt; synopsis
- Macros:
-X LC_ALL LC_COLLATE LC_CTYPE
-X LC_MONETARY LC_NUMERIC LC_TIME
-X NULL
-X Struct: lconv
-X Functions: localeconv setlocale
-
-
- 23.2 Sequences [lib.sequences]
-
- &lt;deque&gt;, &lt;list&gt;, &lt;queue&gt;, &lt;stack&gt;, and &lt;vector&gt;.
-
- Header &lt;deque&gt; synopsis
-
-T template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class deque;
-T template &lt;class T, class Allocator&gt;
- bool operator==(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt; (const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator!=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt; (const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt;=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt;=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- void swap(deque&lt;T,Allocator&gt;&amp; x, deque&lt;T,Allocator&gt;&amp; y);
- }
-
- Header &lt;list&gt; synopsis
-
-T template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class list;
-T template &lt;class T, class Allocator&gt;
- bool operator==(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator!=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- void swap(list&lt;T,Allocator&gt;&amp; x, list&lt;T,Allocator&gt;&amp; y);
- }
-
- Header &lt;queue&gt; synopsis
-
- namespace std {
-T template &lt;class T, class Container = deque&lt;T&gt; &gt; class queue;
-T template &lt;class T, class Container&gt;
- bool operator==(const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&lt; (const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator!=(const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&gt; (const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&gt;=(const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&lt;=(const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container = vector&lt;T&gt;,
- class Compare = less&lt;typename Container::value_type&gt; &gt;
-T class priority_queue;
- }
-
- Header &lt;stack&gt; synopsis
-
- namespace std {
-T template &lt;class T, class Container = deque&lt;T&gt; &gt; class stack;
-T template &lt;class T, class Container&gt;
- bool operator==(const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&lt; (const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator!=(const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&gt; (const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&gt;=(const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&lt;=(const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
- }
-
- Header &lt;vector&gt; synopsis
-
-T template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class vector;
-
-T template &lt;class T, class Allocator&gt;
- bool operator==(const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt; (const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator!=(const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt; (const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt;=(const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt;=(const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- void swap(vector&lt;T,Allocator&gt;&amp; x, vector&lt;T,Allocator&gt;&amp; y);
-
-T template &lt;class Allocator&gt; class vector&lt;bool,Allocator&gt;;
-T template &lt;class Allocator&gt;
- bool operator==(const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator&lt; (const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator!=(const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator&gt; (const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator&gt;=(const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator&lt;=(const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- void swap(vector&lt;bool,Allocator&gt;&amp; x, vector&lt;bool,Allocator&gt;&amp; y);
- }
-
- 23.2.1 Template class deque [lib.deque]
-
- template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;
-T class deque {
- public:
- // types:
-T typedef typename Allocator::reference reference;
-T typedef typename Allocator::const_reference const_reference;
-T typedef implementation defined iterator;
-T typedef implementation defined const_iterator;
-T typedef implementation defined size_type;
-T typedef implementation defined difference_type;
-T typedef T value_type;
-T typedef Allocator allocator_type;
-T typedef typename Allocator::pointer pointer;
-T typedef typename Allocator::const_pointer const_pointer;
-T typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;
-T typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;
- // _lib.deque.cons_ construct/copy/destroy:
-T explicit deque(const Allocator&amp; = Allocator());
-T explicit deque(size_type n, const T&amp; value = T(),
- const Allocator&amp; = Allocator());
-T template &lt;class InputIterator&gt;
- deque(InputIterator first, InputIterator last,
- const Allocator&amp; = Allocator());
-T deque(const deque&lt;T,Allocator&gt;&amp; x);
-T ~deque();
-T deque&lt;T,Allocator&gt;&amp; operator=(const deque&lt;T,Allocator&gt;&amp; x);
-T template &lt;class InputIterator&gt;
- void assign(InputIterator first, InputIterator last);
-T void assign(size_type n, const T&amp; t);
-T allocator_type get_allocator() const;
- // iterators:
-T iterator begin();
-T const_iterator begin() const;
-T iterator end();
-T const_iterator end() const;
-T reverse_iterator rbegin();
-T const_reverse_iterator rbegin() const;
-T reverse_iterator rend();
-T const_reverse_iterator rend() const;
- // _lib.deque.capacity_ capacity:
-T size_type size() const;
-T size_type max_size() const;
-T void resize(size_type sz, T c = T());
-T bool empty() const;
-
- // element access:
-T reference operator[](size_type n);
-T const_reference operator[](size_type n) const;
-T reference at(size_type n);
-T const_reference at(size_type n) const;
-T reference front();
-T const_reference front() const;
-T reference back();
-T const_reference back() const;
- // _lib.deque.modifiers_ modifiers:
-T void push_front(const T&amp; x);
-T void push_back(const T&amp; x);
-T iterator insert(iterator position, const T&amp; x);
-T void insert(iterator position, size_type n, const T&amp; x);
-T template &lt;class InputIterator&gt;
- void insert (iterator position,
- InputIterator first, InputIterator last);
-T void pop_front();
-T void pop_back();
-T iterator erase(iterator position);
-T iterator erase(iterator first, iterator last);
-T void swap(deque&lt;T,Allocator&gt;&amp;);
-T void clear();
- };
-T template &lt;class T, class Allocator&gt;
- bool operator==(const deque&lt;T,Allocator&gt;&amp; x,
- const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt; (const deque&lt;T,Allocator&gt;&amp; x,
- const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator!=(const deque&lt;T,Allocator&gt;&amp; x,
- const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt; (const deque&lt;T,Allocator&gt;&amp; x,
- const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt;=(const deque&lt;T,Allocator&gt;&amp; x,
- const deque&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt;=(const deque&lt;T,Allocator&gt;&amp; x,
- const deque&lt;T,Allocator&gt;&amp; y);
- // specialized algorithms:
-T template &lt;class T, class Allocator&gt;
- void swap(deque&lt;T,Allocator&gt;&amp; x, deque&lt;T,Allocator&gt;&amp; y);
-
-
- 23.2.2 Template class list [lib.list]
-
-T template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;
- class list {
- public:
- // types:
-T typedef typename Allocator::reference reference;
-T typedef typename Allocator::const_reference const_reference;
-T typedef implementation defined iterator;
-T typedef implementation defined const_iterator;
-T typedef implementation defined size_type;
-T typedef implementation defined difference_type;
-T typedef T value_type;
-T typedef Allocator allocator_type;
-T typedef typename Allocator::pointer pointer;
-T typedef typename Allocator::const_pointer const_pointer;
-T typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;
-T typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;
-
- // _lib.list.cons_ construct/copy/destroy:
-T explicit list(const Allocator&amp; = Allocator());
-T explicit list(size_type n, const T&amp; value = T(),
- const Allocator&amp; = Allocator());
-T template &lt;class InputIterator&gt;
- list(InputIterator first, InputIterator last,
- const Allocator&amp; = Allocator());
-T list(const list&lt;T,Allocator&gt;&amp; x);
-T ~list();
-T list&lt;T,Allocator&gt;&amp; operator=(const list&lt;T,Allocator&gt;&amp; x);
-T template &lt;class InputIterator&gt;
- void assign(InputIterator first, InputIterator last);
-T void assign(size_type n, const T&amp; t);
-T allocator_type get_allocator() const;
- // iterators:
-T iterator begin();
-T const_iterator begin() const;
-T iterator end();
-T const_iterator end() const;
-T reverse_iterator rbegin();
-T const_reverse_iterator rbegin() const;
-T reverse_iterator rend();
-T const_reverse_iterator rend() const;
- // _lib.list.capacity_ capacity:
-T bool empty() const;
-T size_type size() const;
-T size_type max_size() const;
-T void resize(size_type sz, T c = T());
- // element access:
-T reference front();
-T const_reference front() const;
-T reference back();
-T const_reference back() const;
- // _lib.list.modifiers_ modifiers:
-T void push_front(const T&amp; x);
-T void pop_front();
-T void push_back(const T&amp; x);
-T void pop_back();
-T iterator insert(iterator position, const T&amp; x);
-T void insert(iterator position, size_type n, const T&amp; x);
-T template &lt;class InputIterator&gt;
- void insert(iterator position, InputIterator first,
- InputIterator last);
-T iterator erase(iterator position);
-T iterator erase(iterator position, iterator last);
-T void swap(list&lt;T,Allocator&gt;&amp;);
-T void clear();
- // _lib.list.ops_ list operations:
-T void splice(iterator position, list&lt;T,Allocator&gt;&amp; x);
-T void splice(iterator position, list&lt;T,Allocator&gt;&amp; x, iterator i);
-T void splice(iterator position, list&lt;T,Allocator&gt;&amp; x, iterator first,
- iterator last);
-T void remove(const T&amp; value);
-T template &lt;class Predicate&gt; void remove_if(Predicate pred);
-
-T void unique();
-T template &lt;class BinaryPredicate&gt;
- void unique(BinaryPredicate binary_pred);
-T void merge(list&lt;T,Allocator&gt;&amp; x);
-T template &lt;class Compare&gt; void merge(list&lt;T,Allocator&gt;&amp; x, Compare comp);
- void sort();
-T template &lt;class Compare&gt; void sort(Compare comp);
- void reverse();
- };
-T template &lt;class T, class Allocator&gt;
- bool operator==(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator!=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);
- // specialized algorithms:
-T template &lt;class T, class Allocator&gt;
- void swap(list&lt;T,Allocator&gt;&amp; x, list&lt;T,Allocator&gt;&amp; y);
-
-
- 23.2.3.1 Template class queue [lib.queue]
-
-T template &lt;class T, class Container = deque&lt;T&gt; &gt;
- class queue {
- public:
-T typedef typename Container::value_type value_type;
-T typedef typename Container::size_type size_type;
-T typedef Container container_type;
- protected:
-T Container c;
- public:
-T explicit queue(const Container&amp; = Container());
-
-T bool empty() const { return c.empty(); }
-T size_type size() const { return c.size(); }
-T value_type&amp; front() { return c.front(); }
-T const value_type&amp; front() const { return c.front(); }
-T value_type&amp; back() { return c.back(); }
-T const value_type&amp; back() const { return c.back(); }
-T void push(const value_type&amp; x) { c.push_back(x); }
-T void pop() { c.pop_front(); }
- };
-
-T template &lt;class T, class Container&gt;
- bool operator==(const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&lt; (const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator!=(const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&gt; (const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&gt;=(const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&lt;=(const queue&lt;T, Container&gt;&amp; x,
- const queue&lt;T, Container&gt;&amp; y);
-
- 23.2.3.2 Template class priority_queue [lib.priority.queue]
-
-T template &lt;class T, class Container = vector&lt;T&gt;,
- class Compare = less&lt;typename Container::value_type&gt; &gt;
- class priority_queue {
- public:
-T typedef typename Container::value_type value_type;
-T typedef typename Container::size_type size_type;
-T typedef Container container_type;
- protected:
-T Container c;
-T Compare comp;
- public:
-T explicit priority_queue(const Compare&amp; x = Compare(),
- const Container&amp; = Container());
-T template &lt;class InputIterator&gt;
- priority_queue(InputIterator first, InputIterator last,
- const Compare&amp; x = Compare(),
- const Container&amp; = Container());
-
-T bool empty() const { return c.empty(); }
-T size_type size() const { return c.size(); }
-T const value_type&amp; top() const { return c.front(); }
-T void push(const value_type&amp; x);
-T void pop();
- };
-
- 23.2.3.3 Template class stack [lib.stack]
-
-T template &lt;class T, class Container = deque&lt;T&gt; &gt;
- class stack {
- public:
-T typedef typename Container::value_type value_type;
-T typedef typename Container::size_type size_type;
-T typedef Container container_type;
- protected:
-T Container c;
- public:
-T explicit stack(const Container&amp; = Container());
-
-T bool empty() const { return c.empty(); }
-T size_type size() const { return c.size(); }
-T value_type&amp; top() { return c.back(); }
-T const value_type&amp; top() const { return c.back(); }
-T void push(const value_type&amp; x) { c.push_back(x); }
-T void pop() { c.pop_back(); }
- };
-T template &lt;class T, class Container&gt;
- bool operator==(const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&lt; (const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator!=(const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&gt; (const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&gt;=(const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-T template &lt;class T, class Container&gt;
- bool operator&lt;=(const stack&lt;T, Container&gt;&amp; x,
- const stack&lt;T, Container&gt;&amp; y);
-
- 23.2.4 Template class vector [lib.vector]
-
- template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;
-T class vector {
- public:
- // types:
-T typedef typename Allocator::reference reference;
-T typedef typename Allocator::const_reference const_reference;
-T typedef implementation defined iterator;
-T typedef implementation defined const_iterator;
-T typedef implementation defined size_type;
-T typedef implementation defined difference_type;
-T typedef T value_type;
-T typedef Allocator allocator_type;
-T typedef typename Allocator::pointer pointer;
-T typedef typename Allocator::const_pointer const_pointer
-T typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;
-T typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;
- // _lib.vector.cons_ construct/copy/destroy:
-T explicit vector(const Allocator&amp; = Allocator());
-T explicit vector(size_type n, const T&amp; value = T(),
- const Allocator&amp; = Allocator());
-T template &lt;class InputIterator&gt;
- vector(InputIterator first, InputIterator last,
- const Allocator&amp; = Allocator());
-T vector(const vector&lt;T,Allocator&gt;&amp; x);
-T ~vector();
-T vector&lt;T,Allocator&gt;&amp; operator=(const vector&lt;T,Allocator&gt;&amp; x);
-T template &lt;class InputIterator&gt;
- void assign(InputIterator first, InputIterator last);
-T void assign(size_type n, const T&amp; u);
-T allocator_type get_allocator() const;
- // iterators:
-T iterator begin();
-T const_iterator begin() const;
-T iterator end();
-T const_iterator end() const;
-T reverse_iterator rbegin();
-T const_reverse_iterator rbegin() const;
-T reverse_iterator rend();
-T const_reverse_iterator rend() const;
- // _lib.vector.capacity_ capacity:
-T size_type size() const;
-T size_type max_size() const;
-T void resize(size_type sz, T c = T());
-T size_type capacity() const;
-T bool empty() const;
-T void reserve(size_type n);
-
- // element access:
-T reference operator[](size_type n);
-T const_reference operator[](size_type n) const;
-T const_reference at(size_type n) const;
-T reference at(size_type n);
-T reference front();
-T const_reference front() const;
-T reference back();
-T const_reference back() const;
- // _lib.vector.modifiers_ modifiers:
-T void push_back(const T&amp; x);
-T void pop_back();
-T iterator insert(iterator position, const T&amp; x);
-T void insert(iterator position, size_type n, const T&amp; x);
-T template &lt;class InputIterator&gt;
- void insert(iterator position,
- InputIterator first, InputIterator last);
-T iterator erase(iterator position);
-T iterator erase(iterator first, iterator last);
-T void swap(vector&lt;T,Allocator&gt;&amp;);
-T void clear();
- };
-
-T template &lt;class T, class Allocator&gt;
- bool operator==(const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt; (const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator!=(const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt; (const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&gt;=(const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
-T template &lt;class T, class Allocator&gt;
- bool operator&lt;=(const vector&lt;T,Allocator&gt;&amp; x,
- const vector&lt;T,Allocator&gt;&amp; y);
- // specialized algorithms:
-T template &lt;class T, class Allocator&gt;
- void swap(vector&lt;T,Allocator&gt;&amp; x, vector&lt;T,Allocator&gt;&amp; y);
-
-
- 23.2.5 Class vector&lt;bool&gt; [lib.vector.bool]
-
-T template &lt;class Allocator&gt; class vector&lt;bool, Allocator&gt; {
- public:
- // types:
-T typedef bool const_reference;
-T typedef implementation defined iterator;
-T typedef implementation defined const_iterator;
-T typedef implementation defined size_type;
-T typedef implementation defined difference_type;
-T typedef bool value_type;
-T typedef Allocator allocator_type;
-T typedef implementation defined pointer;
-T typedef implementation defined const_pointer
-T typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;
-T typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;
- // bit reference:
-T class reference {
- friend class vector;
-T reference();
- public:
-T ~reference();
-T operator bool() const;
-T reference&amp; operator=(const bool x);
-T reference&amp; operator=(const reference&amp; x);
-T void flip(); // flips the bit
- };
-
- // construct/copy/destroy:
-T explicit vector(const Allocator&amp; = Allocator());
-T explicit vector(size_type n, const bool&amp; value = bool(),
- const Allocator&amp; = Allocator());
-T template &lt;class InputIterator&gt;
- vector(InputIterator first, InputIterator last,
- const Allocator&amp; = Allocator());
-T vector(const vector&lt;bool,Allocator&gt;&amp; x);
-T ~vector();
-T vector&lt;bool,Allocator&gt;&amp; operator=(const vector&lt;bool,Allocator&gt;&amp; x);
-T template &lt;class InputIterator&gt;
- void assign(InputIterator first, InputIterator last);
-T void assign(size_type n, const T&amp; t);
-T allocator_type get_allocator() const;
- // iterators:
-T iterator begin();
-T const_iterator begin() const;
-T iterator end();
-T const_iterator end() const;
-T reverse_iterator rbegin();
-T const_reverse_iterator rbegin() const;
-T reverse_iterator rend();
-T const_reverse_iterator rend() const;
- // capacity:
-T size_type size() const;
-T size_type max_size() const;
-T void resize(size_type sz, bool c = false);
-T size_type capacity() const;
-T bool empty() const;
-T void reserve(size_type n);
- // element access:
-T reference operator[](size_type n);
-T const_reference operator[](size_type n) const;
-T const_reference at(size_type n) const;
-T reference at(size_type n);
-T reference front();
-T const_reference front() const;
-T reference back();
-T const_reference back() const;
- // modifiers:
-T void push_back(const bool&amp; x);
-T void pop_back();
-T iterator insert(iterator position, const bool&amp; x);
-T void insert (iterator position, size_type n, const bool&amp; x);
-T template &lt;class InputIterator&gt;
- void insert(iterator position,
- InputIterator first, InputIterator last);
-T iterator erase(iterator position);
-T iterator erase(iterator first, iterator last);
-T void swap(vector&lt;bool,Allocator&gt;&amp;);
-T static void swap(reference x, reference y);
-T void flip(); // flips all bits
-T void clear();
- };
-
-T template &lt;class Allocator&gt;
- bool operator==(const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator&lt; (const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator!=(const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator&gt; (const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator&gt;=(const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
-T template &lt;class Allocator&gt;
- bool operator&lt;=(const vector&lt;bool,Allocator&gt;&amp; x,
- const vector&lt;bool,Allocator&gt;&amp; y);
- // specialized algorithms:
-T template &lt;class Allocator&gt;
- void swap(vector&lt;bool,Allocator&gt;&amp; x, vector&lt;bool,Allocator&gt;&amp; y);
-
- 23.3 Associative containers [lib.associative]
-
- &lt;map&gt; and &lt;set&gt;:
-
- Header &lt;map&gt; synopsis
-
- template &lt;class Key, class T, class Compare = less&lt;Key&gt;,
- class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;
-T class map;
-
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator==(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&lt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator!=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&gt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&gt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&lt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- void swap(map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare = less&lt;Key&gt;,
- class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;
- class multimap;
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator==(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&lt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator!=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&gt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&gt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&lt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
- }
-
- Header &lt;set&gt; synopsis
-
- template &lt;class Key, class Compare = less&lt;Key&gt;,
- class Allocator = allocator&lt;Key&gt; &gt;
-T class set;
-
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator==(const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&lt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator!=(const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&gt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&gt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&lt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- void swap(set&lt;Key,Compare,Allocator&gt;&amp; x,
- set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare = less&lt;Key&gt;,
- class Allocator = allocator&lt;Key&gt; &gt;
- class multiset;
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator==(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&lt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator!=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&gt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&gt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&lt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- void swap(multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- multiset&lt;Key,Compare,Allocator&gt;&amp; y);
- }
-
- 23.3.1 Template class map [lib.map]
-
- template &lt;class Key, class T, class Compare = less&lt;Key&gt;,
- class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;
-T class map {
- public:
- // types:
-T typedef Key key_type;
-T typedef T mapped_type;
-T typedef pair&lt;const Key, T&gt; value_type;
-T typedef Compare key_compare;
-T typedef Allocator allocator_type;
-T typedef typename Allocator::reference reference;
-T typedef typename Allocator::const_reference const_reference;
-T typedef implementation defined iterator;
-T typedef implementation defined const_iterator;
-T typedef implementation defined size_type;
-T typedef implementation defined difference_type;
-T typedef typename Allocator::pointer pointer;
-T typedef typename Allocator::const_pointer const_pointer;
-T typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;
-T typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;
-T class value_compare
- : public binary_function&lt;value_type,value_type,bool&gt; {
- friend class map;
- protected:
-T Compare comp;
-T value_compare(Compare c) : comp(c) {}
- public:
-T bool operator()(const value_type&amp; x, const value_type&amp; y) const {
- return comp(x.first, y.first);
- }
- };
-
- // _lib.map.cons_ construct/copy/destroy:
-T explicit map(const Compare&amp; comp = Compare(),
- const Allocator&amp; = Allocator());
-T template &lt;class InputIterator&gt;
- map(InputIterator first, InputIterator last,
- const Compare&amp; comp = Compare(), const Allocator&amp; = Allocator());
-T map(const map&lt;Key,T,Compare,Allocator&gt;&amp; x);
-T ~map();
-T map&lt;Key,T,Compare,Allocator&gt;&amp;
- operator=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x);
- // iterators:
-T iterator begin();
-T const_iterator begin() const;
-T iterator end();
-T const_iterator end() const;
-T reverse_iterator rbegin();
-T const_reverse_iterator rbegin() const;
-T reverse_iterator rend();
-T const_reverse_iterator rend() const;
- // capacity:
-T bool empty() const;
-T size_type size() const;
-T size_type max_size() const;
- // _lib.map.access_ element access:
-T T&amp; operator[](const key_type&amp; x);
- // modifiers:
-T pair&lt;iterator, bool&gt; insert(const value_type&amp; x);
-T iterator insert(iterator position, const value_type&amp; x);
-T template &lt;class InputIterator&gt;
- void insert(InputIterator first, InputIterator last);
-T void erase(iterator position);
-T size_type erase(const key_type&amp; x);
-T void erase(iterator first, iterator last);
-T void swap(map&lt;Key,T,Compare,Allocator&gt;&amp;);
-T void clear();
- // observers:
-T key_compare key_comp() const;
-T value_compare value_comp() const;
- // _lib.map.ops_ map operations:
-T iterator find(const key_type&amp; x);
-T const_iterator find(const key_type&amp; x) const;
-T size_type count(const key_type&amp; x) const;
-T iterator lower_bound(const key_type&amp; x);
-T const_iterator lower_bound(const key_type&amp; x) const;
-T iterator upper_bound(const key_type&amp; x);
-T const_iterator upper_bound(const key_type&amp; x) const;
-T pair&lt;iterator,iterator&gt;
- equal_range(const key_type&amp; x);
-T pair&lt;const_iterator,const_iterator&gt;
- equal_range(const key_type&amp; x) const;
- };
-
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator==(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&lt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator!=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&gt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&gt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&lt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const map&lt;Key,T,Compare,Allocator&gt;&amp; y);
- // specialized algorithms:
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- void swap(map&lt;Key,T,Compare,Allocator&gt;&amp; x,
- map&lt;Key,T,Compare,Allocator&gt;&amp; y);
-
- 23.3.2 Template class multimap [lib.multimap]
-
- template &lt;class Key, class T, class Compare = less&lt;Key&gt;,
- class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;
-T class multimap {
- public:
- // types:
-T typedef Key key_type;
-T typedef T mapped_type;
-T typedef pair&lt;const Key,T&gt; value_type;
-T typedef Compare key_compare;
-T typedef Allocator allocator_type;
-T typedef typename Allocator::reference reference;
-T typedef typename Allocator::const_reference const_reference;
-T typedef implementation defined iterator;
-T typedef implementation defined const_iterator;
-T typedef implementation defined size_type;
-T typedef implementation defined difference_type
-T typedef typename Allocator::pointer pointer;
-T typedef typename Allocator::const_pointer const_pointer;
-T typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;
-T typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;
-T class value_compare
- : public binary_function&lt;value_type,value_type,bool&gt; {
- friend class multimap;
- protected:
-T Compare comp;
-T value_compare(Compare c) : comp(c) {}
- public:
-T bool operator()(const value_type&amp; x, const value_type&amp; y) const {
- return comp(x.first, y.first);
- }
- };
- // construct/copy/destroy:
-T explicit multimap(const Compare&amp; comp = Compare(),
- const Allocator&amp; = Allocator());
-T template &lt;class InputIterator&gt;
- multimap(InputIterator first, InputIterator last,
- const Compare&amp; comp = Compare(),
- const Allocator&amp; = Allocator());
-T multimap(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x);
-T ~multimap();
-T multimap&lt;Key,T,Compare,Allocator&gt;&amp;
- operator=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x);
-T allocator_type get_allocator() const;
-
- // iterators:
-T iterator begin();
-T const_iterator begin() const;
-T iterator end();
-T const_iterator end() const;
-T reverse_iterator rbegin();
-T const_reverse_iterator rbegin() const;
-T reverse_iterator rend();
-T const_reverse_iterator rend() const;
- // capacity:
-T bool empty() const;
-T size_type size() const;
-T size_type max_size() const;
- // modifiers:
-T iterator insert(const value_type&amp; x);
-T iterator insert(iterator position, const value_type&amp; x);
-T template &lt;class InputIterator&gt;
- void insert(InputIterator first, InputIterator last);
-T void erase(iterator position);
-T size_type erase(const key_type&amp; x);
-T void erase(iterator first, iterator last);
-T void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp;);
-T void clear();
- // observers:
-T key_compare key_comp() const;
-T value_compare value_comp() const;
- // map operations:
-T iterator find(const key_type&amp; x);
-T const_iterator find(const key_type&amp; x) const;
-T size_type count(const key_type&amp; x) const;
-T iterator lower_bound(const key_type&amp; x);
-T const_iterator lower_bound(const key_type&amp; x) const;
-T iterator upper_bound(const key_type&amp; x);
-T const_iterator upper_bound(const key_type&amp; x) const;
-T pair&lt;iterator,iterator&gt; equal_range(const key_type&amp; x);
-T pair&lt;const_iterator,const_iterator&gt; equal_range(const key_type&amp; x) const;
- };
-
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator==(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&lt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator!=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&gt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&gt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- bool operator&lt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
- // specialized algorithms:
-T template &lt;class Key, class T, class Compare, class Allocator&gt;
- void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,
- multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);
-
-
- 23.3.3 Template class set [lib.set]
-
- template &lt;class Key, class Compare = less&lt;Key&gt;,
- class Allocator = allocator&lt;Key&gt; &gt;
-T class set {
- public:
- // types:
-T typedef Key key_type;
-T typedef Key value_type;
-T typedef Compare key_compare;
-T typedef Compare value_compare;
-T typedef Allocator allocator_type;
-T typedef typename Allocator::reference reference;
-T typedef typename Allocator::const_reference const_reference;
-T typedef implementation defined iterator;
-T typedef implementation defined const_iterator;
-T typedef implementation defined size_type;
-T typedef implementation defined difference_type;
-T typedef typename Allocator::pointer pointer;
-T typedef typename Allocator::const_pointer const_pointer;
-T typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;
-T typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;
- // _lib.set.cons_ construct/copy/destroy:
-T explicit set(const Compare&amp; comp = Compare(),
- const Allocator&amp; = Allocator());
-T template &lt;class InputIterator&gt;
- set(InputIterator first, InputIterator last,
- const Compare&amp; comp = Compare(), const Allocator&amp; = Allocator());
-T set(const set&lt;Key,Compare,Allocator&gt;&amp; x);
-T ~set();
-T set&lt;Key,Compare,Allocator&gt;&amp;
- operator=(const set&lt;Key,Compare,Allocator&gt;&amp; x);
-T allocator_type get_allocator() const;
- // iterators:
-T iterator begin();
-T const_iterator begin() const;
-T iterator end();
-T const_iterator end() const;
-T reverse_iterator rbegin();
-T const_reverse_iterator rbegin() const;
-T reverse_iterator rend();
-T const_reverse_iterator rend() const;
- // capacity:
-T bool empty() const;
-T size_type size() const;
-T size_type max_size() const;
- // modifiers:
-T pair&lt;iterator,bool&gt; insert(const value_type&amp; x);
-T iterator insert(iterator position, const value_type&amp; x);
-T template &lt;class InputIterator&gt;
-T void insert(InputIterator first, InputIterator last);
-T void erase(iterator position);
-T size_type erase(const key_type&amp; x);
-T void erase(iterator first, iterator last);
-T void swap(set&lt;Key,Compare,Allocator&gt;&amp;);
-T void clear();
-
- // observers:
-T key_compare key_comp() const;
-T value_compare value_comp() const;
- // set operations:
-T iterator find(const key_type&amp; x) const;
-T size_type count(const key_type&amp; x) const;
-T iterator lower_bound(const key_type&amp; x) const;
-T iterator upper_bound(const key_type&amp; x) const;
-T pair&lt;iterator,iterator&gt; equal_range(const key_type&amp; x) const;
- };
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator==(const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&lt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator!=(const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&gt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&gt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&lt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,
- const set&lt;Key,Compare,Allocator&gt;&amp; y);
- // specialized algorithms:
-T template &lt;class Key, class Compare, class Allocator&gt;
- void swap(set&lt;Key,Compare,Allocator&gt;&amp; x,
- set&lt;Key,Compare,Allocator&gt;&amp; y);
-
- 23.3.4 Template class multiset [lib.multiset]
-
- template &lt;class Key, class Compare = less&lt;Key&gt;,
- class Allocator = allocator&lt;Key&gt; &gt;
-T class multiset {
- public:
- // types:
-T typedef Key key_type;
-T typedef Key value_type;
-T typedef Compare key_compare;
-T typedef Compare value_compare;
-T typedef Allocator allocator_type;
-T typedef typename Allocator::reference reference;
-T typedef typename Allocator::const_reference const_reference;
-T typedef implementation defined iterator;
-T typedef implementation defined const_iterator;
-T typedef implementation defined size_type;
-T typedef implementation defined difference_type
-T typedef typename Allocator::pointer pointer;
-T typedef typename Allocator::const_pointer const_pointer;
-T typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;
-T typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;
-
- // construct/copy/destroy:
-T explicit multiset(const Compare&amp; comp = Compare(),
- const Allocator&amp; = Allocator());
-T template &lt;class InputIterator&gt;
- multiset(InputIterator first, InputIterator last,
- const Compare&amp; comp = Compare(),
- const Allocator&amp; = Allocator());
-T multiset(const multiset&lt;Key,Compare,Allocator&gt;&amp; x);
-T ~multiset();
-T multiset&lt;Key,Compare,Allocator&gt;&amp;
- operator=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x);
-T allocator_type get_allocator() const;
- // iterators:
-T iterator begin();
-T const_iterator begin() const;
-T iterator end();
-T const_iterator end() const;
-T reverse_iterator rbegin();
-T const_reverse_iterator rbegin() const;
-T reverse_iterator rend();
-T const_reverse_iterator rend() const;
- // capacity:
-T bool empty() const;
-T size_type size() const;
-T size_type max_size() const;
- // modifiers:
-T iterator insert(const value_type&amp; x);
-T iterator insert(iterator position, const value_type&amp; x);
-T template &lt;class InputIterator&gt;
- void insert(InputIterator first, InputIterator last);
-T void erase(iterator position);
-T size_type erase(const key_type&amp; x);
-T void erase(iterator first, iterator last);
-T void swap(multiset&lt;Key,Compare,Allocator&gt;&amp;);
-T void clear();
- // observers:
-T key_compare key_comp() const;
-T value_compare value_comp() const;
- // set operations:
-T iterator find(const key_type&amp; x) const;
-T size_type count(const key_type&amp; x) const;
-T iterator lower_bound(const key_type&amp; x) const;
-T iterator upper_bound(const key_type&amp; x) const;
-T pair&lt;iterator,iterator&gt; equal_range(const key_type&amp; x) const;
- };
-
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator==(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&lt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator!=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&gt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&gt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-T template &lt;class Key, class Compare, class Allocator&gt;
- bool operator&lt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- const multiset&lt;Key,Compare,Allocator&gt;&amp; y);
- // specialized algorithms:
-T template &lt;class Key, class Compare, class Allocator&gt;
- void swap(multiset&lt;Key,Compare,Allocator&gt;&amp; x,
- multiset&lt;Key,Compare,Allocator&gt;&amp; y);
-
- 23.3.5 Template class bitset [lib.template.bitset]
-
- Header &lt;bitset&gt; synopsis
-
-T template &lt;size_t N&gt; class bitset;
- // _lib.bitset.operators_ bitset operations:
-T template &lt;size_t N&gt;
- bitset&lt;N&gt; operator&amp;(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);
-T template &lt;size_t N&gt;
- bitset&lt;N&gt; operator|(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);
-T template &lt;size_t N&gt;
- bitset&lt;N&gt; operator^(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);
-T template &lt;class charT, class traits, size_t N&gt;
- basic_istream&lt;charT, traits&gt;&amp;
- operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp; is, bitset&lt;N&gt;&amp; x);
-T template &lt;class charT, class traits, size_t N&gt;
- basic_ostream&lt;charT, traits&gt;&amp;
- operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp; os, const bitset&lt;N&gt;&amp; x);
-
-T template&lt;size_t N&gt; class bitset {
- public:
- // bit reference:
-T class reference {
- friend class bitset;
-T reference();
- public:
-T ~reference();
-T reference&amp; operator=(bool x); // for b[i] = x;
-T reference&amp; operator=(const reference&amp;); // for b[i] = b[j];
-T bool operator~() const; // flips the bit
-T operator bool() const; // for x = b[i];
-T reference&amp; flip(); // for b[i].flip();
- };
-
- // _lib.bitset.cons_ constructors:
-T bitset();
-T bitset(unsigned long val);
-T template&lt;class charT, class traits, class Allocator&gt;
- explicit bitset(
- const basic_string&lt;charT,traits,Allocator&gt;&amp; str,
- typename basic_string&lt;charT,traits,Allocator&gt;::size_type pos = 0,
- typename basic_string&lt;charT,traits,Allocator&gt;::size_type n =
- basic_string&lt;charT,traits,Allocator&gt;::npos);
- // _lib.bitset.members_ bitset operations:
-T bitset&lt;N&gt;&amp; operator&amp;=(const bitset&lt;N&gt;&amp; rhs);
-T bitset&lt;N&gt;&amp; operator|=(const bitset&lt;N&gt;&amp; rhs);
-T bitset&lt;N&gt;&amp; operator^=(const bitset&lt;N&gt;&amp; rhs);
-T bitset&lt;N&gt;&amp; operator&lt;&lt;=(size_t pos);
-T bitset&lt;N&gt;&amp; operator&gt;&gt;=(size_t pos);
-T bitset&lt;N&gt;&amp; set();
-T bitset&lt;N&gt;&amp; set(size_t pos, int val = true);
-T bitset&lt;N&gt;&amp; reset();
-T bitset&lt;N&gt;&amp; reset(size_t pos);
-T bitset&lt;N&gt; operator~() const;
-T bitset&lt;N&gt;&amp; flip();
-T bitset&lt;N&gt;&amp; flip(size_t pos);
- // element access:
-T reference operator[](size_t pos); // for b[i];
-T unsigned long to_ulong() const;
-T template &lt;class charT, class traits, class Allocator&gt;
- basic_string&lt;charT, traits, Allocator&gt; to_string() const;
-T size_t count() const;
-T size_t size() const;
-T bool operator==(const bitset&lt;N&gt;&amp; rhs) const;
-T bool operator!=(const bitset&lt;N&gt;&amp; rhs) const;
-T bool test(size_t pos) const;
-T bool any() const;
-T bool none() const;
-T bitset&lt;N&gt; operator&lt;&lt;(size_t pos) const;
-T bitset&lt;N&gt; operator&gt;&gt;(size_t pos) const;
- };
-
-
-
-
- 24.2 Header &lt;iterator&gt; synopsis [lib.iterator.synopsis]
-
- // _lib.iterator.primitives_, primitives:
-T template&lt;class Iterator&gt; struct iterator_traits;
-T template&lt;class T&gt; struct iterator_traits&lt;T*&gt;;
-
-X template&lt;class Category, class T, class Distance = ptrdiff_t,
- class Pointer = T*, class Reference = T&amp;&gt; struct iterator;
-T struct input_iterator_tag {};
-T struct output_iterator_tag {};
-T struct forward_iterator_tag: public input_iterator_tag {};
-T struct bidirectional_iterator_tag: public forward_iterator_tag {};
-T struct random_access_iterator_tag: public bidirectional_iterator_tag {};
- // _lib.iterator.operations_, iterator operations:
-T template &lt;class InputIterator, class Distance&gt;
- void advance(InputIterator&amp; i, Distance n);
-T template &lt;class InputIterator&gt;
- typename iterator_traits&lt;InputIterator&gt;::difference_type
- distance(InputIterator first, InputIterator last);
- // _lib.predef.iterators_, predefined iterators:
-X template &lt;class Iterator&gt; class reverse_iterator;
-T template &lt;class Iterator&gt;
- bool operator==(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator&lt;(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator!=(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator&gt;(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator&gt;=(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator&lt;=(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- typename reverse_iterator&lt;Iterator&gt;::difference_type operator-(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- reverse_iterator&lt;Iterator&gt;
- operator+(
- typename reverse_iterator&lt;Iterator&gt;::difference_type n,
- const reverse_iterator&lt;Iterator&gt;&amp; x);
-
-X template &lt;class Container&gt; class back_insert_iterator;
-T template &lt;class Container&gt;
- back_insert_iterator&lt;Container&gt; back_inserter(Container&amp; x);
-X template &lt;class Container&gt; class front_insert_iterator;
-T template &lt;class Container&gt;
- front_insert_iterator&lt;Container&gt; front_inserter(Container&amp; x);
-X template &lt;class Container&gt; class insert_iterator;
-T template &lt;class Container, class Iterator&gt;
- insert_iterator&lt;Container&gt; inserter(Container&amp; x, Iterator i);
- // _lib.stream.iterators_, stream iterators:
-X template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt;,
- class Distance = ptrdiff_t&gt;
- class istream_iterator;
- template &lt;class T, class charT, class traits, class Distance&gt;
-X bool operator==(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,
- const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);
- template &lt;class T, class charT, class traits, class Distance&gt;
-X bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,
- const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);
-X template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt; &gt;
- class ostream_iterator;
-X template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class istreambuf_iterator;
-X template &lt;class charT, class traits&gt;
- bool operator==(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,
- const istreambuf_iterator&lt;charT,traits&gt;&amp; b);
-X template &lt;class charT, class traits&gt;
- bool operator!=(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,
- const istreambuf_iterator&lt;charT,traits&gt;&amp; b);
-T template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class ostreambuf_iterator;
-
- 24.3 Iterator primitives [lib.iterator.primitives]
-
-T template&lt;class Iterator&gt; struct iterator_traits {
-T typedef typename Iterator::difference_type difference_type;
-T typedef typename Iterator::value_type value_type;
-T typedef typename Iterator::pointer pointer;
-T typedef typename Iterator::reference reference;
-T typedef typename Iterator::iterator_category iterator_category;
- };
-
-T template&lt;class T&gt; struct iterator_traits&lt;T*&gt; {
-T typedef ptrdiff_t difference_type;
-T typedef T value_type;
-T typedef T* pointer;
-T typedef T&amp; reference;
-T typedef random_access_iterator_tag iterator_category;
- };
-
-T template&lt;class T&gt; struct iterator_traits&lt;const T*&gt; {
-T typedef ptrdiff_t difference_type;
-T typedef T value_type;
-T typedef const T* pointer;
-T typedef const T&amp; reference;
-T typedef random_access_iterator_tag iterator_category;
- };
-
- 24.3.2 Basic iterator [lib.iterator.basic]
-
- template&lt;class Category, class T, class Distance = ptrdiff_t,
- class Pointer = T*, class Reference = T&amp;&gt;
-X struct iterator {
-T typedef T value_type;
-T typedef Distance difference_type;
-T typedef Pointer pointer;
-T typedef Reference reference;
-T typedef Category iterator_category;
- };
-
- 24.3.3 Standard iterator tags [lib.std.iterator.tags]
-
-T struct input_iterator_tag {};
-T struct output_iterator_tag {};
-T struct forward_iterator_tag: public input_iterator_tag {};
-T struct bidirectional_iterator_tag: public forward_iterator_tag {};
-T struct random_access_iterator_tag: public bidirectional_iterator_tag {};
-
-
- 24.4.1 Reverse iterators [lib.reverse.iterators]
-
- template &lt;class Iterator&gt;
-X class reverse_iterator : public
- iterator&lt;typename iterator_traits&lt;Iterator&gt;::iterator_category,
- typename iterator_traits&lt;Iterator&gt;::value_type,
- typename iterator_traits&lt;Iterator&gt;::difference_type,
- typename iterator_traits&lt;Iterator&gt;::pointer,
- typename iterator_traits&lt;Iterator&gt;::reference&gt; {
- protected:
-T Iterator current;
- public:
-T typedef Iterator
- iterator_type;
-T typedef typename iterator_traits&lt;Iterator&gt;::difference_type
- difference_type;
-T typedef typename iterator_traits&lt;Iterator&gt;::reference
- reference;
-T typedef typename iterator_traits&lt;Iterator&gt;::pointer
- pointer;
-
-T reverse_iterator();
-T explicit reverse_iterator(Iterator x);
-T template &lt;class U&gt; reverse_iterator(const reverse_iterator&lt;U&gt;&amp; u);
-T Iterator base() const; // explicit
-T reference operator*() const;
-T pointer operator-&gt;() const;
-T reverse_iterator&amp; operator++();
-T reverse_iterator operator++(int);
-T reverse_iterator&amp; operator--();
-T reverse_iterator operator--(int);
-
-T reverse_iterator operator+ (difference_type n) const;
-T reverse_iterator&amp; operator+=(difference_type n);
-T reverse_iterator operator- (difference_type n) const;
-T reverse_iterator&amp; operator-=(difference_type n);
-T reference operator[](difference_type n) const;
- };
-T template &lt;class Iterator&gt;
- bool operator==(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator&lt;(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator!=(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator&gt;(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator&gt;=(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- bool operator&lt;=(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- typename reverse_iterator&lt;Iterator&gt;::difference_type operator-(
- const reverse_iterator&lt;Iterator&gt;&amp; x,
- const reverse_iterator&lt;Iterator&gt;&amp; y);
-T template &lt;class Iterator&gt;
- reverse_iterator&lt;Iterator&gt; operator+(
- typename reverse_iterator&lt;Iterator&gt;::difference_type n,
- const reverse_iterator&lt;Iterator&gt;&amp; x);
-
-
- 24.4.2.1 Template class [lib.back.insert.iterator]
- back_insert_iterator
-
- template &lt;class Container&gt;
-X class back_insert_iterator :
- public iterator&lt;output_iterator_tag,void,void,void,void&gt; {
- protected:
-T Container* container;
- public:
-T typedef Container container_type;
-T explicit back_insert_iterator(Container&amp; x);
-T back_insert_iterator&lt;Container&gt;&amp;
- operator=(typename Container::const_reference value);
-
-T back_insert_iterator&lt;Container&gt;&amp; operator*();
-T back_insert_iterator&lt;Container&gt;&amp; operator++();
-T back_insert_iterator&lt;Container&gt; operator++(int);
- };
-T template &lt;class Container&gt;
- back_insert_iterator&lt;Container&gt; back_inserter(Container&amp; x);
-
-
-
- 24.4.2.3 Template class [lib.front.insert.iterator]
- front_insert_iterator
-
- template &lt;class Container&gt;
-X class front_insert_iterator :
- public iterator&lt;output_iterator_tag,void,void,void,void&gt; {
- protected:
-T Container* container;
- public:
-T typedef Container container_type;
-T explicit front_insert_iterator(Container&amp; x);
-T front_insert_iterator&lt;Container&gt;&amp;
- operator=(typename Container::const_reference value);
-T front_insert_iterator&lt;Container&gt;&amp; operator*();
-T front_insert_iterator&lt;Container&gt;&amp; operator++();
-T front_insert_iterator&lt;Container&gt; operator++(int);
- };
-T template &lt;class Container&gt;
- front_insert_iterator&lt;Container&gt; front_inserter(Container&amp; x);
-
-
- 24.4.2.5 Template class insert_iterator [lib.insert.iterator]
-
- template &lt;class Container&gt;
-X class insert_iterator :
- public iterator&lt;output_iterator_tag,void,void,void,void&gt; {
- protected:
-T Container* container;
-T typename Container::iterator iter;
- public:
-T typedef Container container_type;
-T insert_iterator(Container&amp; x, typename Container::iterator i);
-T insert_iterator&lt;Container&gt;&amp;
- operator=(typename Container::const_reference value);
-T insert_iterator&lt;Container&gt;&amp; operator*();
-T insert_iterator&lt;Container&gt;&amp; operator++();
-T insert_iterator&lt;Container&gt;&amp; operator++(int);
- };
-T template &lt;class Container, class Iterator&gt;
- insert_iterator&lt;Container&gt; inserter(Container&amp; x, Iterator i);
-
- 24.5.1 Template class istream_iterator [lib.istream.iterator]
-
- template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt;,
- class Distance = ptrdiff_t&gt;
-X class istream_iterator:
- public iterator&lt;input_iterator_tag, T, Distance, const T*, const T&amp;&gt; {
- public:
-T typedef charT char_type
-T typedef traits traits_type;
-T typedef basic_istream&lt;charT,traits&gt; istream_type;
-T istream_iterator();
-T istream_iterator(istream_type&amp; s);
-T istream_iterator(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x);
-T ~istream_iterator();
-
-T const T&amp; operator*() const;
-T const T* operator-&gt;() const;
-T istream_iterator&lt;T,charT,traits,Distance&gt;&amp; operator++();
-T istream_iterator&lt;T,charT,traits,Distance&gt; operator++(int);
- };
-
-T template &lt;class T, class charT, class traits, class Distance&gt;
- bool operator==(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,
- const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);
-T template &lt;class T, class charT, class traits, class Distance&gt;
- bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,
- const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);
-
-
- 24.5.2 Template class ostream_iterator [lib.ostream.iterator]
-
- template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt; &gt;
-X class ostream_iterator:
- public iterator&lt;output_iterator_tag, void, void, void, void&gt; {
- public:
-T typedef charT char_type;
-T typedef traits traits_type;
-T typedef basic_ostream&lt;charT,traits&gt; ostream_type;
-T ostream_iterator(ostream_type&amp; s);
-T ostream_iterator(ostream_type&amp; s, const charT* delimiter);
-T ostream_iterator(const ostream_iterator&lt;T,charT,traits&gt;&amp; x);
-T ~ostream_iterator();
-T ostream_iterator&lt;T,charT,traits&gt;&amp; operator=(const T&amp; value);
-
-T ostream_iterator&lt;T,charT,traits&gt;&amp; operator*();
-T ostream_iterator&lt;T,charT,traits&gt;&amp; operator++();
-T ostream_iterator&lt;T,charT,traits&gt;&amp; operator++(int);
- };
-
-
- 24.5.3 Template class [lib.istreambuf.iterator]
- istreambuf_iterator
-
- template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-X class istreambuf_iterator
- : public iterator&lt;input_iterator_tag, charT,
- typename traits::off_type, charT*, charT&amp;&gt; {
- public:
-T typedef charT char_type;
-T typedef traits traits_type;
-T typedef typename traits::int_type int_type;
-T typedef basic_streambuf&lt;charT,traits&gt; streambuf_type;
-T typedef basic_istream&lt;charT,traits&gt; istream_type;
-T class proxy; // exposition only
-T istreambuf_iterator() throw();
-T istreambuf_iterator(istream_type&amp; s) throw();
-T istreambuf_iterator(streambuf_type* s) throw();
-T istreambuf_iterator(const proxy&amp; p) throw();
-T charT operator*() const;
-T istreambuf_iterator&lt;charT,traits&gt;&amp; operator++();
-T proxy operator++(int);
-X bool equal(istreambuf_iterator&amp; b);
- };
-
-T template &lt;class charT, class traits&gt;
- bool operator==(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,
- const istreambuf_iterator&lt;charT,traits&gt;&amp; b);
-
-T template &lt;class charT, class traits&gt;
- bool operator!=(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,
- const istreambuf_iterator&lt;charT,traits&gt;&amp; b);
-
- 24.5.3.1 Template class [lib.istreambuf.iterator::proxy]
- istreambuf_iterator::proxy
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-T class istreambuf_iterator&lt;charT, traits&gt;::proxy
- {
-T charT keep_;
-T basic_streambuf&lt;charT,traits&gt;* sbuf_;
-T proxy(charT c,
- basic_streambuf&lt;charT,traits&gt;* sbuf);
- : keep_(c), sbuf_(sbuf) {}
- public:
-T charT operator*() { return keep_; }
- };
-
-
-
- 24.5.4 Template class [lib.ostreambuf.iterator]
- ostreambuf_iterator
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-T class ostreambuf_iterator:
- public iterator&lt;output_iterator_tag, void, void, void, void&gt; {
- public:
-T typedef charT char_type;
-T typedef traits traits_type;
-T typedef basic_streambuf&lt;charT,traits&gt; streambuf_type;
-T typedef basic_ostream&lt;charT,traits&gt; ostream_type;
- public:
-T ostreambuf_iterator(ostream_type&amp; s) throw();
-T ostreambuf_iterator(streambuf_type* s) throw();
-T ostreambuf_iterator&amp; operator=(charT c);
-T ostreambuf_iterator&amp; operator*();
-T ostreambuf_iterator&amp; operator++();
-T ostreambuf_iterator&amp; operator++(int);
-T bool failed() const throw();
- };
-
-
- Header &lt;algorithm&gt; synopsis
-
-
- // _lib.alg.nonmodifying_, non-modifying sequence operations:
-T template&lt;class InputIterator, class Function&gt;
- Function for_each(InputIterator first, InputIterator last, Function f);
-T template&lt;class InputIterator, class T&gt;
- InputIterator find(InputIterator first, InputIterator last,
- const T&amp; value);
-T template&lt;class InputIterator, class Predicate&gt;
- InputIterator find_if(InputIterator first, InputIterator last,
- Predicate pred);
-T template&lt;class ForwardIterator1, class ForwardIterator2&gt;
- ForwardIterator1
- find_end(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2);
-T template&lt;class ForwardIterator1, class ForwardIterator2,
- class BinaryPredicate&gt;
- ForwardIterator1
- find_end(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- BinaryPredicate pred);
-T template&lt;class ForwardIterator1, class ForwardIterator2&gt;
- ForwardIterator1
- find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2);
-T template&lt;class ForwardIterator1, class ForwardIterator2,
- class BinaryPredicate&gt;
- ForwardIterator1
- find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- BinaryPredicate pred);
-T template&lt;class ForwardIterator&gt;
- ForwardIterator adjacent_find(ForwardIterator first,
- ForwardIterator last);
-T template&lt;class ForwardIterator, class BinaryPredicate&gt;
- ForwardIterator adjacent_find(ForwardIterator first,
- ForwardIterator last, BinaryPredicate pred);
-T template&lt;class InputIterator, class T&gt;
- typename iterator_traits&lt;InputIterator&gt;::difference_type
- count(InputIterator first, InputIterator last, const T&amp; value);
-T template&lt;class InputIterator, class Predicate&gt;
- typename iterator_traits&lt;InputIterator&gt;::difference_type
- count_if(InputIterator first, InputIterator last, Predicate pred);
-T template&lt;class InputIterator1, class InputIterator2&gt;
- pair&lt;InputIterator1, InputIterator2&gt;
- mismatch(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2);
-T template&lt;class InputIterator1, class InputIterator2, class BinaryPredicate&gt;
- pair&lt;InputIterator1, InputIterator2&gt;
- mismatch(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, BinaryPredicate pred);
-
-T template&lt;class InputIterator1, class InputIterator2&gt;
- bool equal(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2);
-T template&lt;class InputIterator1, class InputIterator2, class BinaryPredicate&gt;
- bool equal(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, BinaryPredicate pred);
-T template&lt;class ForwardIterator1, class ForwardIterator2&gt;
- ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2);
-T template&lt;class ForwardIterator1, class ForwardIterator2,
- class BinaryPredicate&gt;
- ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,
- ForwardIterator2 first2, ForwardIterator2 last2,
- BinaryPredicate pred);
-T template&lt;class ForwardIterator, class Size, class T&gt;
- ForwardIterator search_n(ForwardIterator first, ForwardIterator last,
- Size count, const T&amp; value);
-T template&lt;class ForwardIterator, class Size, class T, class BinaryPredicate&gt;
- ForwardIterator1 search_n(ForwardIterator first, ForwardIterator last,
- Size count, const T&amp; value,
- BinaryPredicate pred);
- // _lib.alg.modifying.operations_, modifying sequence operations:
- // _lib.alg.copy_, copy:
-T template&lt;class InputIterator, class OutputIterator&gt;
- OutputIterator copy(InputIterator first, InputIterator last,
- OutputIterator result);
-T template&lt;class BidirectionalIterator1, class BidirectionalIterator2&gt;
- BidirectionalIterator2
- copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last,
- BidirectionalIterator2 result);
- // _lib.alg.swap_, swap:
-T template&lt;class T&gt; void swap(T&amp; a, T&amp; b);
-T template&lt;class ForwardIterator1, class ForwardIterator2&gt;
- ForwardIterator2 swap_ranges(ForwardIterator1 first1,
- ForwardIterator1 last1, ForwardIterator2 first2);
-T template&lt;class ForwardIterator1, class ForwardIterator2&gt;
- void iter_swap(ForwardIterator1 a, ForwardIterator2 b);
-T template&lt;class InputIterator, class OutputIterator, class UnaryOperation&gt;
- OutputIterator transform(InputIterator first, InputIterator last,
- OutputIterator result, UnaryOperation op);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator,
- class BinaryOperation&gt;
- OutputIterator transform(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, OutputIterator result,
- BinaryOperation binary_op);
-
-T template&lt;class ForwardIterator, class T&gt;
- void replace(ForwardIterator first, ForwardIterator last,
- const T&amp; old_value, const T&amp; new_value);
-T template&lt;class ForwardIterator, class Predicate, class T&gt;
- void replace_if(ForwardIterator first, ForwardIterator last,
- Predicate pred, const T&amp; new_value);
-T template&lt;class InputIterator, class OutputIterator, class T&gt;
- OutputIterator replace_copy(InputIterator first, InputIterator last,
- OutputIterator result,
- const T&amp; old_value, const T&amp; new_value);
-T template&lt;class Iterator, class OutputIterator, class Predicate, class T&gt;
- OutputIterator replace_copy_if(Iterator first, Iterator last,
- OutputIterator result,
- Predicate pred, const T&amp; new_value);
-T template&lt;class ForwardIterator, class T&gt;
- void fill(ForwardIterator first, ForwardIterator last, const T&amp; value);
-T template&lt;class OutputIterator, class Size, class T&gt;
- void fill_n(OutputIterator first, Size n, const T&amp; value);
-T template&lt;class ForwardIterator, class Generator&gt;
- void generate(ForwardIterator first, ForwardIterator last, Generator gen);
-T template&lt;class OutputIterator, class Size, class Generator&gt;
- void generate_n(OutputIterator first, Size n, Generator gen);
-T template&lt;class ForwardIterator, class T&gt;
- ForwardIterator remove(ForwardIterator first, ForwardIterator last,
- const T&amp; value);
-T template&lt;class ForwardIterator, class Predicate&gt;
- ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,
- Predicate pred);
-T template&lt;class InputIterator, class OutputIterator, class T&gt;
- OutputIterator remove_copy(InputIterator first, InputIterator last,
- OutputIterator result, const T&amp; value);
-T template&lt;class InputIterator, class OutputIterator, class Predicate&gt;
- OutputIterator remove_copy_if(InputIterator first, InputIterator last,
- OutputIterator result, Predicate pred);
-T template&lt;class ForwardIterator&gt;
- ForwardIterator unique(ForwardIterator first, ForwardIterator last);
-T template&lt;class ForwardIterator, class BinaryPredicate&gt;
- ForwardIterator unique(ForwardIterator first, ForwardIterator last,
- BinaryPredicate pred);
-T template&lt;class InputIterator, class OutputIterator&gt;
- OutputIterator unique_copy(InputIterator first, InputIterator last,
- OutputIterator result);
-T template&lt;class InputIterator, class OutputIterator, class BinaryPredicate&gt;
- OutputIterator unique_copy(InputIterator first, InputIterator last,
- OutputIterator result, BinaryPredicate pred);
-T template&lt;class BidirectionalIterator&gt;
- void reverse(BidirectionalIterator first, BidirectionalIterator last);
-T template&lt;class BidirectionalIterator, class OutputIterator&gt;
- OutputIterator reverse_copy(BidirectionalIterator first,
- BidirectionalIterator last,
- OutputIterator result);
-
-T template&lt;class ForwardIterator&gt;
- void rotate(ForwardIterator first, ForwardIterator middle,
- ForwardIterator last);
-T template&lt;class ForwardIterator, class OutputIterator&gt;
- OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle,
- ForwardIterator last, OutputIterator result);
-T template&lt;class RandomAccessIterator&gt;
- void random_shuffle(RandomAccessIterator first,
- RandomAccessIterator last);
-T template&lt;class RandomAccessIterator, class RandomNumberGenerator&gt;
- void random_shuffle(RandomAccessIterator first,
- RandomAccessIterator last,
- RandomNumberGenerator&amp; rand);
- // _lib.alg.partitions_, partitions:
-T template&lt;class BidirectionalIterator, class Predicate&gt;
- BidirectionalIterator partition(BidirectionalIterator first,
- BidirectionalIterator last,
- Predicate pred);
-T template&lt;class BidirectionalIterator, class Predicate&gt;
- BidirectionalIterator stable_partition(BidirectionalIterator first,
- BidirectionalIterator last,
- Predicate pred);
- // _lib.alg.sorting_, sorting and related operations:
- // _lib.alg.sort_, sorting:
-T template&lt;class RandomAccessIterator&gt;
- void sort(RandomAccessIterator first, RandomAccessIterator last);
-T template&lt;class RandomAccessIterator, class Compare&gt;
- void sort(RandomAccessIterator first, RandomAccessIterator last,
- Compare comp);
-T template&lt;class RandomAccessIterator&gt;
- void stable_sort(RandomAccessIterator first, RandomAccessIterator last);
-T template&lt;class RandomAccessIterator, class Compare&gt;
- void stable_sort(RandomAccessIterator first, RandomAccessIterator last,
- Compare comp);
-T template&lt;class RandomAccessIterator&gt;
- void partial_sort(RandomAccessIterator first,
- RandomAccessIterator middle,
- RandomAccessIterator last);
-T template&lt;class RandomAccessIterator, class Compare&gt;
- void partial_sort(RandomAccessIterator first,
- RandomAccessIterator middle,
- RandomAccessIterator last, Compare comp);
-T template&lt;class InputIterator, class RandomAccessIterator&gt;
- RandomAccessIterator
- partial_sort_copy(InputIterator first, InputIterator last,
- RandomAccessIterator result_first,
- RandomAccessIterator result_last);
-T template&lt;class InputIterator, class RandomAccessIterator, class Compare&gt;
- RandomAccessIterator
- partial_sort_copy(InputIterator first, InputIterator last,
- RandomAccessIterator result_first,
- RandomAccessIterator result_last,
- Compare comp);
-
-T template&lt;class RandomAccessIterator&gt;
- void nth_element(RandomAccessIterator first, RandomAccessIterator nth,
- RandomAccessIterator last);
-T template&lt;class RandomAccessIterator, class Compare&gt;
- void nth_element(RandomAccessIterator first, RandomAccessIterator nth,
- RandomAccessIterator last, Compare comp);
- // _lib.alg.binary.search_, binary search:
-T template&lt;class ForwardIterator, class T&gt;
- ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,
- const T&amp; value);
-T template&lt;class ForwardIterator, class T, class Compare&gt;
- ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,
- const T&amp; value, Compare comp);
-T template&lt;class ForwardIterator, class T&gt;
- ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,
- const T&amp; value);
-T template&lt;class ForwardIterator, class T, class Compare&gt;
- ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,
- const T&amp; value, Compare comp);
-T template&lt;class ForwardIterator, class T&gt;
- pair&lt;ForwardIterator, ForwardIterator&gt;
- equal_range(ForwardIterator first, ForwardIterator last,
- const T&amp; value);
-T template&lt;class ForwardIterator, class T, class Compare&gt;
- pair&lt;ForwardIterator, ForwardIterator&gt;
- equal_range(ForwardIterator first, ForwardIterator last,
- const T&amp; value, Compare comp);
-T template&lt;class ForwardIterator, class T&gt;
- bool binary_search(ForwardIterator first, ForwardIterator last,
- const T&amp; value);
-T template&lt;class ForwardIterator, class T, class Compare&gt;
- bool binary_search(ForwardIterator first, ForwardIterator last,
- const T&amp; value, Compare comp);
- // _lib.alg.merge_, merge:
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;
- OutputIterator merge(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator,
- class Compare&gt;
- OutputIterator merge(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
-T template&lt;class BidirectionalIterator&gt;
- void inplace_merge(BidirectionalIterator first,
- BidirectionalIterator middle,
- BidirectionalIterator last);
-T template&lt;class BidirectionalIterator, class Compare&gt;
- void inplace_merge(BidirectionalIterator first,
- BidirectionalIterator middle,
- BidirectionalIterator last, Compare comp);
-
- // _lib.alg.set.operations_, set operations:
-T template&lt;class InputIterator1, class InputIterator2&gt;
- bool includes(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2);
-T template&lt;class InputIterator1, class InputIterator2, class Compare&gt;
- bool includes(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2, Compare comp);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;
- OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator,
- class Compare&gt;
- OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;
- OutputIterator set_intersection
- (InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator,
- class Compare&gt;
- OutputIterator set_intersection
- (InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;
- OutputIterator set_difference
- (InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator,
- class Compare&gt;
- OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;
- OutputIterator
- set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result);
-T template&lt;class InputIterator1, class InputIterator2, class OutputIterator,
- class Compare&gt;
- OutputIterator
- set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- OutputIterator result, Compare comp);
- // _lib.alg.heap.operations_, heap operations:
-T template&lt;class RandomAccessIterator&gt;
- void push_heap(RandomAccessIterator first, RandomAccessIterator last);
-T template&lt;class RandomAccessIterator, class Compare&gt;
- void push_heap(RandomAccessIterator first, RandomAccessIterator last,
- Compare comp);
-
-T template&lt;class RandomAccessIterator&gt;
- void pop_heap(RandomAccessIterator first, RandomAccessIterator last);
-T template&lt;class RandomAccessIterator, class Compare&gt;
- void pop_heap(RandomAccessIterator first, RandomAccessIterator last,
- Compare comp);
-T template&lt;class RandomAccessIterator&gt;
- void make_heap(RandomAccessIterator first, RandomAccessIterator last);
-T template&lt;class RandomAccessIterator, class Compare&gt;
- void make_heap(RandomAccessIterator first, RandomAccessIterator last,
- Compare comp);
-T template&lt;class RandomAccessIterator&gt;
- void sort_heap(RandomAccessIterator first, RandomAccessIterator last);
-T template&lt;class RandomAccessIterator, class Compare&gt;
- void sort_heap(RandomAccessIterator first, RandomAccessIterator last,
- Compare comp);
- // _lib.alg.min.max_, minimum and maximum:
-T template&lt;class T&gt; const T&amp; min(const T&amp; a, const T&amp; b);
-T template&lt;class T, class Compare&gt;
- const T&amp; min(const T&amp; a, const T&amp; b, Compare comp);
-T template&lt;class T&gt; const T&amp; max(const T&amp; a, const T&amp; b);
-T template&lt;class T, class Compare&gt;
- const T&amp; max(const T&amp; a, const T&amp; b, Compare comp);
-T template&lt;class ForwardIterator&gt;
- ForwardIterator min_element(ForwardIterator first, ForwardIterator last);
-T template&lt;class ForwardIterator, class Compare&gt;
- ForwardIterator min_element(ForwardIterator first, ForwardIterator last,
- Compare comp);
-T template&lt;class ForwardIterator&gt;
- ForwardIterator max_element(ForwardIterator first, ForwardIterator last);
-T template&lt;class ForwardIterator, class Compare&gt;
- ForwardIterator max_element(ForwardIterator first, ForwardIterator last,
- Compare comp);
-T template&lt;class InputIterator1, class InputIterator2&gt;
- bool lexicographical_compare
- (InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2);
-T template&lt;class InputIterator1, class InputIterator2, class Compare&gt;
- bool lexicographical_compare
- (InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, InputIterator2 last2,
- Compare comp);
-
- // _lib.alg.permutation.generators_, permutations
-T template&lt;class BidirectionalIterator&gt;
- bool next_permutation(BidirectionalIterator first,
- BidirectionalIterator last);
-T template&lt;class BidirectionalIterator, class Compare&gt;
- bool next_permutation(BidirectionalIterator first,
- BidirectionalIterator last, Compare comp);
-T template&lt;class BidirectionalIterator&gt;
- bool prev_permutation(BidirectionalIterator first,
- BidirectionalIterator last);
-T template&lt;class BidirectionalIterator, class Compare&gt;
- bool prev_permutation(BidirectionalIterator first,
- BidirectionalIterator last, Compare comp);
-
-
- 25.4 C library algorithms [lib.alg.c.library]
-
- 1 Header &lt;cstdlib&gt; (partial, Table 2):
-
- Table 2--Header &lt;cstdlib&gt; synopsis
-
- Functions: bsearch qsort
-
-
-X extern "C" void *bsearch(const void *key, const void *base,
- size_t nmemb, size_t size,
- int (*compar)(const void *, const void *));
-X extern "C++" void *bsearch(const void *key, const void *base,
- size_t nmemb, size_t size,
- int (*compar)(const void *, const void *));
-
-X extern "C" void qsort(void* base, size_t nmemb, size_t size,
- int (*compar)(const void*, const void*));
-X extern "C++" void qsort(void* base, size_t nmemb, size_t size,
- int (*compar)(const void*, const void*));
-
-
-
- 26.2 Complex numbers [lib.complex.numbers]
-
-
- 26.2.1 Header &lt;complex&gt; synopsis [lib.complex.synopsis]
-
-T template&lt;class T&gt; class complex;
-T template&lt;&gt; class complex&lt;float&gt;;
-T template&lt;&gt; class complex&lt;double&gt;;
-T template&lt;&gt; class complex&lt;long double&gt;;
- // _lib.complex.ops_ operators:
-T template&lt;class T&gt;
- complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator+(const T&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator-
- (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator-(const T&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator*
- (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator*(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator*(const T&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator/
- (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator/(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator/(const T&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; bool operator==
- (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; bool operator==(const T&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; bool operator!=(const T&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T, class charT, class traits&gt;
- basic_istream&lt;charT, traits&gt;&amp;
- operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp;, complex&lt;T&gt;&amp;);
-
-T template&lt;class T, class charT, class traits&gt;
- basic_ostream&lt;charT, traits&gt;&amp;
- operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp;, const complex&lt;T&gt;&amp;);
- // _lib.complex.value.ops_ values:
-T template&lt;class T&gt; T real(const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; T imag(const complex&lt;T&gt;&amp;);
-
-T template&lt;class T&gt; T abs(const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; T arg(const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; T norm(const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; conj(const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp;, const T&amp;);
- // _lib.complex.transcendentals_ transcendentals:
-T template&lt;class T&gt; complex&lt;T&gt; cos (const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; cosh (const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; exp (const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; log (const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; log10(const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, int);
-T template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; pow(const T&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; sin (const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; sinh (const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; sqrt (const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; tan (const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; tanh (const complex&lt;T&gt;&amp;);
- }
-
- 26.2.2 Template class complex [lib.complex]
-
- template&lt;class T&gt;
-T class complex {
- public:
-T typedef T value_type;
-
-T complex(const T&amp; re = T(), const T&amp; im = T());
-T complex(const complex&amp;);
-T template&lt;class X&gt; complex(const complex&lt;X&gt;&amp;);
-
-T T real() const;
-T T imag() const;
-
-T complex&lt;T&gt;&amp; operator= (const T&amp;);
-T complex&lt;T&gt;&amp; operator+=(const T&amp;);
-T complex&lt;T&gt;&amp; operator-=(const T&amp;);
-T complex&lt;T&gt;&amp; operator*=(const T&amp;);
-T complex&lt;T&gt;&amp; operator/=(const T&amp;);
-
-T complex&amp; operator=(const complex&amp;);
-T template&lt;class X&gt; complex&lt;T&gt;&amp; operator= (const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;T&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;T&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;T&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;T&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);
- };
-
-T template&lt;class T&gt; complex&lt;T&gt; operator+
- (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator+(const T&amp;, const complex&lt;T&gt;&amp;);
-
-T template&lt;class T&gt; complex&lt;T&gt; operator-
- (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator-(const T&amp;, const complex&lt;T&gt;&amp;);
-
-T template&lt;class T&gt; complex&lt;T&gt; operator*
- (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator*(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator*(const T&amp;, const complex&lt;T&gt;&amp;);
-
-T template&lt;class T&gt; complex&lt;T&gt; operator/
- (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator/(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator/(const T&amp;, const complex&lt;T&gt;&amp;);
-
-T template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;);
-
-T template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; bool operator==(const T&amp;, const complex&lt;T&gt;&amp;);
-
-T template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);
-T template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; bool operator!=(const T&amp;, const complex&lt;T&gt;&amp;);
-
-T template&lt;class T, class charT, class traits&gt;
- basic_istream&lt;charT, traits&gt;&amp;
- operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp;, complex&lt;T&gt;&amp;);
-
-T template&lt;class T, class charT, class traits&gt;
- basic_ostream&lt;charT, traits&gt;&amp;
- operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp;, const complex&lt;T&gt;&amp;);
-
-
- 26.2.3 complex specializations [lib.complex.special]
-
-T template&lt;&gt; class complex&lt;float&gt; {
- public:
-T typedef float value_type;
-
-T complex(float re = 0.0f, float im = 0.0f);
-T explicit complex(const complex&lt;double&gt;&amp;);
-T explicit complex(const complex&lt;long double&gt;&amp;);
-T float real() const;
-T float imag() const;
-
-T complex&lt;float&gt;&amp; operator= (float);
-T complex&lt;float&gt;&amp; operator+=(float);
-T complex&lt;float&gt;&amp; operator-=(float);
-T complex&lt;float&gt;&amp; operator*=(float);
-T complex&lt;float&gt;&amp; operator/=(float);
-
-T complex&lt;float&gt;&amp; operator=(const complex&lt;float&gt;&amp;);
-T template&lt;class X&gt; complex&lt;float&gt;&amp; operator= (const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;float&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;float&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;float&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;float&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);
- };
-T template&lt;&gt; class complex&lt;double&gt; {
- public:
-T typedef double value_type;
-
-T complex(double re = 0.0, double im = 0.0);
-T complex(const complex&lt;float&gt;&amp;);
-T explicit complex(const complex&lt;long double&gt;&amp;);
-T double real() const;
-T double imag() const;
-
-T complex&lt;double&gt;&amp; operator= (double);
-T complex&lt;double&gt;&amp; operator+=(double);
-T complex&lt;double&gt;&amp; operator-=(double);
-T complex&lt;double&gt;&amp; operator*=(double);
-T complex&lt;double&gt;&amp; operator/=(double);
-
-T complex&lt;double&gt;&amp; operator=(const complex&lt;double&gt;&amp;);
-T template&lt;class X&gt; complex&lt;double&gt;&amp; operator= (const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;double&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;double&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;double&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;double&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);
- };
-
-T template&lt;&gt; class complex&lt;long double&gt; {
- public:
-T typedef long double value_type;
-
-T complex(long double re = 0.0L, long double im = 0.0L);
-T complex(const complex&lt;float&gt;&amp;);
-T complex(const complex&lt;double&gt;&amp;);
-T long double real() const;
-T long double imag() const;
-
-T complex&lt;long double&gt;&amp; operator=(const complex&lt;long double&gt;&amp;);
-T complex&lt;long double&gt;&amp; operator= (long double);
-T complex&lt;long double&gt;&amp; operator+=(long double);
-T complex&lt;long double&gt;&amp; operator-=(long double);
-T complex&lt;long double&gt;&amp; operator*=(long double);
-T complex&lt;long double&gt;&amp; operator/=(long double);
-
-T template&lt;class X&gt; complex&lt;long double&gt;&amp; operator= (const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;long double&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;long double&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;long double&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);
-T template&lt;class X&gt; complex&lt;long double&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);
- };
-
- 26.3 Numeric arrays [lib.numarray]
-
- 26.3.1 Header &lt;valarray&gt; synopsis [lib.valarray.synopsis]
-
-T template&lt;class T&gt; class valarray; // An array of type T
-T class slice;
-T template&lt;class T&gt; class slice_array;
-T class gslice;
-T template&lt;class T&gt; class gslice_array;
-T template&lt;class T&gt; class mask_array; // a masked array
-T template&lt;class T&gt; class indirect_array; // an indirected array
-
-T template&lt;class T&gt; valarray&lt;T&gt; operator*
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator* (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator* (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator/
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator/ (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator/ (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator%
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator% (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator% (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator+
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator+ (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator+ (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator-
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator- (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator- (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator^
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator^ (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator^ (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator&amp;
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator&amp; (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator&amp; (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator|
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator| (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator| (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;(const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;(const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;(const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator||
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator||(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator||(const T&amp;, const valarray&lt;T&gt;&amp;);
-
-T template&lt;class T&gt;
- valarray&lt;bool&gt; operator==(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator==(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator==(const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt;
- valarray&lt;bool&gt; operator!=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator!=(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator!=(const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt;
- valarray&lt;bool&gt; operator&lt; (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&lt; (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&lt; (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt;
- valarray&lt;bool&gt; operator&gt; (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&gt; (const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&gt; (const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt;
- valarray&lt;bool&gt; operator&lt;=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&lt;=(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&lt;=(const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt;
- valarray&lt;bool&gt; operator&gt;=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&gt;=(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;bool&gt; operator&gt;=(const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; abs (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; acos (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; asin (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; atan (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; atan2
- (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; atan2(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; atan2(const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; cos (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; cosh (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; exp (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; log (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; log10(const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; pow(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; pow(const valarray&lt;T&gt;&amp;, const T&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; pow(const T&amp;, const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; sin (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; sinh (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; sqrt (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; tan (const valarray&lt;T&gt;&amp;);
-T template&lt;class T&gt; valarray&lt;T&gt; tanh (const valarray&lt;T&gt;&amp;);
- }
-
-
- 26.3.2 Template class valarray [lib.template.valarray]
-
-T template&lt;class T&gt; class valarray {
- public:
-T typedef T value_type;
-
- // _lib.valarray.cons_ construct/destroy:
-T valarray();
-T explicit valarray(size_t);
-T valarray(const T&amp;, size_t);
-T valarray(const T*, size_t);
-T valarray(const valarray&amp;);
-T valarray(const slice_array&lt;T&gt;&amp;);
-T valarray(const gslice_array&lt;T&gt;&amp;);
-T valarray(const mask_array&lt;T&gt;&amp;);
-T valarray(const indirect_array&lt;T&gt;&amp;);
-T ~valarray();
-
- // _lib.valarray.assign_ assignment:
-T valarray&lt;T&gt;&amp; operator=(const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator=(const T&amp;);
-T valarray&lt;T&gt;&amp; operator=(const slice_array&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator=(const gslice_array&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator=(const mask_array&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator=(const indirect_array&lt;T&gt;&amp;);
- // _lib.valarray.access_ element access:
-T T operator[](size_t) const;
-T T&amp; operator[](size_t);
- // _lib.valarray.sub_ subset operations:
-T valarray&lt;T&gt; operator[](slice) const;
-T slice_array&lt;T&gt; operator[](slice);
-T valarray&lt;T&gt; operator[](const gslice&amp;) const;
-T gslice_array&lt;T&gt; operator[](const gslice&amp;);
-T valarray&lt;T&gt; operator[](const valarray&lt;bool&gt;&amp;) const;
-T mask_array&lt;T&gt; operator[](const valarray&lt;bool&gt;&amp;);
-T valarray&lt;T&gt; operator[](const valarray&lt;size_t&gt;&amp;) const;
-T indirect_array&lt;T&gt; operator[](const valarray&lt;size_t&gt;&amp;);
- // _lib.valarray.unary_ unary operators:
-T valarray&lt;T&gt; operator+() const;
-T valarray&lt;T&gt; operator-() const;
-T valarray&lt;T&gt; operator~() const;
-T valarray&lt;T&gt; operator!() const;
- // _lib.valarray.cassign_ computed assignment:
-T valarray&lt;T&gt;&amp; operator*= (const T&amp;);
-T valarray&lt;T&gt;&amp; operator/= (const T&amp;);
-T valarray&lt;T&gt;&amp; operator%= (const T&amp;);
-T valarray&lt;T&gt;&amp; operator+= (const T&amp;);
-T valarray&lt;T&gt;&amp; operator-= (const T&amp;);
-T valarray&lt;T&gt;&amp; operator^= (const T&amp;);
-T valarray&lt;T&gt;&amp; operator&amp;= (const T&amp;);
-T valarray&lt;T&gt;&amp; operator|= (const T&amp;);
-T valarray&lt;T&gt;&amp; operator&lt;&lt;=(const T&amp;);
-T valarray&lt;T&gt;&amp; operator&gt;&gt;=(const T&amp;);
-T valarray&lt;T&gt;&amp; operator*= (const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator/= (const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator%= (const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator+= (const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator-= (const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator^= (const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator|= (const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator&amp;= (const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator&lt;&lt;=(const valarray&lt;T&gt;&amp;);
-T valarray&lt;T&gt;&amp; operator&gt;&gt;=(const valarray&lt;T&gt;&amp;);
- // _lib.valarray.members_ member functions:
-T size_t size() const;
-T T sum() const;
-T T min() const;
-T T max() const;
-
-T valarray&lt;T&gt; shift (int) const;
-T valarray&lt;T&gt; cshift(int) const;
-T valarray&lt;T&gt; apply(T func(T)) const;
-T valarray&lt;T&gt; apply(T func(const T&amp;)) const;
-T void resize(size_t sz, T c = T());
- };
- }
-
-
-
- 26.3.4 Class slice [lib.class.slice]
-
-T class slice {
- public:
-T slice();
-T slice(size_t, size_t, size_t);
-
-T size_t start() const;
-T size_t size() const;
-T size_t stride() const;
- };
- }
-
-
-
- 26.3.5 Template class slice_array [lib.template.slice.array]
-
-T template &lt;class T&gt; class slice_array {
- public:
-T typedef T value_type;
-
-T void operator= (const valarray&lt;T&gt;&amp;) const;
-T void operator*= (const valarray&lt;T&gt;&amp;) const;
-T void operator/= (const valarray&lt;T&gt;&amp;) const;
-T void operator%= (const valarray&lt;T&gt;&amp;) const;
-T void operator+= (const valarray&lt;T&gt;&amp;) const;
-T void operator-= (const valarray&lt;T&gt;&amp;) const;
-T void operator^= (const valarray&lt;T&gt;&amp;) const;
-T void operator&amp;= (const valarray&lt;T&gt;&amp;) const;
-T void operator|= (const valarray&lt;T&gt;&amp;) const;
-T void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;
-T void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;
-T void operator=(const T&amp;);
-T ~slice_array();
- private:
-T slice_array();
-T slice_array(const slice_array&amp;);
-T slice_array&amp; operator=(const slice_array&amp;);
- };
- }
-
-
-
- 26.3.6 The gslice class [lib.class.gslice]
-
-T class gslice {
- public:
-T gslice();
-T gslice(size_t s, const valarray&lt;size_t&gt;&amp; l, const valarray&lt;size_t&gt;&amp; d);
-
-T size_t start() const;
-T valarray&lt;size_t&gt; size() const;
-T valarray&lt;size_t&gt; stride() const;
- };
-
-
- 26.3.7 Template class gslice_array [lib.template.gslice.array]
-
-T template &lt;class T&gt; class gslice_array {
- public:
-T typedef T value_type;
-
-T void operator= (const valarray&lt;T&gt;&amp;) const;
-T void operator*= (const valarray&lt;T&gt;&amp;) const;
-T void operator/= (const valarray&lt;T&gt;&amp;) const;
-T void operator%= (const valarray&lt;T&gt;&amp;) const;
-T void operator+= (const valarray&lt;T&gt;&amp;) const;
-T void operator-= (const valarray&lt;T&gt;&amp;) const;
-T void operator^= (const valarray&lt;T&gt;&amp;) const;
-T void operator&amp;= (const valarray&lt;T&gt;&amp;) const;
-T void operator|= (const valarray&lt;T&gt;&amp;) const;
-T void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;
-T void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;
-T void operator=(const T&amp;);
-T ~gslice_array();
- private:
-T gslice_array();
-T gslice_array(const gslice_array&amp;);
-T gslice_array&amp; operator=(const gslice_array&amp;);
- };
-
-
- 26.3.8 Template class mask_array [lib.template.mask.array]
-
-T template &lt;class T&gt; class mask_array {
- public:
-T typedef T value_type;
-
-T void operator= (const valarray&lt;T&gt;&amp;) const;
-T void operator*= (const valarray&lt;T&gt;&amp;) const;
-T void operator/= (const valarray&lt;T&gt;&amp;) const;
-T void operator%= (const valarray&lt;T&gt;&amp;) const;
-T void operator+= (const valarray&lt;T&gt;&amp;) const;
-T void operator-= (const valarray&lt;T&gt;&amp;) const;
-T void operator^= (const valarray&lt;T&gt;&amp;) const;
-T void operator&amp;= (const valarray&lt;T&gt;&amp;) const;
-T void operator|= (const valarray&lt;T&gt;&amp;) const;
-T void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;
-T void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;
-T void operator=(const T&amp;);
-T ~mask_array();
- private:
-T mask_array();
-T mask_array(const mask_array&amp;);
-T mask_array&amp; operator=(const mask_array&amp;);
- // remainder implementation defined
- };
-
-
- 26.3.9 Template class [lib.template.indirect.array]
- indirect_array
-
-T template &lt;class T&gt; class indirect_array {
- public:
-T typedef T value_type;
-
-T void operator= (const valarray&lt;T&gt;&amp;) const;
-T void operator*= (const valarray&lt;T&gt;&amp;) const;
-T void operator/= (const valarray&lt;T&gt;&amp;) const;
-T void operator%= (const valarray&lt;T&gt;&amp;) const;
-T void operator+= (const valarray&lt;T&gt;&amp;) const;
-T void operator-= (const valarray&lt;T&gt;&amp;) const;
-T void operator^= (const valarray&lt;T&gt;&amp;) const;
-T void operator&amp;= (const valarray&lt;T&gt;&amp;) const;
-T void operator|= (const valarray&lt;T&gt;&amp;) const;
-T void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;
-T void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;
-T void operator=(const T&amp;);
-T ~indirect_array();
- private:
-T indirect_array();
-T indirect_array(const indirect_array&amp;);
-T indirect_array&amp; operator=(const indirect_array&amp;);
- // remainder implementation defined
- };
-
- 26.4 Generalized numeric operations [lib.numeric.ops]
-
- Header &lt;numeric&gt; synopsis
-
-T template &lt;class InputIterator, class T&gt;
- T accumulate(InputIterator first, InputIterator last, T init);
-
-T template &lt;class InputIterator, class T, class BinaryOperation&gt;
- T accumulate(InputIterator first, InputIterator last, T init,
- BinaryOperation binary_op);
-
-T template &lt;class InputIterator1, class InputIterator2, class T&gt;
- T inner_product(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, T init);
-
-T template &lt;class InputIterator1, class InputIterator2, class T,
- class BinaryOperation1, class BinaryOperation2&gt;
- T inner_product(InputIterator1 first1, InputIterator1 last1,
- InputIterator2 first2, T init,
- BinaryOperation1 binary_op1,
- BinaryOperation2 binary_op2);
-
-T template &lt;class InputIterator, class OutputIterator&gt;
- OutputIterator partial_sum(InputIterator first,
- InputIterator last,
- OutputIterator result);
-
-T template &lt;class InputIterator, class OutputIterator,
- class BinaryOperation&gt;
- OutputIterator partial_sum(InputIterator first,
- InputIterator last,
- OutputIterator result,
- BinaryOperation binary_op);
-
-T template &lt;class InputIterator, class OutputIterator&gt;
- OutputIterator adjacent_difference(InputIterator first,
- InputIterator last,
- OutputIterator result);
-
-T template &lt;class InputIterator, class OutputIterator,
- class BinaryOperation&gt;
- OutputIterator adjacent_difference(InputIterator first,
- InputIterator last,
- OutputIterator result,
- BinaryOperation binary_op);
-
-
- 26.5 C Library [lib.c.math]
-
- Table 2--Header &lt;cmath&gt; synopsis
-X Macro: HUGE_VAL
- Functions:
-X acos cos fmod modf tan
-X asin cosh frexp pow tanh
-X atan exp ldexp sin
-X atan2 fabs log sinh
-X ceil floor log10 sqrt
-
- Table 3--Header &lt;cstdlib&gt; synopsis
-X Macros: RAND_MAX
-X Types: div_t ldiv_t
- Functions:
-X abs labs srand
-X div ldiv rand
-
-X long abs(long); // labs()
-X ldiv_t div(long, long); // ldiv()
-
-X float abs (float);
-X float acos (float);
-X float asin (float);
-X float atan (float);
-X float atan2(float, float);
-X float ceil (float);
-X float cos (float);
-X float cosh (float);
-X float exp (float);
-X float fabs (float);
-X float floor(float);
-X float fmod (float, float);
-X float frexp(float, int*);
-X float ldexp(float, int);
-X float log (float);
-X float log10(float);
-X float modf (float, float*);
-X float pow (float, float);
-X float pow (float, int);
-X float sin (float);
-X float sinh (float);
-X float sqrt (float);
-X float tan (float);
-X float tanh (float);
-
-X double abs(double); // fabs()
-X double pow(double, int);
-
-X long double abs (long double);
-X long double acos (long double);
-X long double asin (long double);
-X long double atan (long double);
-X long double atan2(long double, long double);
-X long double ceil (long double);
-X long double cos (long double);
-X long double cosh (long double);
-X long double exp (long double);
-X long double fabs (long double);
-X long double floor(long double);
-X long double fmod (long double, long double);
-X long double frexp(long double, int*);
-X long double ldexp(long double, int);
-X long double log (long double);
-X long double log10(long double);
-X long double modf (long double, long double*);
-X long double pow (long double, long double);
-X long double pow (long double, int);
-X long double sin (long double);
-X long double sinh (long double);
-X long double sqrt (long double);
-X long double tan (long double);
-X long double tanh (long double);
-
- Header &lt;iosfwd&gt; synopsis
-
-X template&lt;class charT&gt; class char_traits;
-X template&lt;&gt; class char_traits&lt;char&gt;;
-X template&lt;&gt; class char_traits&lt;wchar_t&gt;;
-X template&lt;class T&gt; class allocator;
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ios;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_streambuf;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_istream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ostream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_iostream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
- class basic_stringbuf;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
- class basic_istringstream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
- class basic_ostringstream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
- class basic_stringstream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_filebuf;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ifstream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ofstream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_fstream;
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class istreambuf_iterator;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class ostreambuf_iterator;
-X typedef basic_ios&lt;char&gt; ios;
-X typedef basic_ios&lt;wchar_t&gt; wios;
-X typedef basic_streambuf&lt;char&gt; streambuf;
-X typedef basic_istream&lt;char&gt; istream;
-X typedef basic_ostream&lt;char&gt; ostream;
-X typedef basic_iostream&lt;char&gt; iostream;
-X typedef basic_stringbuf&lt;char&gt; stringbuf;
-X typedef basic_istringstream&lt;char&gt; istringstream;
-X typedef basic_ostringstream&lt;char&gt; ostringstream;
-X typedef basic_stringstream&lt;char&gt; stringstream;
-X typedef basic_filebuf&lt;char&gt; filebuf;
-X typedef basic_ifstream&lt;char&gt; ifstream;
-X typedef basic_ofstream&lt;char&gt; ofstream;
-X typedef basic_fstream&lt;char&gt; fstream;
-X typedef basic_streambuf&lt;wchar_t&gt; wstreambuf;
-X typedef basic_istream&lt;wchar_t&gt; wistream;
-X typedef basic_ostream&lt;wchar_t&gt; wostream;
-X typedef basic_iostream&lt;wchar_t&gt; wiostream;
-X typedef basic_stringbuf&lt;wchar_t&gt; wstringbuf;
-X typedef basic_istringstream&lt;wchar_t&gt; wistringstream;
-X typedef basic_ostringstream&lt;wchar_t&gt; wostringstream;
-X typedef basic_stringstream&lt;wchar_t&gt; wstringstream;
-
-X typedef basic_filebuf&lt;wchar_t&gt; wfilebuf;
-X typedef basic_ifstream&lt;wchar_t&gt; wifstream;
-X typedef basic_ofstream&lt;wchar_t&gt; wofstream;
-X typedef basic_fstream&lt;wchar_t&gt; wfstream;
-X template &lt;class state&gt; class fpos;
-X typedef fpos&lt;char_traits&lt;char&gt;::state_type&gt; streampos;
-X typedef fpos&lt;char_traits&lt;wchar_t&gt;::state_type&gt; wstreampos;
-
- 27.3 Standard iostream objects [lib.iostream.objects]
-
- Header &lt;iostream&gt; synopsis
-
-T [must also include &lt;istream&gt; and &lt;ostream&gt;]
-T extern istream cin;
-T extern ostream cout;
-T extern ostream cerr;
-T extern ostream clog;
-
-T extern wistream wcin;
-T extern wostream wcout;
-T extern wostream wcerr;
-T extern wostream wclog;
-
- 27.4 Iostreams base classes [lib.iostreams.base]
-
- Header &lt;ios&gt; synopsis
-
- #include &lt;iosfwd&gt;
-
-T typedef OFF_T streamoff;
-T typedef SZ_T streamsize;
-T template &lt;class stateT&gt; class fpos;
-
- class ios_base;
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ios;
- // _lib.std.ios.manip_, manipulators:
-T ios_base&amp; boolalpha (ios_base&amp; str);
-T ios_base&amp; noboolalpha(ios_base&amp; str);
-T ios_base&amp; showbase (ios_base&amp; str);
-T ios_base&amp; noshowbase (ios_base&amp; str);
-T ios_base&amp; showpoint (ios_base&amp; str);
-T ios_base&amp; noshowpoint(ios_base&amp; str);
-T ios_base&amp; showpos (ios_base&amp; str);
-T ios_base&amp; noshowpos (ios_base&amp; str);
-T ios_base&amp; skipws (ios_base&amp; str);
-T ios_base&amp; noskipws (ios_base&amp; str);
-T ios_base&amp; nouppercase(ios_base&amp; str);
-T ios_base&amp; uppercase (ios_base&amp; str);
-M ios_base&amp; unitbuf (ios_base&amp; str);
-M ios_base&amp; nounitbuf (ios_base&amp; str);
- // _lib.adjustfield.manip_ adjustfield:
-T ios_base&amp; internal (ios_base&amp; str);
-T ios_base&amp; left (ios_base&amp; str);
-T ios_base&amp; right (ios_base&amp; str);
- // _lib.basefield.manip_ basefield:
-T ios_base&amp; dec (ios_base&amp; str);
-T ios_base&amp; hex (ios_base&amp; str);
-T ios_base&amp; oct (ios_base&amp; str);
-
- // _lib.floatfield.manip_ floatfield:
-T ios_base&amp; fixed (ios_base&amp; str);
-T ios_base&amp; scientific (ios_base&amp; str);
-
-
- 27.4.2 Class ios_base [lib.ios.base]
-
-T class ios_base {
- public:
- class failure;
-T typedef T1 fmtflags;
-T static const fmtflags boolalpha;
-T static const fmtflags dec;
-T static const fmtflags fixed;
-T static const fmtflags hex;
-T static const fmtflags internal;
-T static const fmtflags left;
-T static const fmtflags oct;
-T static const fmtflags right;
-T static const fmtflags scientific;
-T static const fmtflags showbase;
-T static const fmtflags showpoint;
-T static const fmtflags showpos;
-T static const fmtflags skipws;
-X static const fmtflags unitbuf;
-T static const fmtflags uppercase;
-T static const fmtflags adjustfield;
-T static const fmtflags basefield;
-T static const fmtflags floatfield;
-
- typedef T2 iostate;
-T static const iostate badbit;
-T static const iostate eofbit;
-T static const iostate failbit;
-T static const iostate goodbit;
-T typedef T3 openmode;
-T static const openmode app;
-T static const openmode ate;
-T static const openmode binary;
-T static const openmode in;
-T static const openmode out;
-T static const openmode trunc;
-T typedef T4 seekdir;
-T static const seekdir beg;
-T static const seekdir cur;
-T static const seekdir end;
-T class Init;
- // _lib.fmtflags.state_ fmtflags state:
-T fmtflags flags() const;
-T fmtflags flags(fmtflags fmtfl);
-T fmtflags setf(fmtflags fmtfl);
-T fmtflags setf(fmtflags fmtfl, fmtflags mask);
-T void unsetf(fmtflags mask);
-T streamsize precision() const;
-T streamsize precision(streamsize prec);
-T streamsize width() const;
-T streamsize width(streamsize wide);
- // _lib.ios.base.locales_ locales:
-T locale imbue(const locale&amp; loc);
-T locale getloc() const;
- // _lib.ios.base.storage_ storage:
-T static int xalloc();
-T long&amp; iword(int index);
-T void*&amp; pword(int index);
- // destructor
-T virtual ~ios_base();
- // _lib.ios.base.callback_ callbacks;
-T enum event { erase_event, imbue_event, copyfmt_event };
-T typedef void (*event_callback)(event, ios_base&amp;, int index);
-T void register_callback(event_call_back fn, int index);
-T static bool sync_with_stdio(bool sync = true);
- protected:
-T ios_base();
- };
-
- 27.4.2.1.1 Class ios_base::failure [lib.ios::failure]
-
-T class ios_base::failure : public exception {
- public:
-T explicit failure(const string&amp; msg);
-T virtual ~failure();
-T virtual const char* what() const throw();
- };
-
-
- 27.4.2.1.6 Class ios_base::Init [lib.ios::Init]
-
-T class ios_base::Init {
- public:
-T Init();
-T ~Init();
- };
-
-
- 27.4.3 Template class fpos [lib.fpos]
-
-X template &lt;class stateT&gt; class fpos {
- public:
- // _lib.fpos.members_ Members
-T stateT state() const;
-T void state(stateT);
- private;
-T stateT st; // exposition only
- };
-
-
- 27.4.5 Template class basic_ios [lib.ios]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-X class basic_ios : public ios_base {
- public:
-
- // Types:
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
-T operator void*() const
-T bool operator!() const
-T iostate rdstate() const;
-T void clear(iostate state = goodbit);
-T void setstate(iostate state);
-T bool good() const;
-T bool eof() const;
-T bool fail() const;
-T bool bad() const;
-T iostate exceptions() const;
-T void exceptions(iostate except);
- // _lib.basic.ios.cons_ Constructor/destructor:
-T explicit basic_ios(basic_streambuf&lt;charT,traits&gt;* sb);
-T virtual ~basic_ios();
- // _lib.basic.ios.members_ Members:
-T basic_ostream&lt;charT,traits&gt;* tie() const;
-T basic_ostream&lt;charT,traits&gt;* tie(basic_ostream&lt;charT,traits&gt;* tiestr);
-T basic_streambuf&lt;charT,traits&gt;* rdbuf() const;
-T basic_streambuf&lt;charT,traits&gt;* rdbuf(basic_streambuf&lt;charT,traits&gt;* sb);
-X basic_ios&amp; copyfmt(const basic_ios&amp; rhs);
-T char_type fill() const;
-T char_type fill(char_type ch);
- // _lib.ios.base.locales_ locales:
-T locale imbue(const locale&amp; loc);
-X char narrow(char_type c, char dfault) const;
-X char_type widen(char c) const;
- protected:
- basic_ios();
-T void init(basic_streambuf&lt;charT,traits&gt;* sb);
- private:
-T basic_ios(const basic_ios&amp; ); // not defined
-T basic_ios&amp; operator=(const basic_ios&amp;); // not defined
- };
-
-
- 27.5 Stream buffers [lib.stream.buffers]
-
- Header &lt;streambuf&gt; synopsis
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_streambuf;
-T typedef basic_streambuf&lt;char&gt; streambuf;
-T typedef basic_streambuf&lt;wchar_t&gt; wstreambuf;
-
- 27.5.2 Template class [lib.streambuf]
- basic_streambuf&lt;charT,traits&gt;
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-X class basic_streambuf {
- public:
-
- // Types:
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
-T virtual ~basic_streambuf();
- // _lib.streambuf.locales_ locales:
-T locale pubimbue(const locale &amp;loc);
-T locale getloc() const;
- // _lib.streambuf.buffer_ buffer and positioning:
-T basic_streambuf&lt;char_type,traits&gt;*
- pubsetbuf(char_type* s, streamsize n);
-T pos_type pubseekoff(off_type off, ios_base::seekdir way,
- ios_base::openmode which =
- ios_base::in | ios_base::out);
-T pos_type pubseekpos(pos_type sp,
- ios_base::openmode which =
- ios_base::in | ios_base::out);
-T int pubsync();
-
- // Get and put areas:
- // _lib.streambuf.pub.get_ Get area:
-T streamsize in_avail();
-T int_type snextc();
-T int_type sbumpc();
-T int_type sgetc();
-T streamsize sgetn(char_type* s, streamsize n);
- // _lib.streambuf.pub.pback_ Putback:
-X int_type sputbackc(char_type c);
-X int_type sungetc();
- // _lib.streambuf.pub.put_ Put area:
-T int_type sputc(char_type c);
-X streamsize sputn(const char_type* s, streamsize n);
- protected:
-T basic_streambuf();
- // _lib.streambuf.get.area_ Get area:
-T char_type* eback() const;
-T char_type* gptr() const;
-T char_type* egptr() const;
-T void gbump(int n);
-T void setg(char_type* gbeg, char_type* gnext, char_type* gend);
- // _lib.streambuf.put.area_ Put area:
-T char_type* pbase() const;
-T char_type* pptr() const;
-T char_type* epptr() const;
-T void pbump(int n);
-T void setp(char_type* pbeg, char_type* pend);
- // _lib.streambuf.virtuals_ virtual functions:
- // _lib.streambuf.virt.locales_ Locales:
-T virtual void imbue(const locale &amp;loc);
- // _lib.streambuf.virt.buffer_ Buffer management and positioning:
-T virtual basic_streambuf&lt;char_type,traits&gt;*
- setbuf(char_type* s, streamsize n);
-T virtual pos_type seekoff(off_type off, ios_base::seekdir way,
- ios_base::openmode which = ios_base::in | ios_base::out);
-T virtual pos_type seekpos(pos_type sp,
- ios_base::openmode which = ios_base::in | ios_base::out);
-T virtual int sync();
- // _lib.streambuf.virt.get_ Get area:
-T virtual int showmanyc();
-T virtual streamsize xsgetn(char_type* s, streamsize n);
-T virtual int_type underflow();
-T virtual int_type uflow();
- // _lib.streambuf.virt.pback_ Putback:
-T virtual int_type pbackfail(int_type c = traits::eof());
- // _lib.streambuf.virt.put_ Put area:
-X virtual streamsize xsputn(const char_type* s, streamsize n);
-T virtual int_type overflow (int_type c = traits::eof());
- };
-
- 27.6 Formatting and manipulators [lib.iostream.format]
-
- Header &lt;istream&gt; synopsis
-
-T template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_istream;
-T typedef basic_istream&lt;char&gt; istream;
-T typedef basic_istream&lt;wchar_t&gt; wistream;
-
-T template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_iostream;
-T typedef basic_iostream&lt;char&gt; iostream;
-T typedef basic_iostream&lt;wchar_t&gt; wiostream;
-
-X template &lt;class charT, class traits&gt;
- basic_istream&lt;charT,traits&gt;&amp; ws(basic_istream&lt;charT,traits&gt;&amp; is);
-
- Header &lt;ostream&gt; synopsis
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ostream;
-T typedef basic_ostream&lt;char&gt; ostream;
-T typedef basic_ostream&lt;wchar_t&gt; wostream;
-
-T template &lt;class charT, class traits&gt;
- basic_ostream&lt;charT,traits&gt;&amp; endl(basic_ostream&lt;charT,traits&gt;&amp; os);
-T template &lt;class charT, class traits&gt;
- basic_ostream&lt;charT,traits&gt;&amp; ends(basic_ostream&lt;charT,traits&gt;&amp; os);
-T template &lt;class charT, class traits&gt;
- basic_ostream&lt;charT,traits&gt;&amp; flush(basic_ostream&lt;charT,traits&gt;&amp; os);
-
- Header &lt;iomanip&gt; synopsis
-
- // Types T1, T2, ... are unspecified implementation types
-T T1 resetiosflags(ios_base::fmtflags mask);
-T T2 setiosflags (ios_base::fmtflags mask);
-T T3 setbase(int base);
-T template&lt;charT&gt; T4 setfill(charT c);
-T T5 setprecision(int n);
-T T6 setw(int n);
-
-
- 27.6.1.1 Template class basic_istream [lib.istream]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-T class basic_istream : virtual public basic_ios&lt;charT,traits&gt; {
- public:
- // Types (inherited from basic_ios (_lib.ios_)):
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
- // _lib.istream.cons_ Constructor/destructor:
-T explicit basic_istream(basic_streambuf&lt;charT,traits&gt;* sb);
-T virtual ~basic_istream();
- // _lib.istream::sentry_ Prefix/suffix:
-T class sentry;
-
- // _lib.istream.formatted_ Formatted input:
-T basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;
- (basic_istream&lt;charT,traits&gt;&amp; (*pf)(basic_istream&lt;charT,traits&gt;&amp;))
-T basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;
- (basic_ios&lt;charT,traits&gt;&amp; (*pf)(basic_ios&lt;charT,traits&gt;&amp;))
-T basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;
- (ios_base&amp; (*pf)(ios_base&amp;))
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(bool&amp; n);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(short&amp; n);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned short&amp; n);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(int&amp; n);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned int&amp; n);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(long&amp; n);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned long&amp; n);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(float&amp; f);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(double&amp; f);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(long double&amp; f);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(void*&amp; p);
-S basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;
- (basic_streambuf&lt;char_type,traits&gt;* sb);
- // _lib.istream.unformatted_ Unformatted input:
-T streamsize gcount() const;
-S int_type get();
-S basic_istream&lt;charT,traits&gt;&amp; get(char_type&amp; c);
-S basic_istream&lt;charT,traits&gt;&amp; get(char_type* s, streamsize n);
-S basic_istream&lt;charT,traits&gt;&amp; get(char_type* s, streamsize n,
- char_type delim);
-S basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp; sb);
-S basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp; sb,
- char_type delim);
-S basic_istream&lt;charT,traits&gt;&amp; getline(char_type* s, streamsize n);
-S basic_istream&lt;charT,traits&gt;&amp; getline(char_type* s, streamsize n,
- char_type delim);
-S basic_istream&lt;charT,traits&gt;&amp; ignore
- (streamsize n = 1, int_type delim = traits::eof());
-S int_type peek();
-S basic_istream&lt;charT,traits&gt;&amp; read (char_type* s, streamsize n);
-S streamsize readsome(char_type* s, streamsize n);
-S basic_istream&lt;charT,traits&gt;&amp; putback(char_type c);
-S basic_istream&lt;charT,traits&gt;&amp; unget();
-S int sync();
-
-S pos_type tellg();
-S basic_istream&lt;charT,traits&gt;&amp; seekg(pos_type);
-S basic_istream&lt;charT,traits&gt;&amp; seekg(off_type, ios_base::seekdir);
- };
-
- // _lib.istream::extractors_ character extraction templates:
-S template&lt;class charT, class traits&gt;
- basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;,
- charT&amp;);
-S template&lt;class traits&gt;
- basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,
- unsigned char&amp;);
-S template&lt;class traits&gt;
- basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,
- signed char&amp;);
-
-S template&lt;class charT, class traits&gt;
- basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;,
- charT*);
-S template&lt;class traits&gt;
- basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,
- unsigned char*);
-S template&lt;class traits&gt;
- basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,
- signed char*);
-
- 27.6.1.1.2 Class basic_istream::sentry [lib.istream::sentry]
-
-
- template &lt;class charT,class traits = char_traits&lt;charT&gt; &gt;
-S class basic_istream&lt;charT,traits&gt;::sentry {
- typedef traits traits_type;
-S bool ok_; // exposition only
- public:
-S explicit sentry(basic_istream&lt;charT,traits&gt;&amp; is, bool noskipws = false);
-S ~sentry();
-S operator bool() const { return ok_; }
- private:
-T sentry(const sentry&amp;); // not defined
-T sentry&amp; operator=(const sentry&amp;); // not defined
- };
-
-
- 27.6.1.5 Template class basic_iostream [lib.iostreamclass]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-T class basic_iostream :
- public basic_istream&lt;charT,traits&gt;,
- public basic_ostream&lt;charT,traits&gt; {
- public:
- // constructor/destructor
-T explicit basic_iostream(basic_streambuf&lt;charT,traits&gt;* sb);
-T virtual ~basic_iostream();
- };
-
-
- 27.6.2.1 Template class basic_ostream [lib.ostream]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-X class basic_ostream : virtual public basic_ios&lt;charT,traits&gt; {
- public:
- // Types (inherited from basic_ios (_lib.ios_)):
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
- // _lib.ostream.cons_ Constructor/destructor:
-T explicit basic_ostream(basic_streambuf&lt;char_type,traits&gt;* sb);
-T virtual ~basic_ostream();
- // _lib.ostream::sentry_ Prefix/suffix:
-T class sentry;
- // _lib.ostream.formatted_ Formatted output:
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;
- (basic_ostream&lt;charT,traits&gt;&amp; (*pf)(basic_ostream&lt;charT,traits&gt;&amp;));
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;
- (basic_ios&lt;charT,traits&gt;&amp; (*pf)(basic_ios&lt;charT,traits&gt;&amp;));
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;
- (ios_base&amp; (*pf)(ios_base&amp;));
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(bool n);
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(short n);
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned short n);
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(int n);
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned int n);
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(long n);
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned long n);
-S basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(float f);
-S basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(double f);
-S basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(long double f);
-T basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(const void* p);
-X basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;
- (basic_streambuf&lt;char_type,traits&gt;* sb);
- // _lib.ostream.unformatted_ Unformatted output:
-T basic_ostream&lt;charT,traits&gt;&amp; put(char_type c);
-T basic_ostream&lt;charT,traits&gt;&amp; write(const char_type* s, streamsize n);
-X basic_ostream&lt;charT,traits&gt;&amp; flush();
-
- // _lib.ostream.seeks_ seeks:
-S pos_type tellp();
-S basic_ostream&lt;charT,traits&gt;&amp; seekp(pos_type);
-S basic_ostream&lt;charT,traits&gt;&amp; seekp(off_type, ios_base::seekdir);
- };
- // _lib.ostream.inserters.character_ character inserters
-X template&lt;class charT, class traits&gt;
- basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,
- charT);
-X template&lt;class charT, class traits&gt;
- basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,
- char);
- // specialization
-X template&lt;class traits&gt;
- basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,
- char);
- // signed and unsigned
-X template&lt;class traits&gt;
- basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,
- signed char);
-X template&lt;class traits&gt;
- basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,
- unsigned char)
-X template&lt;class charT, class traits&gt;
- basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,
- const charT*);
-X template&lt;class charT, class traits&gt;
- basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,
- const char*);
- // partial specializationss
-X template&lt;class traits&gt;
- basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,
- const char*);
- // signed and unsigned
-X template&lt;class traits&gt;
- basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,
- const signed char*);
-X template&lt;class traits&gt;
- basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,
- const unsigned char*);
-
-
- 27.6.2.3 Class basic_ostream::sentry [lib.ostream::sentry]
-
- template &lt;class charT,class traits = char_traits&lt;charT&gt; &gt;
-X class basic_ostream&lt;charT,traits&gt;::sentry {
- bool ok_; // exposition only
- public:
-X explicit sentry(basic_ostream&lt;charT,traits&gt;&amp; os);
-X ~sentry();
-X operator bool() const { return ok_; }
- private
-X sentry(const sentry&amp;); // not defined
-X sentry&amp; operator=(const sentry&amp;); // not defined
- };
-
- 27.7 String-based streams [lib.string.streams]
-
- Header &lt;sstream&gt; synopsis
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
- class basic_stringbuf;
-
-T typedef basic_stringbuf&lt;char&gt; stringbuf;
-T typedef basic_stringbuf&lt;wchar_t&gt; wstringbuf;
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
-X class basic_istringstream;
-
-T typedef basic_istringstream&lt;char&gt; istringstream;
-T typedef basic_istringstream&lt;wchar_t&gt; wistringstream;
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
-X class basic_ostringstream;
-T typedef basic_ostringstream&lt;char&gt; ostringstream;
-T typedef basic_ostringstream&lt;wchar_t&gt; wostringstream;
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
-X class basic_stringstream;
-T typedef basic_stringstream&lt;char&gt; stringstream;
-T typedef basic_stringstream&lt;wchar_t&gt; wstringstream;
-
- 27.7.1 Template class basic_stringbuf [lib.stringbuf]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
-X class basic_stringbuf : public basic_streambuf&lt;charT,traits&gt; {
- public:
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
- // _lib.stringbuf.cons_ Constructors:
-S explicit basic_stringbuf(ios_base::openmode which
- = ios_base::in | ios_base::out);
-S explicit basic_stringbuf
- (const basic_string&lt;charT,traits,Allocator&gt;&amp; str,
- ios_base::openmode which = ios_base::in | ios_base::out);
- // _lib.stringbuf.members_ Get and set:
-S basic_string&lt;charT,traits,Allocator&gt; str() const;
-S void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);
-
- protected:
- // _lib.stringbuf.virtuals_ Overridden virtual functions:
-S virtual int_type underflow();
-S virtual int_type pbackfail(int_type c = traits::eof());
-S virtual int_type overflow (int_type c = traits::eof());
-S virtual basic_streambuf&lt;charT,traits&gt;* setbuf(charT*, streamsize);
-
-S virtual pos_type seekoff(off_type off, ios_base::seekdir way,
- ios_base::openmode which
- = ios_base::in | ios_base::out);
-S virtual pos_type seekpos(pos_type sp,
- ios_base::openmode which
- = ios_base::in | ios_base::out);
- };
-
-
- 27.7.2 Template class basic_istringstream [lib.istringstream]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
-X class basic_istringstream : public basic_istream&lt;charT,traits&gt; {
- public:
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
- // _lib.istringstream.cons_ Constructors:
-S explicit basic_istringstream(ios_base::openmode which = ios_base::in);
-S explicit basic_istringstream(
- const basic_string&lt;charT,traits,Allocator&gt;&amp; str,
- ios_base::openmode which = ios_base::in);
-
- // _lib.istringstream.members_ Members:
-S basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;
-S basic_string&lt;charT,traits,Allocator&gt; str() const;
-S void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);
- private:
- // basic_stringbuf&lt;charT,traits,Allocator&gt; sb; exposition only
- };
-
- 27.7.3 Class basic_ostringstream [lib.ostringstream]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
-X class basic_ostringstream : public basic_ostream&lt;charT,traits&gt; {
- public:
-
- // Types:
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
- // _lib.ostringstream.cons_ Constructors/destructor:
-S explicit basic_ostringstream(ios_base::openmode which = ios_base::out);
-S explicit basic_ostringstream(
- const basic_string&lt;charT,traits,Allocator&gt;&amp; str,
- ios_base::openmode which = ios_base::out);
- // _lib.ostringstream.members_ Members:
-S basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;
-S basic_string&lt;charT,traits,Allocator&gt; str() const;
-S void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);
- };
-
-
- 27.7.4 Template class basic_stringstream [lib.stringstream]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt;,
- class Allocator = allocator&lt;charT&gt; &gt;
-X class basic_stringstream
- : public basic_iostream&lt;charT,traits&gt; {
- public:
- // Types
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
- // constructors/destructors
-S explicit basic_stringstream(
- ios_base::openmode which = ios_base::out|ios_base::in);
-S explicit basic_stringstream(
- const basic_string&lt;charT,traits,Allocator&gt;&amp; str,
- ios_base::openmode which = ios_base::out|ios_base::in);
- // Members:
-S basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;
-S basic_string&lt;charT,traits,Allocator&gt; str() const;
-S void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; str);
- };
-
-
-
- 27.8.1 File streams [lib.fstreams]
-
-
- Header &lt;fstream&gt; synopsis
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_filebuf;
-T typedef basic_filebuf&lt;char&gt; filebuf;
-T typedef basic_filebuf&lt;wchar_t&gt; wfilebuf;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ifstream;
-T typedef basic_ifstream&lt;char&gt; ifstream;
-T typedef basic_ifstream&lt;wchar_t&gt; wifstream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ofstream;
-T typedef basic_ofstream&lt;char&gt; ofstream;
-T typedef basic_ofstream&lt;wchar_t&gt; wofstream;
-
-X template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_fstream;
-T typedef basic_fstream&lt;char&gt; fstream;
-T typedef basic_fstream&lt;wchar_t&gt; wfstream;
-
- 27.8.1.1 Template class basic_filebuf [lib.filebuf]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-X class basic_filebuf : public basic_streambuf&lt;charT,traits&gt; {
- public:
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
- // _lib.filebuf.cons_ Constructors/destructor:
-X basic_filebuf();
-X virtual ~basic_filebuf();
- // _lib.filebuf.members_ Members:
-T bool is_open() const;
-X basic_filebuf&lt;charT,traits&gt;* open
- (const char* s, ios_base::openmode mode);
-X basic_filebuf&lt;charT,traits&gt;* close();
- protected:
- // _lib.filebuf.virtuals_ Overridden virtual functions:
-X virtual streamsize showmanyc();
-X virtual int_type underflow();
-X virtual int_type uflow();
-X virtual int_type pbackfail(int_type c = traits::eof());
-X virtual int_type overflow (int_type c = traits::eof());
-S virtual basic_streambuf&lt;charT,traits&gt;*
- setbuf(char_type* s, streamsize n);
-S virtual pos_type seekoff(off_type off, ios_base::seekdir way,
- ios_base::openmode which
- = ios_base::in | ios_base::out);
-S virtual pos_type seekpos(pos_type sp, ios_base::openmode which
- = ios_base::in | ios_base::out);
-S virtual int sync();
-S virtual void imbue(const locale&amp; loc);
- };
-
-
-
- 27.8.1.5 Template class basic_ifstream [lib.ifstream]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-X class basic_ifstream : public basic_istream&lt;charT,traits&gt; {
- public:
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
- // _lib.ifstream.cons_ Constructors:
-S basic_ifstream();
-S explicit basic_ifstream(const char* s,
- ios_base::openmode mode = ios_base::in);
- // _lib.ifstream.members_ Members:
-S basic_filebuf&lt;charT,traits&gt;* rdbuf() const;
-S bool is_open();
-S void open(const char* s, ios_base::openmode mode = ios_base::in);
-S void close();
- };
-
-
- 27.8.1.8 Template class basic_ofstream [lib.ofstream]
-
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
-X class basic_ofstream : public basic_ostream&lt;charT,traits&gt; {
- public:
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
- // _lib.ofstream.cons_ Constructors:
-X basic_ofstream();
-X explicit basic_ofstream(const char* s,
- ios_base::openmode mode
- = ios_base::out);
- // _lib.ofstream.members_ Members:
-X basic_filebuf&lt;charT,traits&gt;* rdbuf() const;
-T bool is_open();
-X void open(const char* s, ios_base::openmode mode = ios_base::out);
-X void close();
- };
-
-
- 27.8.1.11 Template class basic_fstream [lib.fstream]
-
- template &lt;class charT, class traits=char_traits&lt;charT&gt; &gt;
-X class basic_fstream
- : public basic_iostream&lt;charT,traits&gt; {
- public:
-T typedef charT char_type;
-T typedef typename traits::int_type int_type;
-T typedef typename traits::pos_type pos_type;
-T typedef typename traits::off_type off_type;
-T typedef traits traits_type;
- // constructors/destructor
-S basic_fstream();
-S explicit basic_fstream(
- const char* s,
- ios_base::openmode mode = ios_base::in|ios_base::out);
-
- // Members:
-S basic_filebuf&lt;charT,traits&gt;* rdbuf() const;
-S bool is_open();
-S void open(
- const char* s,
- ios_base::openmode mode = ios_base::in|ios_base::out);
-S void close();
- };
-
-
-
- 27.8.2 C Library files [lib.c.files]
-
-
- Table 13--Header &lt;cstdio&gt; synopsis
- Macros:
-X BUFSIZ L_tmpnam SEEK_SET TMP_MAX
-X EOF NULL &lt;cstdio&gt; stderr _IOFBF
-X FILENAME_MAX SEEK_CUR stdin _IOLBF
-X FOPEN_MAX SEEK_END stdout _IONBF
-
-X Types: FILE fpos_t size_t &lt;cstdio&gt;
- Functions:
-X clearerr fgets fscanf gets rewind
-X fclose fopen fseek perror scanf tmpnam
-X feof fprintf fsetpos printf setbuf ungetc
-X ferror fputc ftell putc setvbuf vprintf
-X fflush fputs fwrite puts sprintf vfprintf
-X fgetc fread getc remove sscanf vsprintf
-X fgetpos freopen getchar putchar rename tmpfile
-
-
-
-
- 1.5 Standard C library headers [depr.c.headers]
-
-X &lt;assert.h&gt; &lt;iso646.h&gt; &lt;setjmp.h&gt; &lt;stdio.h&gt; &lt;wchar.h&gt;
- &lt;ctype.h&gt; &lt;limits.h&gt; &lt;signal.h&gt; &lt;stdlib.h&gt; &lt;wctype.h&gt;
- &lt;errno.h&gt; &lt;locale.h&gt; &lt;stdarg.h&gt; &lt;string.h&gt;
- &lt;float.h&gt; &lt;math.h&gt; &lt;stddef.h&gt; &lt;time.h&gt;
-
- 1.6 Old iostreams members [depr.ios.members]
-
- [Note: these should be #ifdef'd to permit diagnostics if used.]
- namespace std {
- class ios_base {
- public:
-T typedef T1 io_state;
-T typedef T2 open_mode;
-T typedef T3 seek_dir;
-T typedef OFF_T streamoff;
-T typedef OFF_T streampos;
- // remainder unchanged
- };
- }
-
- [Note: these should be #ifdef'd to permit diagnostics if used.]
- namespace std {
- template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_streambuf {
- public:
-T void stossc();
- // remainder unchanged
- };
- }
-
- 8 An implementation may provide the following member functions that
- overload signatures specified in clause _lib.iostreams_:
-
- [Note: the following overloads should be #ifdef'd to permit
- diagnostics to be emitted, by default, if used.]
-
- template&lt;class charT, class Traits&gt; class basic_ios {
- public:
-M void clear(io_state state);
-M void setstate(io_state state);
- // remainder unchanged
- };
- class ios_base {
- public:
-M void exceptions(io_state);
- // remainder unchanged
- };
- template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_streambuf {
- public:
-M pos_type pubseekoff(off_type off, ios_base::seek_dir way,
- ios_base::open_mode which = ios_base::in | ios_base::out);
-M pos_type pubseekpos(pos_type sp,
- ios_base::open_mode which = ios_base::in | ios_base::out);
- // remainder unchanged
- };
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_filebuf : public basic_streambuf&lt;charT,traits&gt; {
- public:
-M basic_filebuf&lt;charT,traits&gt;* open
- (const char* s, ios_base::open_mode mode);
- // remainder unchanged
- };
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ifstream : public basic_istream&lt;charT,traits&gt; {
- public:
-M void open(const char* s, ios_base::open_mode mode = in);
- // remainder unchanged
- };
- template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
- class basic_ofstream : public basic_ostream&lt;charT,traits&gt; {
- public:
-M void open(const char* s, ios_base::open_mode mode = out | trunc);
- // remainder unchanged
- };
- }
-
-
-
- 1.7.1 Class strstreambuf [depr.strstreambuf]
-
- [Note: It should be possible to adopt these components with only
- minor changes from the 2.8 version of the library.]
-
-M class strstreambuf : public basic_streambuf&lt;char&gt; {
- public:
-M explicit strstreambuf(streamsize alsize_arg = 0);
-M strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*));
-M strstreambuf(char* gnext_arg, streamsize n, char* pbeg_arg = 0);
-M strstreambuf(const char* gnext_arg, streamsize n);
-M strstreambuf(signed char* gnext_arg, streamsize n,
- signed char* pbeg_arg = 0);
-M strstreambuf(const signed char* gnext_arg, streamsize n);
-M strstreambuf(unsigned char* gnext_arg, streamsize n,
- unsigned char* pbeg_arg = 0);
-M strstreambuf(const unsigned char* gnext_arg, streamsize n);
-M virtual ~strstreambuf();
-M void freeze(bool freezefl = true);
-M char* str();
-M int pcount();
- protected:
-M virtual int_type overflow (int_type c = EOF);
-M virtual int_type pbackfail(int_type c = EOF);
-M virtual int_type underflow();
-M virtual pos_type seekoff(off_type off, ios_base::seekdir way,
- ios_base::openmode which
- = ios_base::in | ios_base::out);
-M virtual pos_type seekpos(pos_type sp, ios_base::openmode which
- = ios_base::in | ios_base::out);
-M virtual streambuf&lt;char&gt;* setbuf(char* s, streamsize n);
- }
-
- 1.7.4 Class strstream [depr.strstream]
-
-M class strstream
- : public basic_iostream&lt;char&gt; {
- public:
- // Types
-M typedef char char_type;
-M typedef typename char_traits&lt;char&gt;::int_type int_type
-M typedef typename char_traits&lt;char&gt;::pos_type pos_type;
-M typedef typename char_traits&lt;char&gt;::off_type off_type;
- // consturctors/destructor
-M strstream();
-M strstream(char* s, int n,
- ios_base::openmode mode = ios_base::in|ios_base::out);
-M virtual ~strstream();
- // Members:
-M strstreambuf* rdbuf() const;
-M void freeze(bool freezefl = true);
-M int pcount() const;
-M char* str();
- };
-</literallayout>
-
+<title>C++ 1998/2003</title>
+
+<sect3 id="standard.1998.status" xreflabel="Implementation Status">
+ <title>Implementation Status</title>
+
+<para>
+This status table is based on the table of contents of ISO/IEC 14882:2003.
+</para>
+
+<para>
+This page describes the C++0x support in mainline GCC SVN, not in any
+particular release.
+</para>
+
+<!-- Status is Yes or No, Broken/Partial-->
+<!--
+ Yes
+
+ No
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ Broken/Partial
+ <?dbhtml bgcolor="#B0B0B0" ?>
+-->
+<table frame='all'>
+<title>C++ 1998/2003 Implementation Status</title>
+<tgroup cols='4' align='left' colsep='0' rowsep='1'>
+<colspec colname='c1'></colspec>
+<colspec colname='c2'></colspec>
+<colspec colname='c3'></colspec>
+<colspec colname='c4'></colspec>
+ <thead>
+ <row>
+ <entry>Section</entry>
+ <entry>Description</entry>
+ <entry>Status</entry>
+ <entry>Comments</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>
+ <emphasis>18</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Language support</emphasis>
+ </entry>
+ </row>
+
+ <row>
+ <entry>18.1</entry>
+ <entry>Types</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.2</entry>
+ <entry>Implementation properties</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.2.1</entry>
+ <entry>Numeric Limits</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.2.1.1</entry>
+ <entry>Class template <code>numeric_limits</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.2.1.2</entry>
+ <entry><code>numeric_limits</code> members</entry>
+ <entry>Y</entry>
+ </row>
+ <row>
+ <entry>18.2.1.3</entry>
+ <entry><code>float_round_style</code></entry>
+ <entry>Y</entry>
+ </row>
+ <row>
+ <entry>18.2.1.4</entry>
+ <entry><code>float_denorm_style</code></entry>
+ <entry>Y</entry>
+ </row>
+ <row>
+ <entry>18.2.1.5</entry>
+ <entry><code>numeric_limits</code> specializations</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.2.2</entry>
+ <entry>C Library</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.3</entry>
+ <entry>Start and termination</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.4</entry>
+ <entry>Dynamic memory management</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.5</entry>
+ <entry>Type identification</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.5.1</entry>
+ <entry>Class type_info</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.5.2</entry>
+ <entry>Class bad_cast</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.5.3</entry>
+ <entry>Class bad_typeid</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.6</entry>
+ <entry>Exception handling</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.6.1</entry>
+ <entry>Class exception</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.6.2</entry>
+ <entry>Violation exception-specifications</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.6.3</entry>
+ <entry>Abnormal termination</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.6.4</entry>
+ <entry><code>uncaught_exception</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>18.7</entry>
+ <entry>Other runtime support</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>19</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Diagnostics</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>19.1</entry>
+ <entry>Exception classes</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>19.2</entry>
+ <entry>Assertions</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>19.3</entry>
+ <entry>Error numbers</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>20</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>General utilities</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>20.1</entry>
+ <entry>Requirements</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.2</entry>
+ <entry>Utility components</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.2.1</entry>
+ <entry>Operators</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.2.2</entry>
+ <entry><code>pair</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.3</entry>
+ <entry>Function objects</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.3.1</entry>
+ <entry>Base</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.3.2</entry>
+ <entry>Arithmetic operation</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.3.3</entry>
+ <entry>Comparisons</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.3.4</entry>
+ <entry>Logical operations</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.3.5</entry>
+ <entry>Negators</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.3.6</entry>
+ <entry>Binders</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.3.7</entry>
+ <entry>Adaptors for pointers to functions</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.3.8</entry>
+ <entry>Adaptors for pointers to members</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4</entry>
+ <entry>Memory</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4.1</entry>
+ <entry>The default allocator</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4.2</entry>
+ <entry>Raw storage iterator</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4.3</entry>
+ <entry>Temporary buffers</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4.4</entry>
+ <entry>Specialized algorithms</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4.4.1</entry>
+ <entry><code>uninitialized_copy</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4.4.2</entry>
+ <entry><code>uninitialized_fill</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4.4.3</entry>
+ <entry><code>uninitialized_fill_n</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4.5</entry>
+ <entry>Class template <code>auto_ptr</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>20.4.6</entry>
+ <entry>C library</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>21</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Strings</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>21.1</entry>
+ <entry>Character traits</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>21.1.1</entry>
+ <entry>Character traits requirements</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>21.1.2</entry>
+ <entry>traits typedef</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>21.1.3</entry>
+ <entry><code>char_traits</code> specializations</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>21.1.3.1</entry>
+ <entry>struct <code>char_traits&lt;char&gt;</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>21.1.3.2</entry>
+ <entry>struct <code>char_traits&lt;wchar_t&gt;</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>21.2</entry>
+ <entry>String classes</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>21.3</entry>
+ <entry>Class template <code>basic_string</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>21.4</entry>
+ <entry>Null-terminated sequence utilities</entry>
+ <entry>Y</entry>
+ <entry>C library dependency</entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>22</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Localization</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>22.1</entry>
+ <entry>Locales</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.1.1</entry>
+ <entry>Class <code>locale</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.1.2</entry>
+ <entry><code>locale</code> globals</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.1.3</entry>
+ <entry>Convenience interfaces</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.1.3.1</entry>
+ <entry>Character classification</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.1.3.2</entry>
+ <entry>Character conversions</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2</entry>
+ <entry>Standard locale categories</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.1</entry>
+ <entry><code>ctype</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.2</entry>
+ <entry>Numeric</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.2.1</entry>
+ <entry><code>num_get</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.2.2</entry>
+ <entry><code>num_put</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.3</entry>
+ <entry><code>num_punct</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.4</entry>
+ <entry><code>collate</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.5</entry>
+ <entry>Time</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.5.1</entry>
+ <entry><code>time_get</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.5.2</entry>
+ <entry><code>time_get_byname</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.5.3</entry>
+ <entry><code>time_put</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.5.3</entry>
+ <entry><code>time_put_byname</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.6</entry>
+ <entry>Monetary</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.6.1</entry>
+ <entry><code>money_get</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.6.2</entry>
+ <entry><code>money_put</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.6.3</entry>
+ <entry><code>money_punct</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.6.4</entry>
+ <entry><code>money_punct_byname</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.7</entry>
+ <entry><code>messages</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.2.8</entry>
+ <entry>Program-defined facets</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>22.3</entry>
+ <entry>C Library Locales</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>23</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Containers</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>23.1</entry>
+ <entry>Container requirements</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.2</entry>
+ <entry>Sequence containers</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.2.1</entry>
+ <entry>Class template <code>deque</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.2.2</entry>
+ <entry>Class template <code>list</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.2.3</entry>
+ <entry>Adaptors</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.2.3.1</entry>
+ <entry>Class template <code>queue</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.2.3.2</entry>
+ <entry>Class template <code>priority_queue</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.2.3.3</entry>
+ <entry>Class template <code>stack</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.2.4</entry>
+ <entry>Class template <code>vector</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.2.5</entry>
+ <entry>Class <code>vector&lt;bool&gt;</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.3</entry>
+ <entry>Associative containers</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.3.1</entry>
+ <entry>Class template <code>map</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.3.2</entry>
+ <entry>Class template <code>multimap</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.3.3</entry>
+ <entry>Class template <code>set</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>23.3.4</entry>
+ <entry>Class template <code>multiset</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>24</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Iterators</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>24.1</entry>
+ <entry>Requirements</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.2</entry>
+ <entry>Header <code>&lt;iterator&gt;</code> synopsis</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.3</entry>
+ <entry>Iterator primitives</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.4</entry>
+ <entry>Predefined iterators and Iterator adaptors</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.4.1</entry>
+ <entry>Reverse iterators</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.4.2</entry>
+ <entry>Insert iterators</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.5</entry>
+ <entry>Stream iterators</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.5.1</entry>
+ <entry>Class template <code>istream_iterator</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.5.2</entry>
+ <entry>Class template <code>ostream_iterator</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.5.3</entry>
+ <entry>Class template <code>istreambuf_iterator</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>24.5.4</entry>
+ <entry>Class template <code>ostreambuf_iterator</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>25</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Algorithms</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>25.1</entry>
+ <entry>Non-modifying sequence operations</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>25.2</entry>
+ <entry>Mutating sequence operations</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>25.3</entry>
+ <entry>Sorting and related operations</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>25.4</entry>
+ <entry>C library algorithms</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>26</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Numerics</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>26.1</entry>
+ <entry>Numeric type requirements</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.2</entry>
+ <entry>Complex numbers</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3</entry>
+ <entry>Numeric arrays</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3.1</entry>
+ <entry>Header <code>&lt;valarray&gt;</code> synopsis</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3.2</entry>
+ <entry>Class template <code>valarray</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3.3</entry>
+ <entry><code>valarray</code> non-member operations</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3.4</entry>
+ <entry>Class <code>slice</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3.5</entry>
+ <entry>Class template <code>slice_array</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3.6</entry>
+ <entry>Class <code>gslice</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3.7</entry>
+ <entry>Class template <code>gslice_array</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3.8</entry>
+ <entry>Class template <code>mask_array</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.3.9</entry>
+ <entry>Class template <code>indirect_array</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.4</entry>
+ <entry>Generalized numeric operations</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.4.1</entry>
+ <entry><code>accumulate</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.4.2</entry>
+ <entry><code>inner_product</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.4.3</entry>
+ <entry><code>partial_sum</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.4.4</entry>
+ <entry><code>adjacent_difference</code></entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.4.5</entry>
+ <entry>iota</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>26.5</entry>
+ <entry>C Library</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>27</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Input/output</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>27.1</entry>
+ <entry>Requirements</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>27.2</entry>
+ <entry>Forward declarations</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>27.3</entry>
+ <entry>Standard iostream objects</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>27.3.1</entry>
+ <entry>Narrow stream objects</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>27.3.2</entry>
+ <entry>Wide stream objects</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>27.4</entry>
+ <entry>Iostreams base classes</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>27.5</entry>
+ <entry>Stream buffers</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>27.6</entry>
+ <entry>Formatting and manipulators</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>27.7</entry>
+ <entry>String-based streams</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>27.8</entry>
+ <entry>File-based streams</entry>
+ <entry>Y</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>
+ <emphasis>Appendix D</emphasis>
+ </entry>
+ <entry namest="c2" nameend="c4" align="left">
+ <emphasis>Compatibility features</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>D.1</entry>
+ <entry>Increment operator with bool operand</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>D.2</entry>
+ <entry><code>static</code> keyword</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>D.3</entry>
+ <entry>Access declarations</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>D.4</entry>
+ <entry>Implicit conversion from const strings</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>D.5</entry>
+ <entry>C standard library headers</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>D.6</entry>
+ <entry>Old iostreams members</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>D.7</entry>
+ <entry>char* streams</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+
+ </tbody>
+</tgroup>
+</table>
</sect3>
-
<sect3 id="standard.1998.specific" xreflabel="Implementation Specific">
<title>Implementation Specific Behavior</title>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml b/libstdc++-v3/doc/xml/manual/status_cxx200x.xml
index e6f52398dea..2ff0e627a3d 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx200x.xml
@@ -1,5 +1,5 @@
<sect2 id="manual.intro.status.standard.200x" xreflabel="Status C++ 200x">
-<?dbhtml filename="standard_cxx200x.html"?>
+<?dbhtml filename="status_iso_cxx200x.html"?>
<sect2info>
<keywordset>
@@ -865,9 +865,8 @@ particular release.
<entry>Y</entry>
<entry>
<para>
- Uses code from the
- <ulink url="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">Boost
- shared_ptr</ulink> library.
+ Uses code from
+ <ulink url="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</ulink>.
</para>
</entry>
</row>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
index 092a78af458..33172e3ac02 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
@@ -1,5 +1,5 @@
<sect2 id="manual.intro.status.standard.tr1" xreflabel="Status C++ TR1">
-<?dbhtml filename="standard_cxxtr1.html"?>
+<?dbhtml filename="status_iso_cxxtr1.html"?>
<sect2info>
<keywordset>
@@ -31,2243 +31,1752 @@ This page describes the TR1 support in mainline GCC SVN, not in any particular
release.
</para>
+<!-- Status is Yes or No, Broken/Partial-->
+<!--
+ Yes
+
+ No
+ <?dbhtml bgcolor="#C8B0B0" ?>
+ Broken/Partial
+ <?dbhtml bgcolor="#B0B0B0" ?>
+-->
<table frame='all'>
<title>C++ TR1 Implementation Status</title>
-<tgroup cols='6' align='left' colsep='1' rowsep='1'>
+<tgroup cols='4' align='left' colsep='0' rowsep='1'>
<colspec colname='c1'></colspec>
<colspec colname='c2'></colspec>
<colspec colname='c3'></colspec>
<colspec colname='c4'></colspec>
-<colspec colname='c5'></colspec>
-<colspec colname='c6'></colspec>
<thead>
<row>
<entry>Section</entry>
<entry>Description</entry>
- <entry>Done</entry>
- <entry>Broken</entry>
- <entry>Missing</entry>
+ <entry>Status</entry>
<entry>Comments</entry>
</row>
</thead>
<tbody>
<row>
<entry><emphasis>2</emphasis></entry>
- <entry namest="c2" nameend="c6" align="left"><emphasis>General Utilities</emphasis></entry>
+ <entry namest="c2" nameend="c4" align="left"><emphasis>General Utilities</emphasis></entry>
</row>
<row>
<entry>2.1</entry>
<entry>Reference wrappers</entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>2.1.1</entry>
<entry>Additions to header <code>&lt;functional&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.1.2</entry>
<entry>Class template <code>reference_wrapper</code></entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>2.1.2.1</entry>
<entry><code>reference_wrapper</code> construct/copy/destroy</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.1.2.2</entry>
<entry><code>reference_wrapper</code> assignment</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.1.2.3</entry>
<entry><code>reference_wrapper</code> access</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.1.2.4</entry>
<entry><code>reference_wrapper</code> invocation</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.1.2.5</entry>
<entry><code>reference_wrapper</code> helper functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2</entry>
<entry>Smart pointers</entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>2.2.1</entry>
<entry>Additions to header <code>&lt;memory&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.2</entry>
<entry>Class <code>bad_weak_ptr</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3</entry>
<entry>Class template <code>shared_ptr</code></entry>
- <entry>done</entry>
<entry></entry>
- <entry></entry>
- <entry>See Footnotes</entry>
+ <entry>
+ <para>
+ Uses code from
+ <ulink url="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</ulink>.
+ </para>
+ </entry>
</row>
<row>
<entry>2.2.3.1</entry>
<entry><code>shared_ptr</code> constructors</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3.2</entry>
<entry><code>shared_ptr</code> destructor</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3.3</entry>
<entry><code>shared_ptr</code> assignment</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3.4</entry>
<entry><code>shared_ptr</code> modifiers</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3.5</entry>
<entry><code>shared_ptr</code> observers</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3.6</entry>
<entry><code>shared_ptr</code> comparison</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3.7</entry>
<entry><code>shared_ptr</code> I/O</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3.8</entry>
<entry><code>shared_ptr</code> specialized algorithms</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3.9</entry>
<entry><code>shared_ptr</code> casts</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.3.10</entry>
<entry><code>get_deleter</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.4</entry>
<entry>Class template <code>weak_ptr</code></entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>2.2.4.1</entry>
<entry><code>weak_ptr</code> constructors</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.4.2</entry>
<entry><code>weak_ptr</code> destructor</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.4.3</entry>
<entry><code>weak_ptr</code> assignment</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.4.4</entry>
<entry><code>weak_ptr</code> modifiers</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.4.5</entry>
<entry><code>weak_ptr</code> observers</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.4.6</entry>
<entry><code>weak_ptr</code> comparison</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.4.7</entry>
<entry><code>weak_ptr</code> specialized algorithms</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>2.2.5</entry>
<entry>Class template <code>enable_shared_from_this</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry><emphasis>3</emphasis></entry>
- <entry namest="c2" nameend="c6" align="left"><emphasis>Function Objects</emphasis></entry>
+ <entry namest="c2" nameend="c4" align="left"><emphasis>Function Objects</emphasis></entry>
</row>
<row>
<entry>3.1</entry>
<entry>Definitions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.2</entry>
<entry>Additions to <code>&lt;functional&gt; synopsis</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.3</entry>
<entry>Requirements</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.4</entry>
<entry>Function return types</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.5</entry>
<entry>Function template <code>mem_fn</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.6</entry>
<entry>Function object binders</entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>3.6.1</entry>
<entry>Class template <code>is_bind_expression</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.6.2</entry>
<entry>Class template <code>is_placeholder</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.6.3</entry>
<entry>Function template <code>bind</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.6.4</entry>
<entry>Placeholders</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7</entry>
<entry>Polymorphic function wrappers</entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>3.7.1</entry>
<entry>Class <code>bad_function_call<code></code></code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7.1.1</entry>
<entry><code>bad_function_call</code> constructor</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7.2</entry>
<entry>Class template <code>function</code></entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>3.7.2.1</entry>
<entry><code>function</code> construct/copy/destroy</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7.2.2</entry>
<entry><code>function</code> modifiers</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7.2.3</entry>
<entry><code>function</code> capacity</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7.2.4</entry>
<entry><code>function</code> invocation</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7.2.5</entry>
<entry><code>function</code> target access</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7.2.6</entry>
<entry>undefined operators</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7.2.7</entry>
<entry>null pointer comparison operators</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>3.7.2.8</entry>
<entry>specialized algorithms</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry><emphasis>4</emphasis></entry>
- <entry namest="c2" nameend="c6" align="left"><emphasis>Metaprogramming and type traits</emphasis></entry>
+ <entry namest="c2" nameend="c4" align="left"><emphasis>Metaprogramming and type traits</emphasis></entry>
</row>
<row>
<entry>4.1</entry>
<entry>Requirements</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.2</entry>
<entry>Header <code>&lt;type_traits&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.3</entry>
<entry>Helper classes</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.4</entry>
<entry>General Requirements</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.5</entry>
<entry>Unary Type Traits</entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>4.5.1</entry>
<entry>Primary Type Categories</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.5.2</entry>
<entry>Composite type traits</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.5.3</entry>
<entry>Type properties</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.6</entry>
<entry>Relationships between types</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.7</entry>
<entry>Transformations between types</entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>4.7.1</entry>
<entry>Const-volatile modifications</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.7.2</entry>
<entry>Reference modifications</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.7.3</entry>
<entry>Array modifications</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.7.4</entry>
<entry>Pointer modifications</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.8</entry>
<entry>Other transformations</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>4.9</entry>
<entry>Implementation requirements</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry><emphasis>5</emphasis></entry>
- <entry namest="c2" nameend="c6" align="left"><emphasis>Numerical Facilities</emphasis></entry>
+ <entry namest="c2" nameend="c4" align="left"><emphasis>Numerical Facilities</emphasis></entry>
</row>
<row>
<entry>5.1</entry>
<entry>Random number generation</entry>
- <entry>done</entry>
- <entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>5.1.1</entry>
<entry>Requirements</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.2</entry>
<entry>Header <code>&lt;random&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.3</entry>
<entry>Class template <code>variate_generator</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.4</entry>
<entry>Random number engine class templates</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.4.1</entry>
<entry>Class template <code>linear_congruential</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.4.2</entry>
<entry>Class template <code>mersenne_twister</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.4.3</entry>
<entry>Class template <code>subtract_with_carry</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.4.4</entry>
<entry>Class template <code>subtract_with_carry_01</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.4.5</entry>
<entry>Class template <code>discard_block</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.4.6</entry>
<entry>Class template <code>xor_combine</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry>operator()() per N2079</entry>
</row>
<row>
<entry>5.1.5</entry>
<entry>Engines with predefined parameters</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.6</entry>
<entry>Class <code>random_device</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7</entry>
<entry>Random distribution class templates</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7.1</entry>
<entry>Class template <code>uniform_int</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7.2</entry>
<entry>Class <code>bernoulli_distribution</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7.3</entry>
<entry>Class template <code>geometric_distribution</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7.4</entry>
<entry>Class template <code>poisson_distribution</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7.5</entry>
<entry>Class template <code>binomial_distribution</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7.6</entry>
<entry>Class template <code>uniform_real</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7.7</entry>
<entry>Class template <code>exponential_distribution</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7.8</entry>
<entry>Class template <code>normal_distribution</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.1.7.9</entry>
<entry>Class template <code>gamma_distribution</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2</entry>
<entry>Mathematical special functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1</entry>
<entry>Additions to header <code>&lt;cmath&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.1</entry>
<entry>associated Laguerre polynomials</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.2</entry>
<entry>associated Legendre functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.3</entry>
<entry>beta function</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.4</entry>
<entry>(complete) elliptic integral of the first kind</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.5</entry>
<entry>(complete) elliptic integral of the second kind</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.6</entry>
<entry>(complete) elliptic integral of the third kind</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.7</entry>
<entry>confluent hypergeometric functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.8</entry>
<entry>regular modified cylindrical Bessel functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.9</entry>
<entry>cylindrical Bessel functions (of the first kind)</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.10</entry>
<entry>irregular modified cylindrical Bessel functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.11</entry>
<entry>cylindrical Neumann functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.12</entry>
<entry>(incomplete) elliptic integral of the first kind</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.13</entry>
<entry>(incomplete) elliptic integral of the second kind</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.14</entry>
<entry>(incomplete) elliptic integral of the third kind</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.15</entry>
<entry>exponential integral</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.16</entry>
<entry>Hermite polynomials</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.17</entry>
<entry>hypergeometric functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.18</entry>
<entry>Laguerre polynomials</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.19</entry>
<entry>Legendre polynomials</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.20</entry>
<entry>Riemann zeta function</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.21</entry>
<entry>spherical Bessel functions (of the first kind)</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.22</entry>
<entry>spherical associated Legendre functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.1.23</entry>
<entry>spherical Neumann functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>5.2.2</entry>
<entry>Additions to header <code>&lt;math.h&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry><emphasis>6</emphasis></entry>
- <entry namest="c2" nameend="c6" align="left"><emphasis>Containers</emphasis></entry>
+ <entry namest="c2" nameend="c4" align="left"><emphasis>Containers</emphasis></entry>
</row>
<row>
<entry>6.1</entry>
<entry>Tuple types</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.1.1</entry>
<entry>Header <code>&lt;tuple&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.1.2</entry>
<entry>Additions to header <code>&lt;utility&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.1.3</entry>
<entry>Class template <code>tuple</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.1.3.1</entry>
<entry>Construction</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.1.3.2</entry>
<entry>Tuple creation functions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.1.3.3</entry>
<entry>Tuple helper classes</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.1.3.4</entry>
<entry>Element access</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.1.3.5</entry>
<entry>Relational operators</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.1.4</entry>
<entry>Pairs</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.2</entry>
<entry>Fixed size array</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.2.1</entry>
<entry>Header <code>&lt;array&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.2.2</entry>
<entry>Class template <code>array</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
+
<entry></entry>
</row>
<row>
<entry>6.2.2.1</entry>
<entry><code>array</code> constructors, copy, and assignment</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.2.2.2</entry>
<entry><code>array</code> specialized algorithms</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.2.2.3</entry>
<entry><code>array</code> size</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.2.2.4</entry>
<entry>Zero sized <code>array</code>s</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.2.2.5</entry>
<entry>Tuple interface to class template <code>array</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3</entry>
<entry>Unordered associative containers</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.1</entry>
<entry>Unordered associative container requirements</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.1.1</entry>
<entry>Exception safety guarantees</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.2</entry>
<entry>Additions to header <code>&lt;functional&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.3</entry>
<entry>Class template <code>hash</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4</entry>
<entry>Unordered associative container classes</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.1</entry>
<entry>Header <code>&lt;unordered_set&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.2</entry>
<entry>Header <code>&lt;unordered_map&gt;</code> synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.3</entry>
<entry>Class template <code>unordered_set</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.3.1</entry>
<entry><code>unordered_set</code> constructors</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.3.2</entry>
<entry><code>unordered_set</code> swap</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.4</entry>
<entry>Class template <code>unordered_map</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.4.1</entry>
<entry><code>unordered_map</code> constructors</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.4.2</entry>
<entry><code>unordered_map</code> element access</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.4.3</entry>
<entry><code>unordered_map</code> swap</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.5</entry>
<entry>Class template <code>unordered_multiset<code></code></code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.5.1</entry>
<entry><code>unordered_multiset</code> constructors</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.5.2</entry>
<entry><code>unordered_multiset</code> swap</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.6</entry>
<entry>Class template <code>unordered_multimap</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.6.1</entry>
<entry><code>unordered_multimap</code> constructors</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>6.3.4.6.2</entry>
<entry><code>unordered_multimap</code> swap</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry><emphasis>7</emphasis></entry>
- <entry namest="c2" nameend="c6" align="left"><emphasis>Regular Expressions</emphasis></entry>
+ <entry namest="c2" nameend="c4" align="left"><emphasis>Regular Expressions</emphasis></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.1</entry>
<entry>Definitions</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.2</entry>
<entry>Requirements</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.3</entry>
<entry>Regular expressions summary</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.4</entry>
<entry>Header <code>&lt;regex&gt;</code> synopsis</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.5</entry>
<entry>Namespace <code>tr1::regex_constants</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.5.1</entry>
<entry>Bitmask Type <code>syntax_option_type</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.5.2</entry>
<entry>Bitmask Type <code>regex_constants::match_flag_type</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.5.3</entry>
<entry>Implementation defined <code>error_type</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.6</entry>
<entry>Class <code>regex_error</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.7</entry>
<entry>Class template <code>regex_traits</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.8</entry>
<entry>Class template <code>basic_regex</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.8.1</entry>
<entry><code>basic_regex</code> constants</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.8.2</entry>
<entry><code>basic_regex</code> constructors</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.8.3</entry>
<entry><code>basic_regex</code> assign</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.8.4</entry>
<entry><code>basic_regex</code> constant operations</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.8.5</entry>
<entry><code>basic_regex</code> locale</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.8.6</entry>
<entry><code>basic_regex</code> swap</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.8.7</entry>
<entry><code>basic_regex</code> non-member functions</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.8.7.1</entry>
<entry><code>basic_regex</code> non-member swap</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.9</entry>
<entry>Class template <code>sub_match</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.9.1</entry>
<entry><code>sub_match</code> members</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.9.2</entry>
<entry><code>sub_match</code> non-member operators</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.10</entry>
<entry>Class template <code>match_results</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.10.1</entry>
<entry><code>match_results</code> constructors</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.10.2</entry>
<entry><code>match_results</code> size</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.10.3</entry>
<entry><code>match_results</code> element access</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.10.4</entry>
<entry><code>match_results</code> formatting</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.10.5</entry>
<entry><code>match_results</code> allocator</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.10.6</entry>
<entry><code>match_results</code> swap</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.11</entry>
<entry>Regular expression algorithms</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.11.1</entry>
<entry>exceptions</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.11.2</entry>
<entry><code>regex_match</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.11.3</entry>
<entry><code>regex_search</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.11.4</entry>
<entry><code>regex_replace</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12</entry>
<entry>Regular expression Iterators</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.1</entry>
<entry>Class template <code>regex_iterator</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.1.1</entry>
<entry><code>regex_iterator</code> constructors</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.1.2</entry>
<entry><code>regex_iterator</code> comparisons</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.1.3</entry>
<entry><code>regex_iterator</code> dereference</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.1.4</entry>
<entry><code>regex_iterator</code> increment</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.2</entry>
<entry>Class template <code>regex_token_iterator</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.2.1</entry>
<entry><code>regex_token_iterator</code> constructors</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.2.2</entry>
<entry><code>regex_token_iterator</code> comparisons</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.2.3</entry>
<entry><code>regex_token_iterator</code> dereference</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.12.2.4</entry>
<entry><code>regex_token_iterator</code> increment</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>7.13</entry>
<entry>Modified ECMAScript regular expression grammar</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
<entry><emphasis>8</emphasis></entry>
- <entry namest="c2" nameend="c6" align="left"><emphasis>C Compatibility</emphasis></entry>
+ <entry namest="c2" nameend="c4" align="left"><emphasis>C Compatibility</emphasis></entry>
</row>
<row>
<entry>8.1</entry>
<entry>Additions to header <code>&lt;complex&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.1.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.1.2</entry>
<entry>Function <code>acos</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.1.3</entry>
<entry>Function <code>asin</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.1.4</entry>
<entry>Function <code>atan</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.1.5</entry>
<entry>Function <code>acosh</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.1.6</entry>
<entry>Function <code>asinh</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.1.7</entry>
<entry>Function <code>atanh</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.1.8</entry>
<entry>Function <code>fabs</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.1.9</entry>
<entry>Additional Overloads</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>8.2</entry>
<entry>Header <code>&lt;ccomplex&gt;</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry>DR 551</entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>8.3</entry>
<entry>Header <code>&lt;complex.h&gt;</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry>DR 551</entry>
</row>
<row>
<entry>8.4</entry>
<entry>Additions to header <code>&lt;cctype&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.4.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.4.2</entry>
<entry>Function <code>isblank</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.5</entry>
<entry>Additions to header <code>&lt;ctype.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.6</entry>
<entry>Header <code>&lt;cfenv&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.6.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.6.2</entry>
<entry>Definitions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.7</entry>
<entry>Header <code>&lt;fenv.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.8</entry>
<entry>Additions to header <code>&lt;cfloat&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.9</entry>
<entry>Additions to header <code>&lt;float.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>8.10</entry>
<entry>Additions to header <code>&lt;ios&gt;</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>8.10.1</entry>
<entry>Synopsis</entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>8.10.2</entry>
<entry>Function <code>hexfloat</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
<entry>8.11</entry>
<entry>Header <code>&lt;cinttypes&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.11.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry>DR 557</entry>
</row>
<row>
<entry>8.11.2</entry>
<entry>Definitions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.12</entry>
<entry>Header <code>&lt;inttypes.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.13</entry>
<entry>Additions to header <code>&lt;climits&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.14</entry>
<entry>Additions to header <code>&lt;limits.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
+ <?dbhtml bgcolor="#C8B0B0" ?>
<entry>8.15</entry>
<entry>Additions to header <code>&lt;locale&gt;</code></entry>
- <entry></entry>
- <entry></entry>
- <entry>missing</entry>
+ <entry>N</entry>
<entry></entry>
</row>
<row>
<entry>8.16</entry>
<entry>Additions to header <code>&lt;cmath&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.16.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.16.2</entry>
<entry>Definitions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.16.3</entry>
<entry>Function template definitions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.16.4</entry>
<entry>Additional overloads</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry>DR 568; DR 550</entry>
</row>
<row>
<entry>8.17</entry>
<entry>Additions to header <code>&lt;math.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.18</entry>
<entry>Additions to header <code>&lt;cstdarg&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.19</entry>
<entry>Additions to header <code>&lt;stdarg.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.20</entry>
<entry>The header <code>&lt;cstdbool&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.21</entry>
<entry>The header <code>&lt;stdbool.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.22</entry>
<entry>The header <code>&lt;cstdint&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.22.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.22.2</entry>
<entry>Definitions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.23</entry>
<entry>The header <code>&lt;stdint.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.24</entry>
<entry>Additions to header <code>&lt;cstdio&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.24.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.24.2</entry>
<entry>Definitions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.24.3</entry>
<entry>Additional format specifiers</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
- <entry>C library responsibility</entry>
+ <entry>Y</entry>
+ <entry>C library dependency</entry>
</row>
<row>
<entry>8.24.4</entry>
<entry>Additions to header <code>&lt;stdio.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.25</entry>
<entry>Additions to header <code>&lt;cstdlib&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.25.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.25.2</entry>
<entry>Definitions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.25.3</entry>
<entry>Function <code>abs</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.25.4</entry>
<entry>Function <code>div</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.26</entry>
<entry>Additions to header <code>&lt;stdlib.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.27</entry>
<entry>Header <code>&lt;ctgmath&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry>DR 551</entry>
</row>
<row>
<entry>8.28</entry>
<entry>Header <code>&lt;tgmath.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry>DR 551</entry>
</row>
<row>
<entry>8.29</entry>
<entry>Additions to header <code>&lt;ctime&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
- <entry>C library responsibility</entry>
+ <entry>Y</entry>
+ <entry>C library dependency</entry>
</row>
<row>
<entry>8.30</entry>
<entry>Additions to header <code>&lt;cwchar&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.30.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.30.2</entry>
<entry>Definitions</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.30.3</entry>
<entry>Additional wide format specifiers</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
- <entry>C library responsibility</entry>
+ <entry>Y</entry>
+ <entry>C library dependency</entry>
</row>
<row>
<entry>8.31</entry>
<entry>Additions to header <code>&lt;wchar.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.32</entry>
<entry>Additions to header <code>&lt;cwctype&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.32.1</entry>
<entry>Synopsis</entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.32.2</entry>
<entry>Function <code>iswblank</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
<row>
<entry>8.33</entry>
<entry>Additions to header <code>&lt;wctype.h&gt;</code></entry>
- <entry>done</entry>
- <entry></entry>
- <entry></entry>
+ <entry>Y</entry>
<entry></entry>
</row>
</tbody>
</tgroup>
</table>
-<para>
-Footnotes
-</para>
-
-<para>
- The shared_ptr implementation uses some code from the
- <ulink url="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">Boost
- shared_ptr</ulink> library.
-</para>
-
-</sect2> \ No newline at end of file
+</sect2>
diff --git a/libstdc++-v3/doc/xml/manual/support.xml b/libstdc++-v3/doc/xml/manual/support.xml
index 5e81fbcc361..6e0f75af910 100644
--- a/libstdc++-v3/doc/xml/manual/support.xml
+++ b/libstdc++-v3/doc/xml/manual/support.xml
@@ -38,6 +38,7 @@
</preface>
<chapter id="manual.support.types" xreflabel="Types">
+ <?dbhtml filename="fundamental_types.html"?>
<title>Types</title>
<sect1 id="manual.support.types.fundamental" xreflabel="Fundamental Types">
<title>Fundamental Types</title>
@@ -199,6 +200,7 @@
</chapter>
<chapter id="manual.support.memory" xreflabel="Dynamic Memory">
+ <?dbhtml filename="dynamic_memory.html"?>
<title>Dynamic Memory</title>
<para>
There are six flavors each of <function>new</function> and
@@ -280,6 +282,7 @@
</chapter>
<chapter id="manual.support.termination" xreflabel="Termination">
+ <?dbhtml filename="termination.html"?>
<title>Termination</title>
<sect1 id="support.termination.handlers" xreflabel="Termination Handlers">
<title>Termination Handlers</title>
@@ -345,6 +348,7 @@
</sect1>
<sect1 id="support.termination.verbose" xreflabel="Verbose Terminate Handler">
+ <?dbhtml filename="verbose_termination.html"?>
<title>Verbose Terminate Handler</title>
<para>
If you are having difficulty with uncaught exceptions and want a
diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml
index d1a8914e56f..7b75b8be14a 100644
--- a/libstdc++-v3/doc/xml/manual/using.xml
+++ b/libstdc++-v3/doc/xml/manual/using.xml
@@ -4,7 +4,7 @@
[ ]>
<chapter id="manual.intro.using" xreflabel="Using">
-<?dbhtml filename="using.html"?>
+ <?dbhtml filename="using.html"?>
<title>Using</title>
@@ -78,6 +78,7 @@
</sect1>
<sect1 id="manual.intro.using.headers" xreflabel="Headers">
+ <?dbhtml filename="using_headers.html"?>
<title>Headers</title>
<sect2 id="manual.intro.using.headers.all" xreflabel="Header Files">
@@ -706,6 +707,7 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
</sect1>
<sect1 id="manual.intro.using.namespaces" xreflabel="Namespaces">
+ <?dbhtml filename="using_namespaces.html"?>
<title>Namespaces</title>
<sect2 id="manual.intro.using.namespaces.all" xreflabel="Available Namespaces">
@@ -817,6 +819,7 @@ namespace gtk
</sect1>
<sect1 id="manual.intro.using.macros" xreflabel="Macros">
+ <?dbhtml filename="using_macros.html"?>
<title>Macros</title>
<para>All pre-processor switches and configurations are all gathered
@@ -943,6 +946,7 @@ namespace gtk
</sect1>
<sect1 id="manual.intro.using.concurrency" xreflabel="Concurrency">
+ <?dbhtml filename="using_concurrency.html"?>
<title>Concurrency</title>
<para>This section discusses issues surrounding the proper compilation
@@ -1261,6 +1265,7 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
</sect1>
<sect1 id="manual.intro.using.exception" xreflabel="Exceptions">
+ <?dbhtml filename="using_exceptions.html"?>
<title>Exceptions</title>
<sect2 id="intro.using.exception.propagating" xreflabel="Propagating Exceptions">
diff --git a/libstdc++-v3/doc/xml/manual/utilities.xml b/libstdc++-v3/doc/xml/manual/utilities.xml
index a2de43d23d1..56d614ec682 100644
--- a/libstdc++-v3/doc/xml/manual/utilities.xml
+++ b/libstdc++-v3/doc/xml/manual/utilities.xml
@@ -24,6 +24,7 @@
<!-- Chapter 01 : Functors -->
<chapter id="manual.util.functors" xreflabel="Functors">
+<?dbhtml filename="functors.html"?>
<title>Functors</title>
<para>If you don't know what functors are, you're not alone. Many people
get slightly the wrong idea. In the interest of not reinventing
@@ -36,6 +37,7 @@
<!-- Chapter 02 : Pairs -->
<chapter id="manual.util.pairs" xreflabel="Pairs">
+<?dbhtml filename="pairs.html"?>
<title>Pairs</title>
<para>The <code>pair&lt;T1,T2&gt;</code> is a simple and handy way to
carry around a pair of objects. One is of type T1, and another of
@@ -91,7 +93,7 @@
<!-- Chapter 03 : Memory -->
<chapter id="manual.util.memory" xreflabel="Memory">
-
+<?dbhtml filename="memory.html"?>
<title>Memory</title>
<para>
Memory contains three general areas. First, function and operator
@@ -120,6 +122,7 @@
<!-- Chapter 04 : Traits -->
<chapter id="manual.util.traits" xreflabel="Traits">
+<?dbhtml filename="traits.html"?>
<title>Traits</title>
<para>
</para>
diff --git a/libstdc++-v3/include/backward/strstream b/libstdc++-v3/include/backward/strstream
index a643e8b8107..0ffbb81ea97 100644
--- a/libstdc++-v3/include/backward/strstream
+++ b/libstdc++-v3/include/backward/strstream
@@ -66,20 +66,20 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
explicit strstreambuf(streamsize __initial_capacity = 0);
strstreambuf(void* (*__alloc)(size_t), void (*__free)(void*));
- strstreambuf(char* __get, streamsize __n, char* __put = 0);
- strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0);
- strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0);
+ strstreambuf(char* __get, streamsize __n, char* __put = 0) throw ();
+ strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0) throw ();
+ strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0) throw ();
- strstreambuf(const char* __get, streamsize __n);
- strstreambuf(const signed char* __get, streamsize __n);
- strstreambuf(const unsigned char* __get, streamsize __n);
+ strstreambuf(const char* __get, streamsize __n) throw ();
+ strstreambuf(const signed char* __get, streamsize __n) throw ();
+ strstreambuf(const unsigned char* __get, streamsize __n) throw ();
virtual ~strstreambuf();
public:
- void freeze(bool = true);
- char* str();
- int pcount() const;
+ void freeze(bool = true) throw ();
+ char* str() throw ();
+ _GLIBCXX_PURE int pcount() const throw ();
protected:
virtual int_type overflow(int_type __c = _Traits::eof());
@@ -103,7 +103,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
void _M_free(char*);
// Helper function used in constructors.
- void _M_setup(char* __get, char* __put, streamsize __n);
+ void _M_setup(char* __get, char* __put, streamsize __n) throw ();
private:
// Data members.
@@ -125,8 +125,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
istrstream(const char*, streamsize);
virtual ~istrstream();
- strstreambuf* rdbuf() const;
- char* str();
+ _GLIBCXX_CONST strstreambuf* rdbuf() const throw ();
+ char* str() throw ();
private:
strstreambuf _M_buf;
@@ -140,10 +140,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
ostrstream(char*, int, ios_base::openmode = ios_base::out);
virtual ~ostrstream();
- strstreambuf* rdbuf() const;
- void freeze(bool = true);
- char* str();
- int pcount() const;
+ _GLIBCXX_CONST strstreambuf* rdbuf() const throw ();
+ void freeze(bool = true) throw();
+ char* str() throw ();
+ _GLIBCXX_PURE int pcount() const throw ();
private:
strstreambuf _M_buf;
@@ -162,10 +162,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
strstream(char*, int, ios_base::openmode = ios_base::in | ios_base::out);
virtual ~strstream();
- strstreambuf* rdbuf() const;
- void freeze(bool = true);
- int pcount() const;
- char* str();
+ _GLIBCXX_CONST strstreambuf* rdbuf() const throw ();
+ void freeze(bool = true) throw ();
+ _GLIBCXX_PURE int pcount() const throw ();
+ char* str() throw ();
private:
strstreambuf _M_buf;
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index dfbe48c8f1f..d5babc31959 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -314,4 +314,24 @@ _GLIBCXX_END_NAMESPACE
#undef min
#undef max
+#ifndef _GLIBCXX_PURE
+# define _GLIBCXX_PURE __attribute__ ((__pure__))
+#endif
+
+#ifndef _GLIBCXX_CONST
+# define _GLIBCXX_CONST __attribute__ ((__const__))
+#endif
+
+#ifndef _GLIBCXX_NORETURN
+# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
+#endif
+
+#ifndef _GLIBCXX_NOTHROW
+# ifdef __cplusplus
+# define _GLIBCXX_NOTHROW throw()
+# else
+# define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
+# endif
+#endif
+
// End of prewritten config; the discovered settings follow.
diff --git a/libstdc++-v3/include/bits/forward_list.h b/libstdc++-v3/include/bits/forward_list.h
index d6f42bdf722..d49eb4a0678 100644
--- a/libstdc++-v3/include/bits/forward_list.h
+++ b/libstdc++-v3/include/bits/forward_list.h
@@ -81,7 +81,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* This is just a linked list with a data value in each node.
* There is a sorting utility method.
*/
- template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+ template<typename _Tp, typename _Alloc>
struct _Fwd_list_node : public _Fwd_list_node_base<_Alloc>
{
typedef typename _Alloc::template rebind<_Fwd_list_node<_Tp, _Alloc> >
@@ -104,7 +104,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
*
* All the functions are op overloads.
*/
- template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+ template<typename _Tp, typename _Alloc>
struct _Fwd_list_iterator
{
typedef _Fwd_list_iterator<_Tp, _Alloc> _Self;
@@ -171,7 +171,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
*
* All the functions are op overloads.
*/
- template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+ template<typename _Tp, typename _Alloc>
struct _Fwd_list_const_iterator
{
typedef _Fwd_list_const_iterator<_Tp, _Alloc> _Self;
@@ -240,7 +240,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/**
* @brief Forward list iterator equality comparison.
*/
- template<typename _Tp,class _Alloc>
+ template<typename _Tp, typename _Alloc>
inline bool
operator==(const _Fwd_list_iterator<_Tp, _Alloc>& __x,
const _Fwd_list_const_iterator<_Tp, _Alloc>& __y)
@@ -249,7 +249,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/**
* @brief Forward list iterator inequality comparison.
*/
- template<typename _Tp,class _Alloc>
+ template<typename _Tp, typename _Alloc>
inline bool
operator!=(const _Fwd_list_iterator<_Tp, _Alloc>& __x,
const _Fwd_list_const_iterator<_Tp, _Alloc>& __y)
@@ -258,7 +258,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/**
* @brief Base class for %forward_list.
*/
- template<typename _Tp, typename _Alloc = allocator<_Tp> >
+ template<typename _Tp, typename _Alloc>
struct _Fwd_list_base
{
protected:
diff --git a/libstdc++-v3/include/bits/functional_hash.h b/libstdc++-v3/include/bits/functional_hash.h
index 892fcfa6928..c21abfe08b2 100644
--- a/libstdc++-v3/include/bits/functional_hash.h
+++ b/libstdc++-v3/include/bits/functional_hash.h
@@ -60,8 +60,8 @@ namespace std
struct error_code;
template<>
- size_t
- hash<error_code>::operator()(error_code) const;
+ _GLIBCXX_PURE size_t
+ hash<error_code>::operator()(error_code) const throw ();
}
#endif // _FUNCTIONAL_HASH_H
diff --git a/libstdc++-v3/include/bits/ios_base.h b/libstdc++-v3/include/bits/ios_base.h
index 8dde1003503..2badd4c4c1c 100644
--- a/libstdc++-v3/include/bits/ios_base.h
+++ b/libstdc++-v3/include/bits/ios_base.h
@@ -497,7 +497,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_M_call_callbacks(event __ev) throw();
void
- _M_dispose_callbacks(void);
+ _M_dispose_callbacks(void) throw();
// 27.4.2.5 Members for iword/pword storage
struct _Words
@@ -526,7 +526,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
locale _M_ios_locale;
void
- _M_init();
+ _M_init() throw ();
public:
@@ -685,7 +685,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* with imbue_event.
*/
locale
- imbue(const locale& __loc);
+ imbue(const locale& __loc) throw ();
/**
* @brief Locale access
@@ -782,7 +782,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
virtual ~ios_base();
protected:
- ios_base();
+ ios_base() throw ();
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 50. Copy constructor and assignment operator of ios_base
diff --git a/libstdc++-v3/include/bits/locale_classes.h b/libstdc++-v3/include/bits/locale_classes.h
index 4a646937cb9..1a7f2c20912 100644
--- a/libstdc++-v3/include/bits/locale_classes.h
+++ b/libstdc++-v3/include/bits/locale_classes.h
@@ -312,7 +312,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_S_initialize();
static void
- _S_initialize_once();
+ _S_initialize_once() throw ();
static category
_S_normalize_category(category);
@@ -376,7 +376,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__c_locale __old = 0);
static __c_locale
- _S_clone_c_locale(__c_locale& __cloc);
+ _S_clone_c_locale(__c_locale& __cloc) throw ();
static void
_S_destroy_c_locale(__c_locale& __cloc);
@@ -386,8 +386,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
static __c_locale
_S_get_c_locale();
- static const char*
- _S_get_c_name();
+ _GLIBCXX_CONST static const char*
+ _S_get_c_name() throw ();
private:
void
@@ -457,7 +457,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
id() { }
size_t
- _M_id() const;
+ _M_id() const throw ();
};
@@ -697,10 +697,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Used to abstract out _CharT bits in virtual member functions, below.
int
- _M_compare(const _CharT*, const _CharT*) const;
+ _M_compare(const _CharT*, const _CharT*) const throw ();
size_t
- _M_transform(_CharT*, const _CharT*, size_t) const;
+ _M_transform(_CharT*, const _CharT*, size_t) const throw ();
protected:
/// Destructor.
@@ -759,20 +759,20 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Specializations.
template<>
int
- collate<char>::_M_compare(const char*, const char*) const;
+ collate<char>::_M_compare(const char*, const char*) const throw ();
template<>
size_t
- collate<char>::_M_transform(char*, const char*, size_t) const;
+ collate<char>::_M_transform(char*, const char*, size_t) const throw ();
#ifdef _GLIBCXX_USE_WCHAR_T
template<>
int
- collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const;
+ collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw ();
template<>
size_t
- collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const;
+ collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw ();
#endif
/// class collate_byname [22.2.4.2].
diff --git a/libstdc++-v3/include/bits/locale_classes.tcc b/libstdc++-v3/include/bits/locale_classes.tcc
index c97e555a4a5..5dcf20576a0 100644
--- a/libstdc++-v3/include/bits/locale_classes.tcc
+++ b/libstdc++-v3/include/bits/locale_classes.tcc
@@ -119,13 +119,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Generic version does nothing.
template<typename _CharT>
int
- collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const
+ collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw ()
{ return 0; }
// Generic version does nothing.
template<typename _CharT>
size_t
- collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const
+ collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw ()
{ return 0; }
template<typename _CharT>
diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h
index beed6f1c249..5dec0f49cbe 100644
--- a/libstdc++-v3/include/bits/locale_facets.h
+++ b/libstdc++-v3/include/bits/locale_facets.h
@@ -70,17 +70,17 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template<>
void
__convert_to_v(const char*, float&, ios_base::iostate&,
- const __c_locale&);
+ const __c_locale&) throw ();
template<>
void
__convert_to_v(const char*, double&, ios_base::iostate&,
- const __c_locale&);
+ const __c_locale&) throw ();
template<>
void
__convert_to_v(const char*, long double&, ios_base::iostate&,
- const __c_locale&);
+ const __c_locale&) throw ();
// NB: __pad is a struct, rather than a function, so it can be
// partially-specialized.
@@ -1220,7 +1220,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
protected:
__wmask_type
- _M_convert_to_wmask(const mask __m) const;
+ _M_convert_to_wmask(const mask __m) const throw ();
/// Destructor
virtual
@@ -1458,7 +1458,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// For use at construction time only.
void
- _M_initialize_ctype();
+ _M_initialize_ctype() throw ();
};
#endif //_GLIBCXX_USE_WCHAR_T
@@ -1558,7 +1558,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// num_put
// Construct and return valid scanf format for floating point types.
static void
- _S_format_float(const ios_base& __io, char* __fptr, char __mod);
+ _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw ();
};
template<typename _CharT>
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc
index 47eac6a44c7..85b4ec646bb 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -118,9 +118,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// 1,222,444 == __grouping_tmp of "\1\3\3"
// __grouping is parsed R to L
// 1,222,444 == __grouping of "\3" == "\3\3\3"
- bool
+ _GLIBCXX_PURE bool
__verify_grouping(const char* __grouping, size_t __grouping_size,
- const string& __grouping_tmp);
+ const string& __grouping_tmp) throw ();
_GLIBCXX_BEGIN_LDBL_NAMESPACE
@@ -379,8 +379,7 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
if (!__testeof)
{
__c = *__beg;
- if (__gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
- __negative = __c == __lit[__num_base::_S_iminus];
+ __negative = __c == __lit[__num_base::_S_iminus];
if ((__negative || __c == __lit[__num_base::_S_iplus])
&& !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
&& !(__c == __lc->_M_decimal_point))
@@ -449,7 +448,8 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
__found_grouping.reserve(32);
bool __testfail = false;
bool __testoverflow = false;
- const __unsigned_type __max = __negative
+ const __unsigned_type __max =
+ (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
? -__gnu_cxx::__numeric_traits<_ValueT>::__min
: __gnu_cxx::__numeric_traits<_ValueT>::__max;
const __unsigned_type __smax = __max / __base;
@@ -552,7 +552,8 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
}
else if (__testoverflow)
{
- if (__negative)
+ if (__negative
+ && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
__v = __gnu_cxx::__numeric_traits<_ValueT>::__min;
else
__v = __gnu_cxx::__numeric_traits<_ValueT>::__max;
diff --git a/libstdc++-v3/include/bits/locale_facets_nonio.h b/libstdc++-v3/include/bits/locale_facets_nonio.h
index aba96d6c10f..e1518287a68 100644
--- a/libstdc++-v3/include/bits/locale_facets_nonio.h
+++ b/libstdc++-v3/include/bits/locale_facets_nonio.h
@@ -211,7 +211,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// value of strftime/wcsftime.
void
_M_put(_CharT* __s, size_t __maxlen, const _CharT* __format,
- const tm* __tm) const;
+ const tm* __tm) const throw ();
void
_M_date_formats(const _CharT** __date) const
@@ -325,7 +325,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template<>
void
- __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const;
+ __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const throw ();
#ifdef _GLIBCXX_USE_WCHAR_T
template<>
@@ -335,7 +335,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template<>
void
__timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*,
- const tm*) const;
+ const tm*) const throw ();
#endif
_GLIBCXX_END_NAMESPACE
@@ -844,8 +844,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Construct and return valid pattern consisting of some combination of:
// space none symbol sign value
- static pattern
- _S_construct_pattern(char __precedes, char __space, char __posn);
+ _GLIBCXX_CONST static pattern
+ _S_construct_pattern(char __precedes, char __space, char __posn) throw ();
};
template<typename _CharT, bool _Intl>
diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h
index 66a50b81e5d..bba1f53044e 100644
--- a/libstdc++-v3/include/bits/stl_list.h
+++ b/libstdc++-v3/include/bits/stl_list.h
@@ -74,20 +74,20 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
_List_node_base* _M_prev;
static void
- swap(_List_node_base& __x, _List_node_base& __y);
+ swap(_List_node_base& __x, _List_node_base& __y) throw ();
void
transfer(_List_node_base * const __first,
- _List_node_base * const __last);
+ _List_node_base * const __last) throw ();
void
- reverse();
+ reverse() throw ();
void
- hook(_List_node_base * const __position);
+ hook(_List_node_base * const __position) throw ();
void
- unhook();
+ unhook() throw ();
};
/// An actual node in the %list.
diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h
index 2e567360039..ecf3b5c3fe4 100644
--- a/libstdc++-v3/include/bits/stl_tree.h
+++ b/libstdc++-v3/include/bits/stl_tree.h
@@ -137,17 +137,17 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
#endif
};
- _Rb_tree_node_base*
- _Rb_tree_increment(_Rb_tree_node_base* __x);
+ _GLIBCXX_PURE _Rb_tree_node_base*
+ _Rb_tree_increment(_Rb_tree_node_base* __x) throw ();
- const _Rb_tree_node_base*
- _Rb_tree_increment(const _Rb_tree_node_base* __x);
+ _GLIBCXX_PURE const _Rb_tree_node_base*
+ _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ();
- _Rb_tree_node_base*
- _Rb_tree_decrement(_Rb_tree_node_base* __x);
+ _GLIBCXX_PURE _Rb_tree_node_base*
+ _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ();
- const _Rb_tree_node_base*
- _Rb_tree_decrement(const _Rb_tree_node_base* __x);
+ _GLIBCXX_PURE const _Rb_tree_node_base*
+ _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ();
template<typename _Tp>
struct _Rb_tree_iterator
@@ -310,11 +310,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Rb_tree_insert_and_rebalance(const bool __insert_left,
_Rb_tree_node_base* __x,
_Rb_tree_node_base* __p,
- _Rb_tree_node_base& __header);
+ _Rb_tree_node_base& __header) throw ();
_Rb_tree_node_base*
_Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
- _Rb_tree_node_base& __header);
+ _Rb_tree_node_base& __header) throw ();
template<typename _Key, typename _Val, typename _KeyOfValue,
@@ -1448,9 +1448,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
return __n;
}
- unsigned int
+ _GLIBCXX_PURE unsigned int
_Rb_tree_black_count(const _Rb_tree_node_base* __node,
- const _Rb_tree_node_base* __root);
+ const _Rb_tree_node_base* __root) throw ();
template<typename _Key, typename _Val, typename _KeyOfValue,
typename _Compare, typename _Alloc>
diff --git a/libstdc++-v3/include/c_compatibility/stdatomic.h b/libstdc++-v3/include/c_compatibility/stdatomic.h
index 71ddb8507a4..f4771166d2b 100644
--- a/libstdc++-v3/include/c_compatibility/stdatomic.h
+++ b/libstdc++-v3/include/c_compatibility/stdatomic.h
@@ -121,24 +121,24 @@ _GLIBCXX_BEGIN_EXTERN_C
// Accessor functions for base atomic_flag type.
bool
- atomic_flag_test_and_set_explicit(volatile __atomic_flag_base*, memory_order);
+ atomic_flag_test_and_set_explicit(volatile __atomic_flag_base*, memory_order) _GLIBCXX_NOTHROW;
inline bool
atomic_flag_test_and_set(volatile __atomic_flag_base* __a)
{ return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); }
void
- atomic_flag_clear_explicit(volatile __atomic_flag_base*, memory_order);
+ atomic_flag_clear_explicit(volatile __atomic_flag_base*, memory_order) _GLIBCXX_NOTHROW;
inline void
atomic_flag_clear(volatile __atomic_flag_base* __a)
{ atomic_flag_clear_explicit(__a, memory_order_seq_cst); }
void
- __atomic_flag_wait_explicit(volatile __atomic_flag_base*, memory_order);
+ __atomic_flag_wait_explicit(volatile __atomic_flag_base*, memory_order) _GLIBCXX_NOTHROW;
- volatile __atomic_flag_base*
- __atomic_flag_for_address(const volatile void* __z) __attribute__((const));
+ _GLIBCXX_CONST volatile __atomic_flag_base*
+ __atomic_flag_for_address(const volatile void* __z) _GLIBCXX_NOTHROW;
// Implementation specific defines.
#define _ATOMIC_LOAD_(__a, __x) \
diff --git a/libstdc++-v3/include/debug/formatter.h b/libstdc++-v3/include/debug/formatter.h
index 0538edb1544..6dffc6b786d 100644
--- a/libstdc++-v3/include/debug/formatter.h
+++ b/libstdc++-v3/include/debug/formatter.h
@@ -29,6 +29,7 @@
#ifndef _GLIBCXX_DEBUG_FORMATTER_H
#define _GLIBCXX_DEBUG_FORMATTER_H 1
+#include <bits/c++config.h>
#include <typeinfo>
#include <debug/debug.h>
@@ -345,9 +346,9 @@ namespace __gnu_debug
{ _M_text = __text; return *this; }
const _Error_formatter&
- _M_message(_Debug_msg_id __id) const;
+ _M_message(_Debug_msg_id __id) const throw ();
- void
+ _GLIBCXX_NORETURN void
_M_error() const;
private:
@@ -358,7 +359,7 @@ namespace __gnu_debug
template<typename _Tp>
void
- _M_format_word(char*, int, const char*, _Tp) const;
+ _M_format_word(char*, int, const char*, _Tp) const throw ();
void
_M_print_word(const char* __word) const;
@@ -367,7 +368,7 @@ namespace __gnu_debug
_M_print_string(const char* __string) const;
void
- _M_get_max_length() const;
+ _M_get_max_length() const throw ();
enum { __max_parameters = 9 };
diff --git a/libstdc++-v3/include/debug/safe_base.h b/libstdc++-v3/include/debug/safe_base.h
index 1bef5e7ef15..9d44539b732 100644
--- a/libstdc++-v3/include/debug/safe_base.h
+++ b/libstdc++-v3/include/debug/safe_base.h
@@ -105,7 +105,7 @@ namespace __gnu_debug
~_Safe_iterator_base() { this->_M_detach(); }
/** For use in _Safe_iterator. */
- __gnu_cxx::__mutex& _M_get_mutex();
+ __gnu_cxx::__mutex& _M_get_mutex() throw ();
public:
/** Attaches this iterator to the given sequence, detaching it
@@ -116,7 +116,7 @@ namespace __gnu_debug
void _M_attach(_Safe_sequence_base* __seq, bool __constant);
/** Likewise, but not thread-safe. */
- void _M_attach_single(_Safe_sequence_base* __seq, bool __constant);
+ void _M_attach_single(_Safe_sequence_base* __seq, bool __constant) throw ();
/** Detach the iterator for whatever sequence it is attached to,
* if any.
@@ -124,19 +124,19 @@ namespace __gnu_debug
void _M_detach();
/** Likewise, but not thread-safe. */
- void _M_detach_single();
+ void _M_detach_single() throw ();
/** Determines if we are attached to the given sequence. */
bool _M_attached_to(const _Safe_sequence_base* __seq) const
{ return _M_sequence == __seq; }
/** Is this iterator singular? */
- bool _M_singular() const;
+ _GLIBCXX_PURE bool _M_singular() const throw ();
/** Can we compare this iterator to the given iterator @p __x?
Returns true if both iterators are nonsingular and reference
the same sequence. */
- bool _M_can_compare(const _Safe_iterator_base& __x) const;
+ _GLIBCXX_PURE bool _M_can_compare(const _Safe_iterator_base& __x) const throw ();
};
/**
@@ -207,7 +207,7 @@ namespace __gnu_debug
_M_swap(_Safe_sequence_base& __x);
/** For use in _Safe_sequence. */
- __gnu_cxx::__mutex& _M_get_mutex();
+ __gnu_cxx::__mutex& _M_get_mutex() throw ();
public:
/** Invalidates all iterators. */
diff --git a/libstdc++-v3/include/ext/mt_allocator.h b/libstdc++-v3/include/ext/mt_allocator.h
index f03f3a61030..fc31fe8a737 100644
--- a/libstdc++-v3/include/ext/mt_allocator.h
+++ b/libstdc++-v3/include/ext/mt_allocator.h
@@ -221,7 +221,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
_M_reserve_block(size_t __bytes, const size_t __thread_id);
void
- _M_reclaim_block(char* __p, size_t __bytes);
+ _M_reclaim_block(char* __p, size_t __bytes) throw ();
size_t
_M_get_thread_id() { return 0; }
@@ -332,7 +332,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
_M_reserve_block(size_t __bytes, const size_t __thread_id);
void
- _M_reclaim_block(char* __p, size_t __bytes);
+ _M_reclaim_block(char* __p, size_t __bytes) throw ();
const _Bin_record&
_M_get_bin(size_t __which)
@@ -351,8 +351,8 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
}
// XXX GLIBCXX_ABI Deprecated
- void
- _M_destroy_thread_key(void*);
+ _GLIBCXX_CONST void
+ _M_destroy_thread_key(void*) throw ();
size_t
_M_get_thread_id();
diff --git a/libstdc++-v3/include/ext/pool_allocator.h b/libstdc++-v3/include/ext/pool_allocator.h
index 87d145d71ef..d7077b1986b 100644
--- a/libstdc++-v3/include/ext/pool_allocator.h
+++ b/libstdc++-v3/include/ext/pool_allocator.h
@@ -96,11 +96,11 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
_M_round_up(size_t __bytes)
{ return ((__bytes + (size_t)_S_align - 1) & ~((size_t)_S_align - 1)); }
- _Obj* volatile*
- _M_get_free_list(size_t __bytes);
+ _GLIBCXX_CONST _Obj* volatile*
+ _M_get_free_list(size_t __bytes) throw ();
__mutex&
- _M_get_mutex();
+ _M_get_mutex() throw ();
// Returns an object of size __n, and optionally adds to size __n
// free list.
diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index aaa9646f2fc..d18f2777f51 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -614,7 +614,7 @@ namespace std
static const bool is_monotonic = false;
static time_point
- now();
+ now() throw ();
// Map to C API
static std::time_t
diff --git a/libstdc++-v3/include/std/condition_variable b/libstdc++-v3/include/std/condition_variable
index 64f2bb77118..f87eb1b8d1a 100644
--- a/libstdc++-v3/include/std/condition_variable
+++ b/libstdc++-v3/include/std/condition_variable
@@ -60,8 +60,8 @@ namespace std
public:
typedef __native_type* native_handle_type;
- condition_variable();
- ~condition_variable();
+ condition_variable() throw ();
+ ~condition_variable() throw ();
condition_variable(const condition_variable&) = delete;
condition_variable& operator=(const condition_variable&) = delete;
@@ -168,8 +168,8 @@ namespace std
public:
typedef __native_type* native_handle_type;
- condition_variable_any();
- ~condition_variable_any();
+ condition_variable_any() throw ();
+ ~condition_variable_any() throw ();
condition_variable_any(const condition_variable_any&) = delete;
condition_variable_any& operator=(const condition_variable_any&) = delete;
diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex
index eb71c764f6e..f26acc02f4f 100644
--- a/libstdc++-v3/include/std/mutex
+++ b/libstdc++-v3/include/std/mutex
@@ -395,7 +395,7 @@ namespace std
{
public:
virtual const char*
- what() const throw();
+ _GLIBCXX_CONST what() const throw();
};
/// @brief Scoped lock idiom.
diff --git a/libstdc++-v3/include/std/system_error b/libstdc++-v3/include/std/system_error
index 3a6883ddc46..3d0cff21d69 100644
--- a/libstdc++-v3/include/std/system_error
+++ b/libstdc++-v3/include/std/system_error
@@ -105,8 +105,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
};
// DR 890.
- const error_category& system_category();
- const error_category& generic_category();
+ _GLIBCXX_CONST const error_category& system_category() throw ();
+ _GLIBCXX_CONST const error_category& generic_category() throw ();
/// error_code
// Implementation-specific error identification
diff --git a/libstdc++-v3/libsupc++/cxxabi.h b/libstdc++-v3/libsupc++/cxxabi.h
index bfdd8e5896d..834e434e1e1 100644
--- a/libstdc++-v3/libsupc++/cxxabi.h
+++ b/libstdc++-v3/libsupc++/cxxabi.h
@@ -100,7 +100,7 @@ namespace __cxxabiv1
void
__cxa_vec_cleanup(void* __array_address, size_t __element_count,
- size_t __element_size, __cxa_cdtor_type destructor);
+ size_t __element_size, __cxa_cdtor_type destructor) _GLIBCXX_NOTHROW;
// Destruct and release array.
void
@@ -121,14 +121,14 @@ namespace __cxxabiv1
__cxa_guard_acquire(__guard*);
void
- __cxa_guard_release(__guard*);
+ __cxa_guard_release(__guard*) _GLIBCXX_NOTHROW;
void
- __cxa_guard_abort(__guard*);
+ __cxa_guard_abort(__guard*) _GLIBCXX_NOTHROW;
// Pure virtual functions.
void
- __cxa_pure_virtual(void);
+ __cxa_pure_virtual(void) __attribute__ ((__noreturn__));
// Exception handling.
void
@@ -567,13 +567,13 @@ namespace __cxxabiv1
// Returns the type_info for the currently handled exception [15.3/8], or
// null if there is none.
extern "C" std::type_info*
- __cxa_current_exception_type();
+ __cxa_current_exception_type() _GLIBCXX_NOTHROW __attribute__ ((__pure__));
// A magic placeholder class that can be caught by reference
// to recognize foreign exceptions.
class __foreign_exception
{
- virtual ~__foreign_exception() throw();
+ virtual ~__foreign_exception() _GLIBCXX_NOTHROW;
virtual void __pure_dummy() = 0; // prevent catch by value
};
diff --git a/libstdc++-v3/libsupc++/eh_ptr.cc b/libstdc++-v3/libsupc++/eh_ptr.cc
index 769273f3a61..bbe5f8f13f9 100644
--- a/libstdc++-v3/libsupc++/eh_ptr.cc
+++ b/libstdc++-v3/libsupc++/eh_ptr.cc
@@ -113,7 +113,7 @@ std::__exception_ptr::exception_ptr::_M_get() const throw()
void
-std::__exception_ptr::exception_ptr::_M_safe_bool_dummy()
+std::__exception_ptr::exception_ptr::_M_safe_bool_dummy() throw ()
{
}
diff --git a/libstdc++-v3/libsupc++/eh_terminate.cc b/libstdc++-v3/libsupc++/eh_terminate.cc
index d0c8461006f..e03c037412a 100644
--- a/libstdc++-v3/libsupc++/eh_terminate.cc
+++ b/libstdc++-v3/libsupc++/eh_terminate.cc
@@ -32,7 +32,7 @@
using namespace __cxxabiv1;
void
-__cxxabiv1::__terminate (std::terminate_handler handler)
+__cxxabiv1::__terminate (std::terminate_handler handler) throw ()
{
try {
handler ();
@@ -43,7 +43,7 @@ __cxxabiv1::__terminate (std::terminate_handler handler)
}
void
-std::terminate ()
+std::terminate () throw()
{
__terminate (__terminate_handler);
}
diff --git a/libstdc++-v3/libsupc++/eh_type.cc b/libstdc++-v3/libsupc++/eh_type.cc
index f0277d401d7..bb8be0b752e 100644
--- a/libstdc++-v3/libsupc++/eh_type.cc
+++ b/libstdc++-v3/libsupc++/eh_type.cc
@@ -33,7 +33,7 @@ namespace __cxxabiv1
// Returns the type_info for the currently handled exception [15.3/8], or
// null if there is none.
extern "C"
-std::type_info *__cxa_current_exception_type ()
+std::type_info *__cxa_current_exception_type () throw()
{
__cxa_eh_globals *globals = __cxa_get_globals ();
__cxa_exception *header = globals->caughtExceptions;
diff --git a/libstdc++-v3/libsupc++/exception b/libstdc++-v3/libsupc++/exception
index 7fa929b6adf..c8b334fe945 100644
--- a/libstdc++-v3/libsupc++/exception
+++ b/libstdc++-v3/libsupc++/exception
@@ -93,7 +93,7 @@ namespace std
/** The runtime will call this function if %exception handling must be
* abandoned for any reason. It can also be called by the user. */
- void terminate() __attribute__ ((__noreturn__));
+ void terminate() throw() __attribute__ ((__noreturn__));
/// Takes a new handler function as an argument, returns the old function.
unexpected_handler set_unexpected(unexpected_handler) throw();
@@ -112,7 +112,7 @@ namespace std
* 2: "When @c uncaught_exception() is true, throwing an %exception can
* result in a call of @c terminate() (15.5.1)."
*/
- bool uncaught_exception() throw();
+ bool uncaught_exception() throw() __attribute__ ((__pure__));
// @} group exceptions
} // namespace std
diff --git a/libstdc++-v3/libsupc++/exception_ptr.h b/libstdc++-v3/libsupc++/exception_ptr.h
index 3c44ff113fb..56997221f25 100644
--- a/libstdc++-v3/libsupc++/exception_ptr.h
+++ b/libstdc++-v3/libsupc++/exception_ptr.h
@@ -77,10 +77,10 @@ namespace std
namespace __exception_ptr
{
bool
- operator==(const exception_ptr&, const exception_ptr&) throw();
+ operator==(const exception_ptr&, const exception_ptr&) throw() __attribute__ ((__pure__));
bool
- operator!=(const exception_ptr&, const exception_ptr&) throw();
+ operator!=(const exception_ptr&, const exception_ptr&) throw() __attribute__ ((__pure__));
class exception_ptr
{
@@ -91,9 +91,9 @@ namespace std
void _M_addref() throw();
void _M_release() throw();
- void *_M_get() const throw();
+ void *_M_get() const throw() __attribute__ ((__pure__));
- void _M_safe_bool_dummy();
+ void _M_safe_bool_dummy() throw() __attribute__ ((__const__));
friend exception_ptr std::current_exception() throw();
friend void std::rethrow_exception(exception_ptr);
@@ -141,14 +141,14 @@ namespace std
}
#endif
- bool operator!() const throw();
+ bool operator!() const throw() __attribute__ ((__pure__));
operator __safe_bool() const throw();
friend bool
- operator==(const exception_ptr&, const exception_ptr&) throw();
+ operator==(const exception_ptr&, const exception_ptr&) throw() __attribute__ ((__pure__));
const type_info*
- __cxa_exception_type() const throw();
+ __cxa_exception_type() const throw() __attribute__ ((__pure__));
};
} // namespace __exception_ptr
diff --git a/libstdc++-v3/libsupc++/guard.cc b/libstdc++-v3/libsupc++/guard.cc
index 10f909215c1..dace046e544 100644
--- a/libstdc++-v3/libsupc++/guard.cc
+++ b/libstdc++-v3/libsupc++/guard.cc
@@ -330,7 +330,7 @@ namespace __cxxabiv1
}
extern "C"
- void __cxa_guard_abort (__guard *g)
+ void __cxa_guard_abort (__guard *g) throw ()
{
#ifdef _GLIBCXX_USE_FUTEX
// If __sync_* and futex syscall are supported, don't use any global
@@ -369,7 +369,7 @@ namespace __cxxabiv1
}
extern "C"
- void __cxa_guard_release (__guard *g)
+ void __cxa_guard_release (__guard *g) throw ()
{
#ifdef _GLIBCXX_USE_FUTEX
// If __sync_* and futex syscall are supported, don't use any global
diff --git a/libstdc++-v3/libsupc++/unwind-cxx.h b/libstdc++-v3/libsupc++/unwind-cxx.h
index 984dd677342..e4918b211bf 100644
--- a/libstdc++-v3/libsupc++/unwind-cxx.h
+++ b/libstdc++-v3/libsupc++/unwind-cxx.h
@@ -148,8 +148,8 @@ struct __cxa_eh_globals
// either of the following functions. The "fast" version assumes at least
// one prior call of __cxa_get_globals has been made from the current
// thread, so no initialization is necessary.
-extern "C" __cxa_eh_globals *__cxa_get_globals () throw();
-extern "C" __cxa_eh_globals *__cxa_get_globals_fast () throw();
+extern "C" __cxa_eh_globals *__cxa_get_globals () throw() __attribute__ ((__const__));
+extern "C" __cxa_eh_globals *__cxa_get_globals_fast () throw() __attribute__ ((__const__));
// Allocate memory for the primary exception plus the thrown object.
extern "C" void *__cxa_allocate_exception(std::size_t thrown_size) throw();
@@ -172,14 +172,14 @@ extern "C" void __cxa_throw (void *thrown_exception,
__attribute__((noreturn));
// Used to implement exception handlers.
-extern "C" void *__cxa_get_exception_ptr (void *) throw();
+extern "C" void *__cxa_get_exception_ptr (void *) throw() __attribute__ ((__pure__));
extern "C" void *__cxa_begin_catch (void *) throw();
extern "C" void __cxa_end_catch ();
extern "C" void __cxa_rethrow () __attribute__((noreturn));
// These facilitate code generation for recurring situations.
-extern "C" void __cxa_bad_cast ();
-extern "C" void __cxa_bad_typeid ();
+extern "C" void __cxa_bad_cast () __attribute__((__noreturn__));
+extern "C" void __cxa_bad_typeid () __attribute__((__noreturn__));
// @@@ These are not directly specified by the IA-64 C++ ABI.
@@ -204,7 +204,7 @@ extern "C" void __cxa_end_cleanup (void);
// Invokes given handler, dying appropriately if the user handler was
// so inconsiderate as to return.
-extern void __terminate(std::terminate_handler) __attribute__((noreturn));
+extern void __terminate(std::terminate_handler) throw () __attribute__((__noreturn__));
extern void __unexpected(std::unexpected_handler) __attribute__((noreturn));
// The current installed user handlers.
diff --git a/libstdc++-v3/libsupc++/vec.cc b/libstdc++-v3/libsupc++/vec.cc
index 886e6fc99c8..f1322896d0b 100644
--- a/libstdc++-v3/libsupc++/vec.cc
+++ b/libstdc++-v3/libsupc++/vec.cc
@@ -248,7 +248,7 @@ namespace __cxxabiv1
__cxa_vec_cleanup(void *array_address,
std::size_t element_count,
std::size_t element_size,
- __cxa_cdtor_type destructor)
+ __cxa_cdtor_type destructor) throw()
{
if (destructor)
{
diff --git a/libstdc++-v3/src/atomic.cc b/libstdc++-v3/src/atomic.cc
index e3e668b4cb5..3a2ff3d52e9 100644
--- a/libstdc++-v3/src/atomic.cc
+++ b/libstdc++-v3/src/atomic.cc
@@ -78,7 +78,7 @@ namespace std
{
bool
atomic_flag_test_and_set_explicit(volatile __atomic_flag_base* __a,
- memory_order __m)
+ memory_order __m) throw ()
{
volatile atomic_flag d(__a->_M_i);
return d.test_and_set(__m);
@@ -86,7 +86,7 @@ namespace std
void
atomic_flag_clear_explicit(volatile __atomic_flag_base* __a,
- memory_order __m)
+ memory_order __m) throw ()
{
volatile atomic_flag d(__a->_M_i);
return d.clear(__m);
@@ -94,14 +94,14 @@ namespace std
void
__atomic_flag_wait_explicit(volatile __atomic_flag_base* __a,
- memory_order __x)
+ memory_order __x) throw ()
{
while (atomic_flag_test_and_set_explicit(__a, __x))
{ };
}
volatile __atomic_flag_base*
- __atomic_flag_for_address(const volatile void* __z)
+ __atomic_flag_for_address(const volatile void* __z) throw ()
{
uintptr_t __u = reinterpret_cast<uintptr_t>(__z);
__u += (__u >> 2) + (__u << 4);
diff --git a/libstdc++-v3/src/chrono.cc b/libstdc++-v3/src/chrono.cc
index f7640b09f44..422b97399ac 100644
--- a/libstdc++-v3/src/chrono.cc
+++ b/libstdc++-v3/src/chrono.cc
@@ -40,7 +40,7 @@ namespace std
const bool system_clock::is_monotonic;
system_clock::time_point
- system_clock::now()
+ system_clock::now() throw ()
{
#ifdef _GLIBCXX_USE_CLOCK_REALTIME
timespec tp;
diff --git a/libstdc++-v3/src/condition_variable.cc b/libstdc++-v3/src/condition_variable.cc
index f7379cd9fef..4fb2f179dfd 100644
--- a/libstdc++-v3/src/condition_variable.cc
+++ b/libstdc++-v3/src/condition_variable.cc
@@ -28,7 +28,7 @@
namespace std
{
- condition_variable::condition_variable()
+ condition_variable::condition_variable() throw ()
{
#ifdef __GTHREAD_COND_INIT
__native_type __tmp = __GTHREAD_COND_INIT;
@@ -41,7 +41,7 @@ namespace std
#endif
}
- condition_variable::~condition_variable()
+ condition_variable::~condition_variable() throw ()
{
// XXX no thread blocked
/* int __e = */ __gthread_cond_destroy(&_M_cond);
@@ -79,7 +79,7 @@ namespace std
__throw_system_error(__e);
}
- condition_variable_any::condition_variable_any()
+ condition_variable_any::condition_variable_any() throw ()
{
#ifdef __GTHREAD_COND_INIT
__native_type __tmp = __GTHREAD_COND_INIT;
@@ -92,7 +92,7 @@ namespace std
#endif
}
- condition_variable_any::~condition_variable_any()
+ condition_variable_any::~condition_variable_any() throw ()
{
__gthread_cond_destroy(&_M_cond);
}
diff --git a/libstdc++-v3/src/debug.cc b/libstdc++-v3/src/debug.cc
index c1e4ddd4e46..6ce2e101f25 100644
--- a/libstdc++-v3/src/debug.cc
+++ b/libstdc++-v3/src/debug.cc
@@ -185,7 +185,7 @@ namespace __gnu_debug
__gnu_cxx::__mutex&
_Safe_sequence_base::
- _M_get_mutex()
+ _M_get_mutex() throw ()
{ return get_safe_base_mutex(); }
void
@@ -198,7 +198,7 @@ namespace __gnu_debug
void
_Safe_iterator_base::
- _M_attach_single(_Safe_sequence_base* __seq, bool __constant)
+ _M_attach_single(_Safe_sequence_base* __seq, bool __constant) throw ()
{
_M_detach_single();
@@ -235,7 +235,7 @@ namespace __gnu_debug
void
_Safe_iterator_base::
- _M_detach_single()
+ _M_detach_single() throw ()
{
if (_M_sequence)
{
@@ -259,12 +259,12 @@ namespace __gnu_debug
bool
_Safe_iterator_base::
- _M_singular() const
+ _M_singular() const throw ()
{ return !_M_sequence || _M_version != _M_sequence->_M_version; }
bool
_Safe_iterator_base::
- _M_can_compare(const _Safe_iterator_base& __x) const
+ _M_can_compare(const _Safe_iterator_base& __x) const throw ()
{
return (!_M_singular()
&& !__x._M_singular() && _M_sequence == __x._M_sequence);
@@ -272,7 +272,7 @@ namespace __gnu_debug
__gnu_cxx::__mutex&
_Safe_iterator_base::
- _M_get_mutex()
+ _M_get_mutex() throw ()
{ return get_safe_base_mutex(); }
void
@@ -471,7 +471,7 @@ namespace __gnu_debug
}
const _Error_formatter&
- _Error_formatter::_M_message(_Debug_msg_id __id) const
+ _Error_formatter::_M_message(_Debug_msg_id __id) const throw ()
{ return this->_M_message(_S_debug_messages[__id]); }
void
@@ -531,7 +531,7 @@ namespace __gnu_debug
void
_Error_formatter::_M_format_word(char* __buf,
int __n __attribute__ ((__unused__)),
- const char* __fmt, _Tp __s) const
+ const char* __fmt, _Tp __s) const throw ()
{
#ifdef _GLIBCXX_USE_C99
std::snprintf(__buf, __n, __fmt, __s);
@@ -674,7 +674,7 @@ namespace __gnu_debug
}
void
- _Error_formatter::_M_get_max_length() const
+ _Error_formatter::_M_get_max_length() const throw ()
{
const char* __nptr = std::getenv("GLIBCXX_DEBUG_MESSAGE_LENGTH");
if (__nptr)
diff --git a/libstdc++-v3/src/hash.cc b/libstdc++-v3/src/hash.cc
index 96931bc0f2c..790cfee3e22 100644
--- a/libstdc++-v3/src/hash.cc
+++ b/libstdc++-v3/src/hash.cc
@@ -44,7 +44,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
// 10 bytes -> 12 bytes) and resort to frexp.
template<>
size_t
- hash<long double>::operator()(long double __val) const
+ hash<long double>::operator()(long double __val) const throw ()
{
size_t __result = 0;
@@ -72,18 +72,18 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
#ifndef _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL
template<>
size_t
- hash<string>::operator()(string __s) const
+ hash<string>::operator()(string __s) const throw ()
{ return _Fnv_hash<>::hash(__s.data(), __s.length()); }
template<>
size_t
- hash<const string&>::operator()(const string& __s) const
+ hash<const string&>::operator()(const string& __s) const throw ()
{ return _Fnv_hash<>::hash(__s.data(), __s.length()); }
#ifdef _GLIBCXX_USE_WCHAR_T
template<>
size_t
- hash<wstring>::operator()(wstring __s) const
+ hash<wstring>::operator()(wstring __s) const throw ()
{
const char* __p = reinterpret_cast<const char*>(__s.data());
return _Fnv_hash<>::hash(__p, __s.length() * sizeof(wchar_t));
@@ -91,7 +91,7 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
template<>
size_t
- hash<const wstring&>::operator()(const wstring& __s) const
+ hash<const wstring&>::operator()(const wstring& __s) const throw ()
{
const char* __p = reinterpret_cast<const char*>(__s.data());
return _Fnv_hash<>::hash(__p, __s.length() * sizeof(wchar_t));
diff --git a/libstdc++-v3/src/mt_allocator.cc b/libstdc++-v3/src/mt_allocator.cc
index 95dc587c2b7..9c3af0e60d5 100644
--- a/libstdc++-v3/src/mt_allocator.cc
+++ b/libstdc++-v3/src/mt_allocator.cc
@@ -108,7 +108,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
}
void
- __pool<false>::_M_reclaim_block(char* __p, size_t __bytes)
+ __pool<false>::_M_reclaim_block(char* __p, size_t __bytes) throw ()
{
// Round up to power of 2 and figure out which bin to use.
const size_t __which = _M_binmap[__bytes];
@@ -256,7 +256,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
}
void
- __pool<true>::_M_reclaim_block(char* __p, size_t __bytes)
+ __pool<true>::_M_reclaim_block(char* __p, size_t __bytes) throw ()
{
// Round up to power of 2 and figure out which bin to use.
const size_t __which = _M_binmap[__bytes];
@@ -649,7 +649,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
// XXX GLIBCXX_ABI Deprecated
void
- __pool<true>::_M_destroy_thread_key(void*) { }
+ __pool<true>::_M_destroy_thread_key(void*) throw () { }
// XXX GLIBCXX_ABI Deprecated
void
diff --git a/libstdc++-v3/src/pool_allocator.cc b/libstdc++-v3/src/pool_allocator.cc
index cafd4d303d0..e0da5e73884 100644
--- a/libstdc++-v3/src/pool_allocator.cc
+++ b/libstdc++-v3/src/pool_allocator.cc
@@ -44,14 +44,14 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
// Definitions for __pool_alloc_base.
__pool_alloc_base::_Obj* volatile*
- __pool_alloc_base::_M_get_free_list(size_t __bytes)
+ __pool_alloc_base::_M_get_free_list(size_t __bytes) throw ()
{
size_t __i = ((__bytes + (size_t)_S_align - 1) / (size_t)_S_align - 1);
return _S_free_list + __i;
}
__mutex&
- __pool_alloc_base::_M_get_mutex()
+ __pool_alloc_base::_M_get_mutex() throw ()
{ return get_palloc_mutex(); }
// Allocate memory in large chunks in order to avoid fragmenting the
diff --git a/libstdc++-v3/src/strstream.cc b/libstdc++-v3/src/strstream.cc
index 5ec70fcb798..fbc5f518297 100644
--- a/libstdc++-v3/src/strstream.cc
+++ b/libstdc++-v3/src/strstream.cc
@@ -78,33 +78,33 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
}
- strstreambuf::strstreambuf(char* get, streamsize n, char* put)
+ strstreambuf::strstreambuf(char* get, streamsize n, char* put) throw ()
: _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false),
_M_frozen(false), _M_constant(false)
{ _M_setup(get, put, n); }
- strstreambuf::strstreambuf(signed char* get, streamsize n, signed char* put)
+ strstreambuf::strstreambuf(signed char* get, streamsize n, signed char* put) throw ()
: _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false),
_M_frozen(false), _M_constant(false)
{ _M_setup(reinterpret_cast<char*>(get), reinterpret_cast<char*>(put), n); }
strstreambuf::strstreambuf(unsigned char* get, streamsize n,
- unsigned char* put)
+ unsigned char* put) throw ()
: _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false),
_M_frozen(false), _M_constant(false)
{ _M_setup(reinterpret_cast<char*>(get), reinterpret_cast<char*>(put), n); }
- strstreambuf::strstreambuf(const char* get, streamsize n)
+ strstreambuf::strstreambuf(const char* get, streamsize n) throw ()
: _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false),
_M_frozen(false), _M_constant(true)
{ _M_setup(const_cast<char*>(get), 0, n); }
- strstreambuf::strstreambuf(const signed char* get, streamsize n)
+ strstreambuf::strstreambuf(const signed char* get, streamsize n) throw ()
: _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false),
_M_frozen(false), _M_constant(true)
{ _M_setup(reinterpret_cast<char*>(const_cast<signed char*>(get)), 0, n); }
- strstreambuf::strstreambuf(const unsigned char* get, streamsize n)
+ strstreambuf::strstreambuf(const unsigned char* get, streamsize n) throw ()
: _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(false),
_M_frozen(false), _M_constant(true)
{ _M_setup(reinterpret_cast<char*>(const_cast<unsigned char*>(get)), 0, n); }
@@ -116,21 +116,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
void
- strstreambuf::freeze(bool frozenflag)
+ strstreambuf::freeze(bool frozenflag) throw ()
{
if (_M_dynamic)
_M_frozen = frozenflag;
}
char*
- strstreambuf::str()
+ strstreambuf::str() throw ()
{
freeze(true);
return eback();
}
int
- strstreambuf::pcount() const
+ strstreambuf::pcount() const throw ()
{ return pptr() ? pptr() - pbase() : 0; }
strstreambuf::int_type
@@ -315,7 +315,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
void
- strstreambuf::_M_setup(char* get, char* put, streamsize n)
+ strstreambuf::_M_setup(char* get, char* put, streamsize n) throw ()
{
if (get)
{
@@ -350,11 +350,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
istrstream::~istrstream() { }
strstreambuf*
- istrstream::rdbuf() const
+ istrstream::rdbuf() const throw ()
{ return const_cast<strstreambuf*>(&_M_buf); }
char*
- istrstream::str()
+ istrstream::str() throw ()
{ return _M_buf.str(); }
ostrstream::ostrstream()
@@ -369,19 +369,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
ostrstream::~ostrstream() {}
strstreambuf*
- ostrstream::rdbuf() const
+ ostrstream::rdbuf() const throw ()
{ return const_cast<strstreambuf*>(&_M_buf); }
void
- ostrstream::freeze(bool freezeflag)
+ ostrstream::freeze(bool freezeflag) throw ()
{ _M_buf.freeze(freezeflag); }
char*
- ostrstream::str()
+ ostrstream::str() throw ()
{ return _M_buf.str(); }
int
- ostrstream::pcount() const
+ ostrstream::pcount() const throw ()
{ return _M_buf.pcount(); }
strstream::strstream()
@@ -396,19 +396,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
strstream::~strstream() { }
strstreambuf*
- strstream::rdbuf() const
+ strstream::rdbuf() const throw ()
{ return const_cast<strstreambuf*>(&_M_buf); }
void
- strstream::freeze(bool freezeflag)
+ strstream::freeze(bool freezeflag) throw ()
{ _M_buf.freeze(freezeflag); }
int
- strstream::pcount() const
+ strstream::pcount() const throw ()
{ return _M_buf.pcount(); }
char*
- strstream::str()
+ strstream::str() throw ()
{ return _M_buf.str(); }
_GLIBCXX_END_NAMESPACE
diff --git a/libstdc++-v3/src/tree.cc b/libstdc++-v3/src/tree.cc
index c8ba9359024..b5f229f4da5 100644
--- a/libstdc++-v3/src/tree.cc
+++ b/libstdc++-v3/src/tree.cc
@@ -55,7 +55,7 @@
_GLIBCXX_BEGIN_NAMESPACE(std)
_Rb_tree_node_base*
- _Rb_tree_increment(_Rb_tree_node_base* __x)
+ _Rb_tree_increment(_Rb_tree_node_base* __x) throw ()
{
if (__x->_M_right != 0)
{
@@ -78,13 +78,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
const _Rb_tree_node_base*
- _Rb_tree_increment(const _Rb_tree_node_base* __x)
+ _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ()
{
return _Rb_tree_increment(const_cast<_Rb_tree_node_base*>(__x));
}
_Rb_tree_node_base*
- _Rb_tree_decrement(_Rb_tree_node_base* __x)
+ _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ()
{
if (__x->_M_color == _S_red
&& __x->_M_parent->_M_parent == __x)
@@ -110,14 +110,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
const _Rb_tree_node_base*
- _Rb_tree_decrement(const _Rb_tree_node_base* __x)
+ _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ()
{
return _Rb_tree_decrement(const_cast<_Rb_tree_node_base*>(__x));
}
- void
- _Rb_tree_rotate_left(_Rb_tree_node_base* const __x,
- _Rb_tree_node_base*& __root)
+ static void
+ local_Rb_tree_rotate_left(_Rb_tree_node_base* const __x,
+ _Rb_tree_node_base*& __root)
{
_Rb_tree_node_base* const __y = __x->_M_right;
@@ -136,9 +136,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__x->_M_parent = __y;
}
+ /* Static keyword was missing on _Rb_tree_rotate_left.
+ Export the symbol for backward compatibility until
+ next ABI change. */
void
- _Rb_tree_rotate_right(_Rb_tree_node_base* const __x,
- _Rb_tree_node_base*& __root)
+ _Rb_tree_rotate_left(_Rb_tree_node_base* const __x,
+ _Rb_tree_node_base*& __root)
+ {
+ local_Rb_tree_rotate_left (__x, __root);
+ }
+
+ static void
+ local_Rb_tree_rotate_right(_Rb_tree_node_base* const __x,
+ _Rb_tree_node_base*& __root)
{
_Rb_tree_node_base* const __y = __x->_M_left;
@@ -157,11 +167,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__x->_M_parent = __y;
}
+ /* Static keyword was missing on _Rb_tree_rotate_right
+ Export the symbol for backward compatibility until
+ next ABI change. */
+ void
+ _Rb_tree_rotate_right(_Rb_tree_node_base* const __x,
+ _Rb_tree_node_base*& __root)
+ {
+ local_Rb_tree_rotate_right (__x, __root);
+ }
+
void
_Rb_tree_insert_and_rebalance(const bool __insert_left,
_Rb_tree_node_base* __x,
_Rb_tree_node_base* __p,
- _Rb_tree_node_base& __header)
+ _Rb_tree_node_base& __header) throw ()
{
_Rb_tree_node_base *& __root = __header._M_parent;
@@ -215,11 +235,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
if (__x == __x->_M_parent->_M_right)
{
__x = __x->_M_parent;
- _Rb_tree_rotate_left(__x, __root);
+ local_Rb_tree_rotate_left(__x, __root);
}
__x->_M_parent->_M_color = _S_black;
__xpp->_M_color = _S_red;
- _Rb_tree_rotate_right(__xpp, __root);
+ local_Rb_tree_rotate_right(__xpp, __root);
}
}
else
@@ -237,11 +257,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
if (__x == __x->_M_parent->_M_left)
{
__x = __x->_M_parent;
- _Rb_tree_rotate_right(__x, __root);
+ local_Rb_tree_rotate_right(__x, __root);
}
__x->_M_parent->_M_color = _S_black;
__xpp->_M_color = _S_red;
- _Rb_tree_rotate_left(__xpp, __root);
+ local_Rb_tree_rotate_left(__xpp, __root);
}
}
}
@@ -250,7 +270,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Rb_tree_node_base*
_Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
- _Rb_tree_node_base& __header)
+ _Rb_tree_node_base& __header) throw ()
{
_Rb_tree_node_base *& __root = __header._M_parent;
_Rb_tree_node_base *& __leftmost = __header._M_left;
@@ -337,7 +357,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
__w->_M_color = _S_black;
__x_parent->_M_color = _S_red;
- _Rb_tree_rotate_left(__x_parent, __root);
+ local_Rb_tree_rotate_left(__x_parent, __root);
__w = __x_parent->_M_right;
}
if ((__w->_M_left == 0 ||
@@ -356,14 +376,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
__w->_M_left->_M_color = _S_black;
__w->_M_color = _S_red;
- _Rb_tree_rotate_right(__w, __root);
+ local_Rb_tree_rotate_right(__w, __root);
__w = __x_parent->_M_right;
}
__w->_M_color = __x_parent->_M_color;
__x_parent->_M_color = _S_black;
if (__w->_M_right)
__w->_M_right->_M_color = _S_black;
- _Rb_tree_rotate_left(__x_parent, __root);
+ local_Rb_tree_rotate_left(__x_parent, __root);
break;
}
}
@@ -375,7 +395,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
__w->_M_color = _S_black;
__x_parent->_M_color = _S_red;
- _Rb_tree_rotate_right(__x_parent, __root);
+ local_Rb_tree_rotate_right(__x_parent, __root);
__w = __x_parent->_M_left;
}
if ((__w->_M_right == 0 ||
@@ -393,14 +413,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
__w->_M_right->_M_color = _S_black;
__w->_M_color = _S_red;
- _Rb_tree_rotate_left(__w, __root);
+ local_Rb_tree_rotate_left(__w, __root);
__w = __x_parent->_M_left;
}
__w->_M_color = __x_parent->_M_color;
__x_parent->_M_color = _S_black;
if (__w->_M_left)
__w->_M_left->_M_color = _S_black;
- _Rb_tree_rotate_right(__x_parent, __root);
+ local_Rb_tree_rotate_right(__x_parent, __root);
break;
}
}
@@ -411,7 +431,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
unsigned int
_Rb_tree_black_count(const _Rb_tree_node_base* __node,
- const _Rb_tree_node_base* __root)
+ const _Rb_tree_node_base* __root) throw ()
{
if (__node == 0)
return 0;
diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc
new file mode 100644
index 00000000000..b31050895a5
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc
@@ -0,0 +1,77 @@
+// Copyright (C) 2009 Free Software Foundation
+//
+// 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/>.
+
+// 22.2.2.1.1 num_get members
+
+#include <locale>
+#include <sstream>
+#include <limits>
+#include <testsuite_hooks.h>
+
+// libstdc++/39802
+void test01()
+{
+ using namespace std;
+ typedef istreambuf_iterator<char> iterator_type;
+
+ bool test __attribute__((unused)) = true;
+
+ stringstream ss;
+ const num_get<char>& ng = use_facet<num_get<char> >(ss.getloc());
+ ios_base::iostate err;
+ iterator_type end;
+ const string empty;
+
+ unsigned long ul0 = 1;
+ const unsigned long ul1 = numeric_limits<unsigned long>::max();
+
+ ss << "-0";
+ err = ios_base::goodbit;
+ end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
+ VERIFY( err == ios_base::eofbit );
+ VERIFY( ul0 == 0 );
+
+ ss.clear();
+ ss.str(empty);
+ ss << "-1";
+ err = ios_base::goodbit;
+ end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
+ VERIFY( err == ios_base::eofbit );
+ VERIFY( ul0 == ul1 );
+
+ ss.clear();
+ ss.str(empty);
+ ss << '-' << ul1;
+ err = ios_base::goodbit;
+ end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
+ VERIFY( err == ios_base::eofbit );
+ VERIFY( ul0 == 1 );
+
+ ss.clear();
+ ss.str(empty);
+ ss << '-' << ul1 << '0';
+ err = ios_base::goodbit;
+ end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
+ VERIFY( err == (ios_base::eofbit | ios_base::failbit) );
+ VERIFY( ul0 == ul1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc
new file mode 100644
index 00000000000..67138d1dac5
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc
@@ -0,0 +1,77 @@
+// Copyright (C) 2009 Free Software Foundation
+//
+// 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/>.
+
+// 22.2.2.1.1 num_get members
+
+#include <locale>
+#include <sstream>
+#include <limits>
+#include <testsuite_hooks.h>
+
+// libstdc++/39802
+void test01()
+{
+ using namespace std;
+ typedef istreambuf_iterator<wchar_t> iterator_type;
+
+ bool test __attribute__((unused)) = true;
+
+ wstringstream ss;
+ const num_get<wchar_t>& ng = use_facet<num_get<wchar_t> >(ss.getloc());
+ ios_base::iostate err;
+ iterator_type end;
+ const wstring empty;
+
+ unsigned long ul0 = 1;
+ const unsigned long ul1 = numeric_limits<unsigned long>::max();
+
+ ss << L"-0";
+ err = ios_base::goodbit;
+ end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
+ VERIFY( err == ios_base::eofbit );
+ VERIFY( ul0 == 0 );
+
+ ss.clear();
+ ss.str(empty);
+ ss << L"-1";
+ err = ios_base::goodbit;
+ end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
+ VERIFY( err == ios_base::eofbit );
+ VERIFY( ul0 == ul1 );
+
+ ss.clear();
+ ss.str(empty);
+ ss << L'-' << ul1;
+ err = ios_base::goodbit;
+ end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
+ VERIFY( err == ios_base::eofbit );
+ VERIFY( ul0 == 1 );
+
+ ss.clear();
+ ss.str(empty);
+ ss << L'-' << ul1 << L'0';
+ err = ios_base::goodbit;
+ end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
+ VERIFY( err == (ios_base::eofbit | ios_base::failbit) );
+ VERIFY( ul0 == ul1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc b/libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
index 99b336bab77..97355824404 100644
--- a/libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
@@ -38,8 +38,9 @@ test01()
fld.resize(0);
VERIFY(fld.empty() == true);
- VERIFY( fld.max_size()
- == std::allocator<std::_Fwd_list_node<double> >().max_size() );
+ VERIFY( (fld.max_size()
+ == std::allocator<std::_Fwd_list_node<double,
+ std::allocator<double> > >().max_size()) );
}
int