diff options
author | Khem Raj <raj.khem@gmail.com> | 2011-06-12 20:56:57 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-06-14 14:37:31 +0100 |
commit | 3968f33b6542cf20cf63cf49bfbc033bd2486295 (patch) | |
tree | 2bdb5e2f692a3bd3ecadbf2b4c7dc9f54485c737 /meta/recipes-devtools | |
parent | 022ca1d1357caafdfe23aa9ab82f90ba89b6942b (diff) | |
download | openembedded-core-3968f33b6542cf20cf63cf49bfbc033bd2486295.tar.gz openembedded-core-3968f33b6542cf20cf63cf49bfbc033bd2486295.tar.bz2 openembedded-core-3968f33b6542cf20cf63cf49bfbc033bd2486295.tar.xz openembedded-core-3968f33b6542cf20cf63cf49bfbc033bd2486295.zip |
gcc-4.6.0: Bring in patches from FSF 4.6 branch
This brings in new patches from 4.6 release branch
updates the comment section of existing branch to not
contain patch numbers.
Tested build on qemu for arm ppc mips x86 and x86_64
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta/recipes-devtools')
330 files changed, 28144 insertions, 321 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0002-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0002-Backport-from-mainline.patch index 0d8f269a1..4a475d652 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0002-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0002-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From af3385141f9bfe32ab89165bfc98a7ea2ff19278 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 26 Mar 2011 09:19:36 +0000 -Subject: [PATCH 002/200] Backport from mainline +Subject: [PATCH] Backport from mainline 2011-03-17 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/48141 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0003-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0003-Backport-from-mainline.patch index f9e806c8f..c8c245fbe 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0003-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0003-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 540b311d6b6aa2e50a9feb45255361e498bb5198 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 26 Mar 2011 09:20:34 +0000 -Subject: [PATCH 003/200] Backport from mainline +Subject: [PATCH] Backport from mainline 2011-03-17 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/48141 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0004-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0004-Backport-from-mainline.patch index c6f1c9011..3c4332af8 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0004-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0004-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 125ee3cf946de59472c02ffd792aca4f1045669f Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 26 Mar 2011 09:21:34 +0000 -Subject: [PATCH 004/200] Backport from mainline +Subject: [PATCH] Backport from mainline 2011-03-20 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/48156 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0005-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0005-Backport-from-mainline.patch index 200b3b1b8..8f2eb504b 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0005-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0005-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 5bc59e25607b755798008d5e0d79ca4cea6711ed Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 26 Mar 2011 09:23:01 +0000 -Subject: [PATCH 005/200] Backport from mainline +Subject: [PATCH] Backport from mainline 2011-03-20 Jakub Jelinek <jakub@redhat.com> PR c/42544 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0006-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0006-Backport-from-mainline.patch index c042a100b..bf1964dba 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0006-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0006-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From b6ed53c51ca6090f3f422e6223e8dc3b150f0393 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 26 Mar 2011 09:24:06 +0000 -Subject: [PATCH 006/200] Backport from mainline +Subject: [PATCH] Backport from mainline 2011-03-24 Jakub Jelinek <jakub@redhat.com> PR debug/48204 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0007-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0007-Backport-from-mainline.patch index 4b7298759..3bd42f3c6 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0007-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0007-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From d4d74232bca4968da87cd8157cc2d6139115946e Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 26 Mar 2011 09:24:53 +0000 -Subject: [PATCH 007/200] Backport from mainline +Subject: [PATCH] Backport from mainline 2011-03-25 Jakub Jelinek <jakub@redhat.com> * printf/printf_fp.c (__quadmath_printf_fp): Use memcpy instead of diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0008-2011-03-26-Paolo-Carlini-paolo.carlini-oracle.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0008-2011-03-26-Paolo-Carlini-paolo.carlini-oracle.com.patch index 4b9955812..373b14cfb 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0008-2011-03-26-Paolo-Carlini-paolo.carlini-oracle.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0008-2011-03-26-Paolo-Carlini-paolo.carlini-oracle.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 6bb9234e718d4b75a9a1e63d523d08c3392ba55f Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 26 Mar 2011 10:02:34 +0000 -Subject: [PATCH 008/200] 2011-03-26 Paolo Carlini <paolo.carlini@oracle.com> +Subject: [PATCH] 2011-03-26 Paolo Carlini <paolo.carlini@oracle.com> * include/bits/random.h (negative_binomial_distribution<>:: negative_binomial_distribution(_IntType, double), diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0009-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0009-Backport-from-mainline.patch index 9c0ad0e8a..9f9c32149 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0009-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0009-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 8c9cc2d03061ea065b70695ef4903a0390c01fb8 Mon Sep 17 00:00:00 2001 From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 26 Mar 2011 18:41:02 +0000 -Subject: [PATCH 009/200] Backport from mainline: +Subject: [PATCH] Backport from mainline: 2011-03-24 Uros Bizjak <ubizjak@gmail.com> PR target/48237 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0012-2011-03-27-Jonathan-Wakely-jwakely.gcc-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0012-2011-03-27-Jonathan-Wakely-jwakely.gcc-gmail.com.patch index 14f29cb9e..1d8de221c 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0012-2011-03-27-Jonathan-Wakely-jwakely.gcc-gmail.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0012-2011-03-27-Jonathan-Wakely-jwakely.gcc-gmail.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From e2965db317ee7efd916963c87b9c34023eefda54 Mon Sep 17 00:00:00 2001 From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 27 Mar 2011 20:08:35 +0000 -Subject: [PATCH 012/200] 2011-03-27 Jonathan Wakely <jwakely.gcc@gmail.com> +Subject: [PATCH] 2011-03-27 Jonathan Wakely <jwakely.gcc@gmail.com> PR other/48179 PR other/48221 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0014-2011-03-28-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0014-2011-03-28-Richard-Guenther-rguenther-suse.de.patch index e5ae726cd..f2a48eb36 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0014-2011-03-28-Richard-Guenther-rguenther-suse.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0014-2011-03-28-Richard-Guenther-rguenther-suse.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 2631216d2fedc5339a5edcac64db1ab5d9269498 Mon Sep 17 00:00:00 2001 From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 28 Mar 2011 10:14:34 +0000 -Subject: [PATCH 014/200] 2011-03-28 Richard Guenther <rguenther@suse.de> +Subject: [PATCH] 2011-03-28 Richard Guenther <rguenther@suse.de> Backport from mainline 2011-03-24 Richard Guenther <rguenther@suse.de> diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0015-gcc.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0015-gcc.patch index 2ad39f42a..314ad3d75 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0015-gcc.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0015-gcc.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 2fe380ffa4f1ca0fba1e4915df127992eb977569 Mon Sep 17 00:00:00 2001 From: rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 28 Mar 2011 10:22:57 +0000 -Subject: [PATCH 015/200] gcc/ +Subject: [PATCH] gcc/ PR target/47553 * config/arm/predicates.md (neon_lane_number): Accept 0..15. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0016-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0016-Backport-from-mainline.patch index d8945d640..5f1cd4ffb 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0016-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0016-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From c471cbe03c049ed4a97708936342e4dd28606d22 Mon Sep 17 00:00:00 2001 From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 28 Mar 2011 16:46:27 +0000 -Subject: [PATCH 016/200] Backport from mainline: +Subject: [PATCH] Backport from mainline: 2011-03-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR testsuite/48251 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0017-libgfortran.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0017-libgfortran.patch index 5464c624a..10b071b30 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0017-libgfortran.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0017-libgfortran.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From d70e14fe2c9c3fc20d9bc1dca7cfcc3d6bb1301e Mon Sep 17 00:00:00 2001 From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 28 Mar 2011 17:09:27 +0000 -Subject: [PATCH 017/200] libgfortran: +Subject: [PATCH] libgfortran: backport from mainline: 2011-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR bootstrap/48135 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0019-2011-03-29-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0019-2011-03-29-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch index 9614fe74a..cf5446051 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0019-2011-03-29-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0019-2011-03-29-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 6f57329da3c7308ccf6b1740ead898d668ec24f9 Mon Sep 17 00:00:00 2001 From: krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 11:57:40 +0000 -Subject: [PATCH 019/200] 2011-03-29 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> +Subject: [PATCH] 2011-03-29 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> * config/s390/s390.c (s390_preferred_reload_class): Return NO_REGS for invalid symbolic addresses. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0020-config-rx-rx.h-LABEL_ALIGN_AFTER_BARRIER-Define.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0020-config-rx-rx.h-LABEL_ALIGN_AFTER_BARRIER-Define.patch index a929828ef..69767411f 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0020-config-rx-rx.h-LABEL_ALIGN_AFTER_BARRIER-Define.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0020-config-rx-rx.h-LABEL_ALIGN_AFTER_BARRIER-Define.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 04688242805dcf2a1e9c8948a3d15611d88c1520 Mon Sep 17 00:00:00 2001 From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 12:27:07 +0000 -Subject: [PATCH 020/200] * config/rx/rx.h (LABEL_ALIGN_AFTER_BARRIER): Define. +Subject: [PATCH] * config/rx/rx.h (LABEL_ALIGN_AFTER_BARRIER): Define. (ASM_OUTPUT_MAX_SKIP): Define. * config/rx/predicates.md (rx_zs_comparison_operator): Do not allow LT aor GE comparisons. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0021-c.opt-Add-std-c-03.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0021-c.opt-Add-std-c-03.patch index 0b8d114f5..3860674d6 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0021-c.opt-Add-std-c-03.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0021-c.opt-Add-std-c-03.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From e8c1376d80e89383a6eff16349bf2071b571a47f Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:23:59 +0000 -Subject: [PATCH 021/200] * c.opt: Add -std=c++03. +Subject: [PATCH] * c.opt: Add -std=c++03. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171662 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0022-PR-c-47570.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0022-PR-c-47570.patch index 7f2e35ad5..7c21a569c 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0022-PR-c-47570.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0022-PR-c-47570.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 1d1e50e7f9e7511a01ee95d7cffd8311c9b84d8b Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:24:09 +0000 -Subject: [PATCH 022/200] PR c++/47570 +Subject: [PATCH] PR c++/47570 * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't use the generic binary expression handling. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0023-PR-c-47504.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0023-PR-c-47504.patch index dc707ee1b..84c961d95 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0023-PR-c-47504.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0023-PR-c-47504.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 4ebec68ee3aee90ba13a4c4bc70afbb4a613468b Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:24:19 +0000 -Subject: [PATCH 023/200] PR c++/47504 +Subject: [PATCH] PR c++/47504 * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let the conversion set TREE_OVERFLOW. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch index bb21bb0e3..6771fad9e 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 3a987d8e4a8c885fe7fc54595ebdd82d5291e1e7 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:24:30 +0000 -Subject: [PATCH 024/200] * except.c (build_noexcept_spec): Call cxx_constant_value after +Subject: [PATCH] * except.c (build_noexcept_spec): Call cxx_constant_value after converting to bool. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171665 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0025-c-family.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0025-c-family.patch index 321bcb183..385e0d694 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0025-c-family.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0025-c-family.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 21e7558c6e06c35620e80478f4e6b5ccd1c78aa9 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:24:42 +0000 -Subject: [PATCH 025/200] c-family/ +Subject: [PATCH] c-family/ * c.opt (fconstexpr-depth): New option. cp/ * semantics.c (push_cx_call_context): Return bool. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0026-decl2.c-cp_check_const_attributes-New.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0026-decl2.c-cp_check_const_attributes-New.patch index 7cee35b24..96295daa0 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0026-decl2.c-cp_check_const_attributes-New.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0026-decl2.c-cp_check_const_attributes-New.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 87e73453e8135e72f592c1d7c84da942e7a1e308 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:24:59 +0000 -Subject: [PATCH 026/200] * decl2.c (cp_check_const_attributes): New. +Subject: [PATCH] * decl2.c (cp_check_const_attributes): New. (cplus_decl_attributes): Call cp_check_const_attributes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171667 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0027-Core-1148.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0027-Core-1148.patch index 6d46c906d..a6d5636d7 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0027-Core-1148.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0027-Core-1148.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From c68e41052387396cba4a066d8e9658dc2011baf0 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:25:10 +0000 -Subject: [PATCH 027/200] Core 1148 +Subject: [PATCH] Core 1148 * typeck.c (check_return_expr): Fix conditions for setting LOOKUP_PREFER_RVALUE. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0028-PR-c-48313.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0028-PR-c-48313.patch index d0b52048d..40471845d 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0028-PR-c-48313.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0028-PR-c-48313.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 8d72f0bd42615d92c0db226238694eedb52914d3 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:25:22 +0000 -Subject: [PATCH 028/200] PR c++/48313 +Subject: [PATCH] PR c++/48313 * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction from overloaded function. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0029-PR-c-47999.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0029-PR-c-47999.patch index 59af9ac6c..796240237 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0029-PR-c-47999.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0029-PR-c-47999.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From d1f71a5193dd2b3debd551f3dc0e0d237acf7e81 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:25:37 +0000 -Subject: [PATCH 029/200] PR c++/47999 +Subject: [PATCH] PR c++/47999 * semantics.c (finish_call_expr): Preserve reference semantics in templates. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0030-pt.c-build_non_dependent_expr-Keep-dereferences-outs.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0030-pt.c-build_non_dependent_expr-Keep-dereferences-outs.patch index 7272d3278..041e375c7 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0030-pt.c-build_non_dependent_expr-Keep-dereferences-outs.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0030-pt.c-build_non_dependent_expr-Keep-dereferences-outs.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 6ec20c02d4514be339f0112d793794abf60451a7 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:25:51 +0000 -Subject: [PATCH 030/200] * pt.c (build_non_dependent_expr): Keep dereferences outside the +Subject: [PATCH] * pt.c (build_non_dependent_expr): Keep dereferences outside the NON_DEPENDENT_EXPR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171671 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0031-call.c-reference_binding-Allow-direct-binding-to-an-.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0031-call.c-reference_binding-Allow-direct-binding-to-an-.patch index a941c5d17..8c9305b43 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0031-call.c-reference_binding-Allow-direct-binding-to-an-.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0031-call.c-reference_binding-Allow-direct-binding-to-an-.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From af19d0c50df96adb55baaf54026ad82a9d256868 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:26:00 +0000 -Subject: [PATCH 031/200] * call.c (reference_binding): Allow direct binding to an array +Subject: [PATCH] * call.c (reference_binding): Allow direct binding to an array rvalue. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171672 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0032-Core-1232.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0032-Core-1232.patch index 4f2535a57..906867b05 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0032-Core-1232.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0032-Core-1232.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 1370bfdaf3735fc1038436cfc86b7cfe43d3eaf0 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:26:10 +0000 -Subject: [PATCH 032/200] Core 1232 +Subject: [PATCH] Core 1232 * call.c (build_array_conv): New. (implicit_conversion): Use it. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0033-semantics.c-is_valid_constexpr_fn-Specify-input-loca.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0033-semantics.c-is_valid_constexpr_fn-Specify-input-loca.patch index 70684de9b..0dbc76dd3 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0033-semantics.c-is_valid_constexpr_fn-Specify-input-loca.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0033-semantics.c-is_valid_constexpr_fn-Specify-input-loca.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 7ca62e4f7e0e27a4282dc14e5b89c389d5c194bb Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:26:21 +0000 -Subject: [PATCH 033/200] * semantics.c (is_valid_constexpr_fn): Specify input location. +Subject: [PATCH] * semantics.c (is_valid_constexpr_fn): Specify input location. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171674 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0034-PR-c-48296.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0034-PR-c-48296.patch index 58cdcb22b..5ad3ff7bf 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0034-PR-c-48296.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0034-PR-c-48296.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From d67703129d516043d4e43bdf79a17889f5abc3f7 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 14:26:33 +0000 -Subject: [PATCH 034/200] PR c++/48296 +Subject: [PATCH] PR c++/48296 * decl.c (cp_finish_decl): Defer validation of constexpr member functions. * class.c (finalize_literal_type_property): Validate them here. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0035-PR-c-48166.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0035-PR-c-48166.patch index 5be33c72e..12f45f3f0 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0035-PR-c-48166.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0035-PR-c-48166.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 709a81571cc3f418f51f95ed9291b4f2fabc577c Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 16:07:15 +0000 -Subject: [PATCH 035/200] PR c++/48166 +Subject: [PATCH] PR c++/48166 * decl.c (revert_static_member_fn): Strip function-cv-quals. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171679 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0037-config-alpha-alpha.c-alpha_sr_alias_set-Don-t-define.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0037-config-alpha-alpha.c-alpha_sr_alias_set-Don-t-define.patch index 03a15a029..b8891de46 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0037-config-alpha-alpha.c-alpha_sr_alias_set-Don-t-define.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0037-config-alpha-alpha.c-alpha_sr_alias_set-Don-t-define.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 14fb9260e8c94249305dba567e7e242ac3d30fa7 Mon Sep 17 00:00:00 2001 From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 18:24:02 +0000 -Subject: [PATCH 037/200] * config/alpha/alpha.c (alpha_sr_alias_set): Don't define. +Subject: [PATCH] * config/alpha/alpha.c (alpha_sr_alias_set): Don't define. (alpha_option_override): Don't set alpha_sr_alias_set. (emit_frame_store_1): Use gen_frame_mem rather than calling set_mem_alias_set. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0038-PR-c-48319.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0038-PR-c-48319.patch index bc6524cab..65ba7a514 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0038-PR-c-48319.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0038-PR-c-48319.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 4af193055b0dcc204387ba06e11a053c5b55ad15 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 18:47:47 +0000 -Subject: [PATCH 038/200] PR c++/48319 +Subject: [PATCH] PR c++/48319 * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171688 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0039-PR-preprocessor-48248.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0039-PR-preprocessor-48248.patch index eb441be22..a719be30b 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0039-PR-preprocessor-48248.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0039-PR-preprocessor-48248.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 0d6afd28da26c4b09e1eb2b16d7a3c021fae7372 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 20:30:06 +0000 -Subject: [PATCH 039/200] PR preprocessor/48248 +Subject: [PATCH] PR preprocessor/48248 * c-ppoutput.c (print): Add src_file field. (init_pp_output): Initialize it. (maybe_print_line): Don't optimize by adding up to 8 newlines diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0040-PR-debug-48253.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0040-PR-debug-48253.patch index a315d51c7..f161bc1a6 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0040-PR-debug-48253.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0040-PR-debug-48253.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From e4e229cd56063482aced7df857e82512b846435d Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 29 Mar 2011 22:47:59 +0000 -Subject: [PATCH 040/200] PR debug/48253 +Subject: [PATCH] PR debug/48253 * dwarf2out.c (struct dw_fde_struct): Remove dw_fde_hot_section_label, dw_fde_hot_section_end_label, dw_fde_unlikely_section_label, dw_fde_unlikely_section_end_label, cold_in_std_section, diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0042-PR-c-48265.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0042-PR-c-48265.patch index c9f747cf0..d4171b018 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0042-PR-c-48265.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0042-PR-c-48265.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ec2d33835ee5855060878da89d4051fa06af9e97 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 30 Mar 2011 02:16:37 +0000 -Subject: [PATCH 042/200] PR c++/48265 +Subject: [PATCH] PR c++/48265 * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure the variable is constant before looking at its initializer. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0043-Fix-a-typo-in-FLOAT_SSE_REGS.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0043-Fix-a-typo-in-FLOAT_SSE_REGS.patch index 0426d06bd..a0ec5bfcd 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0043-Fix-a-typo-in-FLOAT_SSE_REGS.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0043-Fix-a-typo-in-FLOAT_SSE_REGS.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 87c5c4ec5bee02725cb4bd4f81bb3c86a0277a81 Mon Sep 17 00:00:00 2001 From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 30 Mar 2011 10:43:55 +0000 -Subject: [PATCH 043/200] Fix a typo in FLOAT_SSE_REGS. +Subject: [PATCH] Fix a typo in FLOAT_SSE_REGS. 2011-03-30 H.J. Lu <hongjiu.lu@intel.com> diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0044-PR-c-48281.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0044-PR-c-48281.patch index adbfb4907..7f5f5aefd 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0044-PR-c-48281.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0044-PR-c-48281.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 541566b2d3b46207159abb1f59970bb11078e57e Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 30 Mar 2011 18:05:43 +0000 -Subject: [PATCH 044/200] PR c++/48281 +Subject: [PATCH] PR c++/48281 * semantics.c (finish_compound_literal): Do put static/constant arrays in static variables. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0045-PR-c-48369.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0045-PR-c-48369.patch index 6fc142334..37427cd36 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0045-PR-c-48369.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0045-PR-c-48369.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 61759009408d9f43af89eaeaff769a656416e1af Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 30 Mar 2011 19:50:17 +0000 -Subject: [PATCH 045/200] PR c++/48369 +Subject: [PATCH] PR c++/48369 * semantics.c (potential_constant_expression_1): Handle UNORDERED_EXPR and ORDERED_EXPR. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0046-PR-c-48212.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0046-PR-c-48212.patch index 8e7b42fdf..052a09041 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0046-PR-c-48212.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0046-PR-c-48212.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From f23bf88450af23287387d878036f78042093d61b Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 30 Mar 2011 20:29:43 +0000 -Subject: [PATCH 046/200] PR c++/48212 +Subject: [PATCH] PR c++/48212 * semantics.c (non_const_var_error): Just return if DECL_INITIAL is error_mark_node. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0048-2011-03-31-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0048-2011-03-31-Richard-Guenther-rguenther-suse.de.patch index a64e6f1ce..b81e42484 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0048-2011-03-31-Richard-Guenther-rguenther-suse.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0048-2011-03-31-Richard-Guenther-rguenther-suse.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From b3287343bd8870538aee70687286d78881ee8b81 Mon Sep 17 00:00:00 2001 From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 31 Mar 2011 10:00:44 +0000 -Subject: [PATCH 048/200] 2011-03-31 Richard Guenther <rguenther@suse.de> +Subject: [PATCH] 2011-03-31 Richard Guenther <rguenther@suse.de> PR lto/48246 * lto.c (lto_wpa_write_files): Disable assert for non-empty diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch index d6d469ff1..4c0420ace 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0049-PR-target-48142.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 18bc61fc490330f5dc59639626fa9bb5269e31d7 Mon Sep 17 00:00:00 2001 From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 31 Mar 2011 11:14:41 +0000 -Subject: [PATCH 049/200] PR target/48142 +Subject: [PATCH] PR target/48142 * config/i386/i386.c (ix86_adjust_stack_and_probe): Differentiate frame-related from frame-unrelated adjustments to the stack pointer. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0050-PR-target-16292.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0050-PR-target-16292.patch index b77504da2..f3f143bd7 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0050-PR-target-16292.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0050-PR-target-16292.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From e9265f24f30b22d79d2ea4013dd32a491a12d00c Mon Sep 17 00:00:00 2001 From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 31 Mar 2011 15:05:47 +0000 -Subject: [PATCH 050/200] PR target/16292 +Subject: [PATCH] PR target/16292 * gfortran.dg/g77/cabs.f: Only xfail execution on mips-sgi-irix6* with -O0. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0051-PR-c-48280.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0051-PR-c-48280.patch index ab9b933a7..f232a4263 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0051-PR-c-48280.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0051-PR-c-48280.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From c965b9c986732377eb96e00f7266e281f345a00b Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 31 Mar 2011 20:33:07 +0000 -Subject: [PATCH 051/200] PR c++/48280 +Subject: [PATCH] PR c++/48280 * method.c (defaultable_fn_check): Templates are not defaultable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171798 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0053-Merge-r171807-from-trunk-to-the-4.6-release-branch-t.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0053-Merge-r171807-from-trunk-to-the-4.6-release-branch-t.patch index bc6f4f1d3..e5c6b4a95 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0053-Merge-r171807-from-trunk-to-the-4.6-release-branch-t.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0053-Merge-r171807-from-trunk-to-the-4.6-release-branch-t.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 5e28e486dbc793184ca462b8b528f5eff3d4f2ef Mon Sep 17 00:00:00 2001 From: jyasskin <jyasskin@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 1 Apr 2011 01:07:46 +0000 -Subject: [PATCH 053/200] Merge r171807 from trunk to the 4.6 release branch, to fix two C++ +Subject: [PATCH] Merge r171807 from trunk to the 4.6 release branch, to fix two C++ conformance problems in libsupc++. Tested: bootstrap + make check-c++ on x86_64 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0054-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0054-Backport-from-mainline.patch index 19b3bbbdb..183189e5b 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0054-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0054-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From f8ae59386457b39085b086d04a8cd96e4450f167 Mon Sep 17 00:00:00 2001 From: abel <abel@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 1 Apr 2011 11:07:44 +0000 -Subject: [PATCH 054/200] Backport from mainline +Subject: [PATCH] Backport from mainline 2011-03-22 Andrey Belevantsev <abel@ispras.ru> PR rtl-optimization/48143 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0056-config-spu-t-spu-elf-dp-bit.c-Use-instead-of.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0056-config-spu-t-spu-elf-dp-bit.c-Use-instead-of.patch index 8f8b294da..34aa2cb3f 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0056-config-spu-t-spu-elf-dp-bit.c-Use-instead-of.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0056-config-spu-t-spu-elf-dp-bit.c-Use-instead-of.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 5b6ffdded3fd04395f72852e2a201d011d10a060 Mon Sep 17 00:00:00 2001 From: uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 1 Apr 2011 17:17:59 +0000 -Subject: [PATCH 056/200] * config/spu/t-spu-elf (dp-bit.c): Use > instead of >>. +Subject: [PATCH] * config/spu/t-spu-elf (dp-bit.c): Use > instead of >>. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171838 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0058-2011-04-02-Jonathan-Wakely-redi-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0058-2011-04-02-Jonathan-Wakely-redi-gcc.gnu.org.patch index eeb235927..ab07d2b74 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0058-2011-04-02-Jonathan-Wakely-redi-gcc.gnu.org.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0058-2011-04-02-Jonathan-Wakely-redi-gcc.gnu.org.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 0d43ff3bbc445b0264f804cd6449069182045678 Mon Sep 17 00:00:00 2001 From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 2 Apr 2011 15:34:01 +0000 -Subject: [PATCH 058/200] 2011-04-02 Jonathan Wakely <redi@gcc.gnu.org> +Subject: [PATCH] 2011-04-02 Jonathan Wakely <redi@gcc.gnu.org> PR libstdc++/48398 * include/bits/unique_ptr.h (__tuple_type): Store pointer type. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0060-be.po-da.po-de.po-el.po-es.po-fi.po-fr.po-id.po-ja.p.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0060-be.po-da.po-de.po-el.po-es.po-fi.po-fr.po-id.po-ja.p.patch index 82d3cdb53..5cfe7f58f 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0060-be.po-da.po-de.po-el.po-es.po-fi.po-fr.po-id.po-ja.p.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0060-be.po-da.po-de.po-el.po-es.po-fi.po-fr.po-id.po-ja.p.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ec0a81cb355c0fb165edd6eba2038cf77e5aae47 Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 3 Apr 2011 11:30:58 +0000 -Subject: [PATCH 060/200] * be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po, ja.po, +Subject: [PATCH] * be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po, ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, vi.po, zh_CN.po, zh_TW.po: Update. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0061-be.po-ca.po-da.po-de.po-el.po-es.po-fi.po-fr.po-id.p.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0061-be.po-ca.po-da.po-de.po-el.po-es.po-fi.po-fr.po-id.p.patch index 327e8cb50..fad123074 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0061-be.po-ca.po-da.po-de.po-el.po-es.po-fi.po-fr.po-id.p.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0061-be.po-ca.po-da.po-de.po-el.po-es.po-fi.po-fr.po-id.p.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 2f00fb35a87bcbae197b96a7259b1d94f3b4dc1f Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 3 Apr 2011 11:34:03 +0000 -Subject: [PATCH 061/200] * be.po, ca.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po, +Subject: [PATCH] * be.po, ca.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po, ja.po, nl.po, ru.po, sv.po, tr.po, uk,po, vi.po, zh_CN.po, zh_TW.po: Update. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0063-gfortran.dg-bessel_6.f90-Use-dg-add-options-ieee.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0063-gfortran.dg-bessel_6.f90-Use-dg-add-options-ieee.patch index 830ef446f..8bdd71dfa 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0063-gfortran.dg-bessel_6.f90-Use-dg-add-options-ieee.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0063-gfortran.dg-bessel_6.f90-Use-dg-add-options-ieee.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From e26756e1112552489e123c8ed7ed038beae89c5b Mon Sep 17 00:00:00 2001 From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 4 Apr 2011 15:55:33 +0000 -Subject: [PATCH 063/200] * gfortran.dg/bessel_6.f90: Use dg-add-options ieee. +Subject: [PATCH] * gfortran.dg/bessel_6.f90: Use dg-add-options ieee. * gfortran.dg/bessel_7.f90: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171940 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0064-2011-04-04-Janus-Weil-janus-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0064-2011-04-04-Janus-Weil-janus-gcc.gnu.org.patch index 67d68120e..1b94bd008 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0064-2011-04-04-Janus-Weil-janus-gcc.gnu.org.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0064-2011-04-04-Janus-Weil-janus-gcc.gnu.org.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ca7759868733b4570e496b889e711523640fc582 Mon Sep 17 00:00:00 2001 From: janus <janus@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 4 Apr 2011 18:53:34 +0000 -Subject: [PATCH 064/200] 2011-04-04 Janus Weil <janus@gcc.gnu.org> +Subject: [PATCH] 2011-04-04 Janus Weil <janus@gcc.gnu.org> PR fortran/48291 * class.c (get_unique_hashed_string): Adjust maximum allowable length diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0065-es.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0065-es.po-Update.patch index 8d919c3df..3342156f9 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0065-es.po-Update.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0065-es.po-Update.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 0e497997f5e241721dece71b322621d24abd4a04 Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 4 Apr 2011 22:20:34 +0000 -Subject: [PATCH 065/200] * es.po: Update. +Subject: [PATCH] * es.po: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171957 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0067-The-parameters-for-functions-from-the-frexp-family-w.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0067-The-parameters-for-functions-from-the-frexp-family-w.patch index 9f0f1785e..0df344f25 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0067-The-parameters-for-functions-from-the-frexp-family-w.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0067-The-parameters-for-functions-from-the-frexp-family-w.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 7a43b3a2e2c0d9cf557ac45577cc42c6d72e0065 Mon Sep 17 00:00:00 2001 From: baldrick <baldrick@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 5 Apr 2011 08:13:16 +0000 -Subject: [PATCH 067/200] The parameters for functions from the frexp family were the wrong way +Subject: [PATCH] The parameters for functions from the frexp family were the wrong way round. Swap them. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171972 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0068-2011-04-05-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0068-2011-04-05-Richard-Guenther-rguenther-suse.de.patch index 4e11bc443..13596b4d2 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0068-2011-04-05-Richard-Guenther-rguenther-suse.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0068-2011-04-05-Richard-Guenther-rguenther-suse.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 56a8ff0c197b4b0f917e3b50ac0dd3ed26f300c3 Mon Sep 17 00:00:00 2001 From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 5 Apr 2011 12:13:27 +0000 -Subject: [PATCH 068/200] 2011-04-05 Richard Guenther <rguenther@suse.de> +Subject: [PATCH] 2011-04-05 Richard Guenther <rguenther@suse.de> PR bootstrap/48431 * lto-plugin.c (claim_file_handler): Do not declare vars in code. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0069-stor-layout.c-self_referential_size-Fix-2010-07-13-c.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0069-stor-layout.c-self_referential_size-Fix-2010-07-13-c.patch index 09ffa08bd..dc2200698 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0069-stor-layout.c-self_referential_size-Fix-2010-07-13-c.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0069-stor-layout.c-self_referential_size-Fix-2010-07-13-c.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 6d713959cbb05f7cd030d776bb52113eac8af075 Mon Sep 17 00:00:00 2001 From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 5 Apr 2011 14:34:51 +0000 -Subject: [PATCH 069/200] * stor-layout.c (self_referential_size): Fix 2010-07-13 commit. +Subject: [PATCH] * stor-layout.c (self_referential_size): Fix 2010-07-13 commit. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171989 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0070-de.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0070-de.po-Update.patch index 248e5e5f1..5e11a1828 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0070-de.po-Update.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0070-de.po-Update.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 66ebb4822dae1fd3c97ee62f9126615818150966 Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 5 Apr 2011 23:08:59 +0000 -Subject: [PATCH 070/200] * de.po: Update. +Subject: [PATCH] * de.po: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172010 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0072-gcov-io.c-Use-GCC-Runtime-Library-Exception.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0072-gcov-io.c-Use-GCC-Runtime-Library-Exception.patch index 09fdeef73..180713faf 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0072-gcov-io.c-Use-GCC-Runtime-Library-Exception.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0072-gcov-io.c-Use-GCC-Runtime-Library-Exception.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 578ce9461ebac7a6ec001c0025e0b854385ec39c Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 6 Apr 2011 16:05:18 +0000 -Subject: [PATCH 072/200] * gcov-io.c: Use GCC Runtime Library Exception. +Subject: [PATCH] * gcov-io.c: Use GCC Runtime Library Exception. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172054 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0073-Backported-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0073-Backported-from-mainline.patch index 0c6a5438c..225c48f33 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0073-Backported-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0073-Backported-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From e86c60e8bb9da37bfbef63315f38d5154035392d Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 6 Apr 2011 20:39:20 +0000 -Subject: [PATCH 073/200] Backported from mainline +Subject: [PATCH] Backported from mainline 2011-04-01 Jakub Jelinek <jakub@redhat.com> PR middle-end/48335 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0074-PR-debug-48466.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0074-PR-debug-48466.patch index b4b0be656..de075d6fc 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0074-PR-debug-48466.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0074-PR-debug-48466.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From da3ed31e2090c6b8236bbc3be69433aca0d445f1 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 6 Apr 2011 20:40:24 +0000 -Subject: [PATCH 074/200] PR debug/48466 +Subject: [PATCH] PR debug/48466 * dwarf2out.c (based_loc_descr): If drap_reg is INVALID_REGNUM, use as base_reg whatever register reg has been eliminated to, instead of hardcoding STACK_POINTER_REGNUM. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0076-Merge-r172073-from-trunk-to-the-4.6-release-branch-t.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0076-Merge-r172073-from-trunk-to-the-4.6-release-branch-t.patch index a8846553c..52a25836d 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0076-Merge-r172073-from-trunk-to-the-4.6-release-branch-t.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0076-Merge-r172073-from-trunk-to-the-4.6-release-branch-t.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 3329b7447ab817bb0374a689f3b381a5781ed8aa Mon Sep 17 00:00:00 2001 From: jyasskin <jyasskin@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 7 Apr 2011 04:50:23 +0000 -Subject: [PATCH 076/200] Merge r172073 from trunk to the 4.6 release branch, to fix two +Subject: [PATCH] Merge r172073 from trunk to the 4.6 release branch, to fix two ambiguities between extensions and new C++0x functions. Tested: bootstrap + make check-c++ on x86_64 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch index 48335d8b6..681d4b0e4 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 354f280d6446d87730bacabf798f88a7aedd1af1 Mon Sep 17 00:00:00 2001 From: abel <abel@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 7 Apr 2011 12:07:24 +0000 -Subject: [PATCH 077/200] Backport from mainline +Subject: [PATCH] Backport from mainline 2011-03-26 Andrey Belevantsev <abel@ispras.ru> PR rtl-optimization/48144 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0078-de.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0078-de.po-Update.patch index cb564498b..34bcf3848 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0078-de.po-Update.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0078-de.po-Update.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From cd0f7d2692283fbf5dfce422da2896a07fc3ea3f Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 7 Apr 2011 16:31:06 +0000 -Subject: [PATCH 078/200] * de.po: Update. +Subject: [PATCH] * de.po: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172104 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0079-PR-debug-48343.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0079-PR-debug-48343.patch index a9419dd16..1f10f50ce 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0079-PR-debug-48343.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0079-PR-debug-48343.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 1e8081c83aa5101ccca523ce8448282bece491ff Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 7 Apr 2011 18:05:08 +0000 -Subject: [PATCH 079/200] PR debug/48343 +Subject: [PATCH] PR debug/48343 * combine.c (combine_instructions): Add last_combined_insn, update it if insn is after it, pass it to all try_combine calls. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0080-PR-fortran-48117.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0080-PR-fortran-48117.patch index aa81ccfbb..20cb4fc9f 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0080-PR-fortran-48117.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0080-PR-fortran-48117.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 95333dcb51a2099d45b792b945fd9c0a2f8febab Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 7 Apr 2011 18:33:34 +0000 -Subject: [PATCH 080/200] PR fortran/48117 +Subject: [PATCH] PR fortran/48117 * gfortran.dg/gomp/pr48117.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172120 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0081-config-i386-sse.md-Update-copyright-year.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0081-config-i386-sse.md-Update-copyright-year.patch index 860842d8a..4ddce2690 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0081-config-i386-sse.md-Update-copyright-year.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0081-config-i386-sse.md-Update-copyright-year.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ac4ab0911ae869e3cd4c00629e3c4d4d0b7e7aa6 Mon Sep 17 00:00:00 2001 From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 7 Apr 2011 20:46:50 +0000 -Subject: [PATCH 081/200] * config/i386/sse.md: Update copyright year. +Subject: [PATCH] * config/i386/sse.md: Update copyright year. (avx_cmp<ssescalarmodesuffix><mode>3): Add missing output register constraint. (*vec_concatv2sf_avx): Fix wrong register constraint in diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0082-gcc.dg-torture-stackalign-non-local-goto-5.c-Fix-for.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0082-gcc.dg-torture-stackalign-non-local-goto-5.c-Fix-for.patch index 89b5f7dd8..e5dbb7dca 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0082-gcc.dg-torture-stackalign-non-local-goto-5.c-Fix-for.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0082-gcc.dg-torture-stackalign-non-local-goto-5.c-Fix-for.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 5430ea55f853566272279cbd5bb20a2dd5bd7a51 Mon Sep 17 00:00:00 2001 From: mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 7 Apr 2011 21:33:47 +0000 -Subject: [PATCH 082/200] * gcc.dg/torture/stackalign/non-local-goto-5.c: Fix for targets +Subject: [PATCH] * gcc.dg/torture/stackalign/non-local-goto-5.c: Fix for targets with no trampolines. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172135 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch index 5c9682f6e..603b91ebd 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From eba70fb9976ef047a8fb8dc6499c42e8fd3551f7 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 8 Apr 2011 11:45:29 +0000 -Subject: [PATCH 084/200] PR tree-optimization/48377 +Subject: [PATCH] PR tree-optimization/48377 * tree-vect-data-refs.c (vector_alignment_reachable_p): Set is_packed to true even for types with smaller TYPE_ALIGN than TYPE_SIZE. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0085-de.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0085-de.po-Update.patch index 73643f702..132e8fbdc 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0085-de.po-Update.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0085-de.po-Update.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From dc6361adc966b10875fbfafff9652dcc4043df58 Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 8 Apr 2011 14:29:58 +0000 -Subject: [PATCH 085/200] * de.po: Update. +Subject: [PATCH] * de.po: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172188 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0086-PR-c-48450.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0086-PR-c-48450.patch index a2628b757..0b496311e 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0086-PR-c-48450.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0086-PR-c-48450.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From a5e7415bfbe41941768106dc5819bf3fff1b8435 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 8 Apr 2011 15:01:50 +0000 -Subject: [PATCH 086/200] PR c++/48450 +Subject: [PATCH] PR c++/48450 * c-family/c-common.c (c_common_truthvalue_conversion): Don't ignore conversion from C++0x scoped enum. * cp/cvt.c (ocp_convert): Handle converting scoped enum to bool. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0087-semantics.c-finish_decltype_type-Add-complain-parm.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0087-semantics.c-finish_decltype_type-Add-complain-parm.patch index ebae4eb30..37352272c 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0087-semantics.c-finish_decltype_type-Add-complain-parm.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0087-semantics.c-finish_decltype_type-Add-complain-parm.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 2f7a2d284d42cfbff01ee024af4cbaeaff766ee5 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 8 Apr 2011 15:02:00 +0000 -Subject: [PATCH 087/200] * semantics.c (finish_decltype_type): Add complain parm. +Subject: [PATCH] * semantics.c (finish_decltype_type): Add complain parm. * cp-tree.h: Adjust. * parser.c (cp_parser_decltype): Adjust. * pt.c (tsubst): Adjust. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0088-PR-c-48452.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0088-PR-c-48452.patch index 54df8423c..3ce8b55c6 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0088-PR-c-48452.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0088-PR-c-48452.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 92860ca75ea3cbb7223913d121c60cc56c966794 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 8 Apr 2011 15:02:08 +0000 -Subject: [PATCH 088/200] PR c++/48452 +Subject: [PATCH] PR c++/48452 * typeck.c (build_x_compound_expr_from_list): Return error_mark_node in SFINAE context. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0089-PR-c-48468.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0089-PR-c-48468.patch index aea2ac1b1..92e4ed875 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0089-PR-c-48468.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0089-PR-c-48468.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 4215154488607abf1ee95f1d1f03cb66be4bd4d8 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 8 Apr 2011 15:02:16 +0000 -Subject: [PATCH 089/200] PR c++/48468 +Subject: [PATCH] PR c++/48468 * except.c (build_noexcept_spec): Propagate error_mark_node. (finish_noexcept_expr): Likewise. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0090-PR-c-48500.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0090-PR-c-48500.patch index 0e3ddc691..cec878e0a 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0090-PR-c-48500.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0090-PR-c-48500.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From c9ec81bbd73666b97ab9049b759b5ab8d0e06681 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 8 Apr 2011 15:02:28 +0000 -Subject: [PATCH 090/200] PR c++/48500 +Subject: [PATCH] PR c++/48500 * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check arguments even if we don't know the function. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0091-2011-04-08-Steven-G.-Kargl-kargl-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0091-2011-04-08-Steven-G.-Kargl-kargl-gcc.gnu.org.patch index 65e085b7f..8e9ccbf1c 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0091-2011-04-08-Steven-G.-Kargl-kargl-gcc.gnu.org.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0091-2011-04-08-Steven-G.-Kargl-kargl-gcc.gnu.org.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 6b290e64ee2bbe7974ee43ce49297ee9496f18d6 Mon Sep 17 00:00:00 2001 From: kargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 8 Apr 2011 21:41:35 +0000 -Subject: [PATCH 091/200] 2011-04-08 Steven G. Kargl <kargl@gcc.gnu.org> +Subject: [PATCH] 2011-04-08 Steven G. Kargl <kargl@gcc.gnu.org> PR target/47829 gcc/config.gcc: disable unwind table generation for crtbegin/crtend diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0092-PR-testsuite-48506.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0092-PR-testsuite-48506.patch index c4d7ada7b..16a84d3d7 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0092-PR-testsuite-48506.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0092-PR-testsuite-48506.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From fcc3e3a4ba3138d25c93ba5f996cac1660788bb9 Mon Sep 17 00:00:00 2001 From: mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 8 Apr 2011 23:56:45 +0000 -Subject: [PATCH 092/200] PR testsuite/48506 +Subject: [PATCH] PR testsuite/48506 * gcc.dg/tree-ssa/ssa-ccp-17.c: Robustify against ports that default to fno-common. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0094-Bail-out-rather-than-crashing-in-array_type_nelts-if.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0094-Bail-out-rather-than-crashing-in-array_type_nelts-if.patch index 4111e3396..a78712e40 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0094-Bail-out-rather-than-crashing-in-array_type_nelts-if.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0094-Bail-out-rather-than-crashing-in-array_type_nelts-if.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 8216e1c4c23928723f8e1583bf7e014813bb2c07 Mon Sep 17 00:00:00 2001 From: baldrick <baldrick@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 9 Apr 2011 16:14:07 +0000 -Subject: [PATCH 094/200] Bail out rather than crashing in array_type_nelts if TYPE_MAX_VALUE is null. +Subject: [PATCH] Bail out rather than crashing in array_type_nelts if TYPE_MAX_VALUE is null. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172226 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0095-PR-c-48528.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0095-PR-c-48528.patch index b895bb6b6..f332db93e 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0095-PR-c-48528.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0095-PR-c-48528.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From f96c29b23a4f631242aae823f9735a33e8e1cf0a Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 9 Apr 2011 19:04:11 +0000 -Subject: [PATCH 095/200] PR c++/48528 +Subject: [PATCH] PR c++/48528 * g++.dg/cpp0x/sfinae10.C: Remove abstract class. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172230 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0097-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0097-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch index a2d14715d..7baf0885d 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0097-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0097-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 7d736b8d0fb4f7892a5646ca3581b9ab01cb2971 Mon Sep 17 00:00:00 2001 From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 10 Apr 2011 16:19:41 +0000 -Subject: [PATCH 097/200] 2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com> +Subject: [PATCH] 2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com> PR libstdc++/48465 * configure.ac (libtool_VERSION): Bump library version to 6:16:0. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0098-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0098-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch index d3d2cea6c..5c0823f19 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0098-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0098-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From f6e12aec843ba3a839f49b60a5ca092f2fadd876 Mon Sep 17 00:00:00 2001 From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 10 Apr 2011 16:29:05 +0000 -Subject: [PATCH 098/200] 2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com> +Subject: [PATCH] 2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com> PR libstdc++/48541 * include/std/functional (_Base_manager::_M_get_pointer): Use diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0099-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0099-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch index b130a11ea..ede4e4c91 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0099-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0099-2011-04-10-Jonathan-Wakely-jwakely.gcc-gmail.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 2173abe5d6f3f3157317caa470226e13827c3df9 Mon Sep 17 00:00:00 2001 From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 10 Apr 2011 16:34:34 +0000 -Subject: [PATCH 099/200] 2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com> +Subject: [PATCH] 2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com> * testsuite/20_util/function/48451.cc: Rename to... * testsuite/20_util/function/48541.cc: This. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0101-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0101-Backport-from-mainline.patch index c154c2d65..467d878f5 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0101-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0101-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 0344e764781d1c1b27f07f6f973b9797d8d6285c Mon Sep 17 00:00:00 2001 From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 11 Apr 2011 10:42:23 +0000 -Subject: [PATCH 101/200] Backport from mainline: +Subject: [PATCH] Backport from mainline: 2011-04-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * config/alpha/osf5.h (MAX_OFILE_ALIGNMENT): Define. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0102-common.opt-Tbss-Tdata-Ttext-New-options.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0102-common.opt-Tbss-Tdata-Ttext-New-options.patch index 786e3a7b8..6842c3b8b 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0102-common.opt-Tbss-Tdata-Ttext-New-options.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0102-common.opt-Tbss-Tdata-Ttext-New-options.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ec818a73c8e43d77fefc29593ef84e69b0cac39e Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 11 Apr 2011 15:26:47 +0000 -Subject: [PATCH 102/200] * common.opt (Tbss=, Tdata=, Ttext=): New options. +Subject: [PATCH] * common.opt (Tbss=, Tdata=, Ttext=): New options. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172260 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0104-PR-c-48523.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0104-PR-c-48523.patch index bc3dac0e4..01836716e 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0104-PR-c-48523.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0104-PR-c-48523.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 514b92d849b08f3fb7a8194a822b0b8609776564 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 12 Apr 2011 00:20:18 +0000 -Subject: [PATCH 104/200] PR c++/48523 +Subject: [PATCH] PR c++/48523 * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather than cp_build_indirect_ref. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0105-PR-c-48534.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0105-PR-c-48534.patch index 24e527ef2..9f0b5bdd3 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0105-PR-c-48534.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0105-PR-c-48534.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 373ffb66c10a25abb4c48a027fea4e6cf8c4cc5d Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 12 Apr 2011 00:20:32 +0000 -Subject: [PATCH 105/200] PR c++/48534 +Subject: [PATCH] PR c++/48534 * cvt.c (ocp_convert): Use build_nop to convert to underlying type of scoped enum. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0106-PR-c-48517.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0106-PR-c-48517.patch index a043e7509..01c9868d7 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0106-PR-c-48517.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0106-PR-c-48517.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From b58a503c5dbde32cbb9bd48ea16ff868d2023cf9 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 12 Apr 2011 06:53:13 +0000 -Subject: [PATCH 106/200] PR c/48517 +Subject: [PATCH] PR c/48517 * c-typeck.c (store_init_value): Set TREE_TYPE (decl) to qualified type. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0107-2011-04-12-Allan-McRae-allan-archlinux.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0107-2011-04-12-Allan-McRae-allan-archlinux.org.patch index ff8d43a7a..7e5e49041 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0107-2011-04-12-Allan-McRae-allan-archlinux.org.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0107-2011-04-12-Allan-McRae-allan-archlinux.org.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 872b1920a12548af70c3866daadc4a67d05416b1 Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 12 Apr 2011 09:05:41 +0000 -Subject: [PATCH 107/200] 2011-04-12 Allan McRae <allan@archlinux.org> +Subject: [PATCH] 2011-04-12 Allan McRae <allan@archlinux.org> PR libstdc++/48566 * testsuite/tr1/6_containers/unordered_map/requirements/ diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0108-config-v850-v850.c-expand_prologue-Do-not-use-the-CA.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0108-config-v850-v850.c-expand_prologue-Do-not-use-the-CA.patch index 033a5ce26..bbe4dbf6c 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0108-config-v850-v850.c-expand_prologue-Do-not-use-the-CA.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0108-config-v850-v850.c-expand_prologue-Do-not-use-the-CA.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From a03834fec84b808ccef5c0abb5c35d069d7ad868 Mon Sep 17 00:00:00 2001 From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 12 Apr 2011 11:33:07 +0000 -Subject: [PATCH 108/200] * config/v850/v850.c (expand_prologue): Do not use the CALLT +Subject: [PATCH] * config/v850/v850.c (expand_prologue): Do not use the CALLT instruction for interrupt handlers if the target is the basic V850 architecture. (expand_epilogue): Likewise. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0109-PR-rtl-optimization-48549.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0109-PR-rtl-optimization-48549.patch index c0b3f6352..03b711973 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0109-PR-rtl-optimization-48549.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0109-PR-rtl-optimization-48549.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 5b05a527f1368e4ca9f71a8ec8124a2c64661007 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 12 Apr 2011 13:44:33 +0000 -Subject: [PATCH 109/200] PR rtl-optimization/48549 +Subject: [PATCH] PR rtl-optimization/48549 * combine.c (propagate_for_debug): Also stop after BB_END of this_basic_block. Process LAST and just stop processing after it. (combine_instructions): If last_combined_insn has been deleted, diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0110-2011-04-12-Martin-Jambor-mjambor-suse.cz.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0110-2011-04-12-Martin-Jambor-mjambor-suse.cz.patch index 231d8a497..663c657fe 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0110-2011-04-12-Martin-Jambor-mjambor-suse.cz.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0110-2011-04-12-Martin-Jambor-mjambor-suse.cz.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From abf56c82ebcb8ba287fc69b8961af55b4541a130 Mon Sep 17 00:00:00 2001 From: jamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 12 Apr 2011 18:31:55 +0000 -Subject: [PATCH 110/200] 2011-04-12 Martin Jambor <mjambor@suse.cz> +Subject: [PATCH] 2011-04-12 Martin Jambor <mjambor@suse.cz> PR tree-optimization/48195 * ipa-cp.c (ipcp_driver): Call ipa_check_create_node_params and diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0112-Fix-PR-target-48090.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0112-Fix-PR-target-48090.patch index 7f25740c8..157939b73 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0112-Fix-PR-target-48090.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0112-Fix-PR-target-48090.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 811af0cad0121e89e3a3908dd71ca32187281e19 Mon Sep 17 00:00:00 2001 From: ramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 13 Apr 2011 07:41:08 +0000 -Subject: [PATCH 112/200] Fix PR target/48090 +Subject: [PATCH] Fix PR target/48090 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172363 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0113-Fix-PR-c-48574.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0113-Fix-PR-c-48574.patch index c1a2c70b8..cfdf11a39 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0113-Fix-PR-c-48574.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0113-Fix-PR-c-48574.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From a236530cd5ac2466b1ca3b510b6bdb493c7b5342 Mon Sep 17 00:00:00 2001 From: dodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 13 Apr 2011 15:19:40 +0000 -Subject: [PATCH 113/200] Fix PR c++/48574 +Subject: [PATCH] Fix PR c++/48574 gcc/cp/ diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0114-PR-c-48570.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0114-PR-c-48570.patch index eeacb1fcd..c047fbfd0 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0114-PR-c-48570.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0114-PR-c-48570.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 235c1ad4230b29a189d4300841c4d8c3dd144388 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 13 Apr 2011 15:47:40 +0000 -Subject: [PATCH 114/200] PR c++/48570 +Subject: [PATCH] PR c++/48570 * semantics.c (cxx_eval_array_reference): Handle reading from wchar_t, char16_t and char32_t STRING_CST. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0115-PR-middle-end-48591.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0115-PR-middle-end-48591.patch index 00a50a76a..5401697e8 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0115-PR-middle-end-48591.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0115-PR-middle-end-48591.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From f16c1783b4b2c93a42eb36b4f136ec46bd3ce834 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 13 Apr 2011 15:52:17 +0000 -Subject: [PATCH 115/200] PR middle-end/48591 +Subject: [PATCH] PR middle-end/48591 * omp-low.c (expand_omp_atomic_fetch_op): Return false if decl is NULL. (expand_omp_atomic_pipeline): Return false if cmpxchg is NULL. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0116-2011-04-13-Paul-Thomas-pault-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0116-2011-04-13-Paul-Thomas-pault-gcc.gnu.org.patch index 677c07601..6d6650ea1 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0116-2011-04-13-Paul-Thomas-pault-gcc.gnu.org.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0116-2011-04-13-Paul-Thomas-pault-gcc.gnu.org.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 348c7b9400ed5fe0d8c3c077f8223ca359bed036 Mon Sep 17 00:00:00 2001 From: pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 13 Apr 2011 18:38:17 +0000 -Subject: [PATCH 116/200] 2011-04-13 Paul Thomas <pault@gcc.gnu.org> +Subject: [PATCH] 2011-04-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/48360 PR fortran/48456 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0117-PR-c-48594.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0117-PR-c-48594.patch index 75caa99d8..4da2ed399 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0117-PR-c-48594.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0117-PR-c-48594.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From b711bf8d9e6f7b717bb87fa7a3514692efdecfaf Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 13 Apr 2011 20:51:23 +0000 -Subject: [PATCH 117/200] PR c++/48594 +Subject: [PATCH] PR c++/48594 * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor or pointer to (non-member) function. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0118-sv.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0118-sv.po-Update.patch index fb5a1f9bf..28d76e6b6 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0118-sv.po-Update.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0118-sv.po-Update.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From d744e56ec8412e410b993c2ab4af3c230bbd363b Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 13 Apr 2011 22:08:21 +0000 -Subject: [PATCH 118/200] * sv.po: Update. +Subject: [PATCH] * sv.po: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172399 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0119-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0119-Backport-from-mainline.patch index dad8e6016..400ac23ef 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0119-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0119-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ede3baf6fc1fe4972344051051daff1043f90ce3 Mon Sep 17 00:00:00 2001 From: danglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 13 Apr 2011 22:36:59 +0000 -Subject: [PATCH 119/200] Backport from mainline: +Subject: [PATCH] Backport from mainline: 2011-04-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> PR target/48366 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0122-PR-target-48605.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0122-PR-target-48605.patch index 2d6824171..25957cdf1 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0122-PR-target-48605.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0122-PR-target-48605.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From cad5b42c7c890058535eb7bc8c3766f03d428f59 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 15 Apr 2011 10:21:00 +0000 -Subject: [PATCH 122/200] PR target/48605 +Subject: [PATCH] PR target/48605 * config/i386/sse.md (avx_insertps, sse4_1_insertps): If operands[2] is a MEM, offset it as needed based on top 2 bits in operands[3], change MEM mode to SFmode and mask those 2 bits away from operands[3]. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0123-PR-target-48614.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0123-PR-target-48614.patch index 2a8dec62b..174b19515 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0123-PR-target-48614.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0123-PR-target-48614.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 13a531dde8ee181ad9e8aeb6b755ca52f261bef8 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 15 Apr 2011 10:29:58 +0000 -Subject: [PATCH 123/200] PR target/48614 +Subject: [PATCH] PR target/48614 * gcc.target/i386/pr46084.c: Require avx_runtime instead of just avx. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0124-2011-04-15-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0124-2011-04-15-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch index e912b81f8..c09a2ae50 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0124-2011-04-15-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0124-2011-04-15-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From d3cce0bbf7e327905965f0fae70b04af08bfb64b Mon Sep 17 00:00:00 2001 From: krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 15 Apr 2011 12:43:40 +0000 -Subject: [PATCH 124/200] 2011-04-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> +Subject: [PATCH] 2011-04-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> * config/s390/s390.md (popcountdi2, popcountsi2, popcounthi2): Replace match_operand with match_dup for the third operand in diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0125-2011-04-15-Takaya-Saito-gintensubaru-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0125-2011-04-15-Takaya-Saito-gintensubaru-gmail.com.patch index ecf212707..3927b0217 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0125-2011-04-15-Takaya-Saito-gintensubaru-gmail.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0125-2011-04-15-Takaya-Saito-gintensubaru-gmail.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 95c034f0075055720f37e340fd008d8d7cb45b4e Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 15 Apr 2011 14:52:57 +0000 -Subject: [PATCH 125/200] 2011-04-15 Takaya Saito <gintensubaru@gmail.com> +Subject: [PATCH] 2011-04-15 Takaya Saito <gintensubaru@gmail.com> PR libstdc++/48476 * include/std/tuple (_Tuple_impl<>::_Tuple_impl(_Tuple_impl<>&&), diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0126-2011-04-15-Paolo-Carlini-paolo.carlini-oracle.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0126-2011-04-15-Paolo-Carlini-paolo.carlini-oracle.com.patch index 1534bdc9d..697009494 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0126-2011-04-15-Paolo-Carlini-paolo.carlini-oracle.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0126-2011-04-15-Paolo-Carlini-paolo.carlini-oracle.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 6cd1f8146545d6f82269c9a96a05438a06fcdc1a Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 15 Apr 2011 16:19:39 +0000 -Subject: [PATCH 126/200] 2011-04-15 Paolo Carlini <paolo.carlini@oracle.com> +Subject: [PATCH] 2011-04-15 Paolo Carlini <paolo.carlini@oracle.com> * include/std/istream: Fix comments in the light of DR60 + N3168. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0127-testsuite-libjava.jni-jni.exp-gcj_jni_get_cxxflags_i.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0127-testsuite-libjava.jni-jni.exp-gcj_jni_get_cxxflags_i.patch index 174b747ee..42fe3474d 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0127-testsuite-libjava.jni-jni.exp-gcj_jni_get_cxxflags_i.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0127-testsuite-libjava.jni-jni.exp-gcj_jni_get_cxxflags_i.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 37bc32c009317c62516117bfb2c9b49772b159af Mon Sep 17 00:00:00 2001 From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 15 Apr 2011 17:17:18 +0000 -Subject: [PATCH 127/200] * testsuite/libjava.jni/jni.exp (gcj_jni_get_cxxflags_invocation): +Subject: [PATCH] * testsuite/libjava.jni/jni.exp (gcj_jni_get_cxxflags_invocation): Add $libiconv to cxxflags for alpha*-dec-osf*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172508 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0129-2011-04-15-Daniel-Krugler-daniel.kruegler-googlemail.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0129-2011-04-15-Daniel-Krugler-daniel.kruegler-googlemail.patch index beb1ef86a..1897e5efc 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0129-2011-04-15-Daniel-Krugler-daniel.kruegler-googlemail.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0129-2011-04-15-Daniel-Krugler-daniel.kruegler-googlemail.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 2ce87b6b9c9143a22381eec77bbf1fd7016e132d Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 16 Apr 2011 00:55:53 +0000 -Subject: [PATCH 129/200] 2011-04-15 Daniel Krugler <daniel.kruegler@googlemail.com> +Subject: [PATCH] 2011-04-15 Daniel Krugler <daniel.kruegler@googlemail.com> Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/48635 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0130-2011-04-15-Daniel-Krugler-daniel.kruegler-googlemail.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0130-2011-04-15-Daniel-Krugler-daniel.kruegler-googlemail.patch index b979bbe2d..53cc49a89 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0130-2011-04-15-Daniel-Krugler-daniel.kruegler-googlemail.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0130-2011-04-15-Daniel-Krugler-daniel.kruegler-googlemail.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From fffee2aba06d51178d5c653db0acd6c775a0326b Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 16 Apr 2011 02:04:56 +0000 -Subject: [PATCH 130/200] 2011-04-15 Daniel Krugler <daniel.kruegler@googlemail.com> +Subject: [PATCH] 2011-04-15 Daniel Krugler <daniel.kruegler@googlemail.com> Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/48631 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0132-PR-lto-48538.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0132-PR-lto-48538.patch index 754efbd9e..36472c593 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0132-PR-lto-48538.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0132-PR-lto-48538.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From aeb8275b52616d86410149e8500839115f9c0b8b Mon Sep 17 00:00:00 2001 From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 17 Apr 2011 14:58:03 +0000 -Subject: [PATCH 132/200] PR lto/48538 +Subject: [PATCH] PR lto/48538 * lto-cgraph.c (merge_profile_summaries): Check that lto_file_data is non-null before accessing it. (input_cgraph): Remove trailing spaces. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0133-config-sparc-freebsd.h-CPP_CPU64_DEFAULT_SPEC-Replac.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0133-config-sparc-freebsd.h-CPP_CPU64_DEFAULT_SPEC-Replac.patch index e16e3aa1e..8b982675d 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0133-config-sparc-freebsd.h-CPP_CPU64_DEFAULT_SPEC-Replac.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0133-config-sparc-freebsd.h-CPP_CPU64_DEFAULT_SPEC-Replac.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From a8765482b00b7e1774f72c7def19ca711636e1d1 Mon Sep 17 00:00:00 2001 From: gerald <gerald@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 17 Apr 2011 21:34:29 +0000 -Subject: [PATCH 133/200] * config/sparc/freebsd.h (CPP_CPU64_DEFAULT_SPEC): Replace with... +Subject: [PATCH] * config/sparc/freebsd.h (CPP_CPU64_DEFAULT_SPEC): Replace with... (FBSD_TARGET_CPU_CPP_BUILTINS): ...this. (TARGET_GNU_TLS, TARGET_SUN_TLS): Define. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0134-2011-04-17-Daniel-Krugler-daniel.kruegler-googlemail.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0134-2011-04-17-Daniel-Krugler-daniel.kruegler-googlemail.patch index 177afa2ce..471d4d3db 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0134-2011-04-17-Daniel-Krugler-daniel.kruegler-googlemail.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0134-2011-04-17-Daniel-Krugler-daniel.kruegler-googlemail.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 1934cdd502a4bad6e1c54c4206b9361909f01083 Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 17 Apr 2011 21:46:20 +0000 -Subject: [PATCH 134/200] 2011-04-17 Daniel Krugler <daniel.kruegler@googlemail.com> +Subject: [PATCH] 2011-04-17 Daniel Krugler <daniel.kruegler@googlemail.com> Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/48635 (again) diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0135-doc-passes.texi-Fill-crossref-nodes.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0135-doc-passes.texi-Fill-crossref-nodes.patch index cb8ab1a1a..9925a2cd8 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0135-doc-passes.texi-Fill-crossref-nodes.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0135-doc-passes.texi-Fill-crossref-nodes.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 54907dbd122d6e4661b9583247e5574b9349c130 Mon Sep 17 00:00:00 2001 From: gerald <gerald@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 17 Apr 2011 21:59:00 +0000 -Subject: [PATCH 135/200] * doc/passes.texi: Fill crossref nodes. +Subject: [PATCH] * doc/passes.texi: Fill crossref nodes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172621 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0136-gcc-interface-Make-lang.in-gnatbind-Replace-ALL_CFLA.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0136-gcc-interface-Make-lang.in-gnatbind-Replace-ALL_CFLA.patch index c9a38e0c3..84a5f480d 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0136-gcc-interface-Make-lang.in-gnatbind-Replace-ALL_CFLA.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0136-gcc-interface-Make-lang.in-gnatbind-Replace-ALL_CFLA.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 03b47392e5f3af2fe5ef4ad1f5fc9cca47604945 Mon Sep 17 00:00:00 2001 From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 17 Apr 2011 22:29:13 +0000 -Subject: [PATCH 136/200] * gcc-interface/Make-lang.in (gnatbind): Replace $(ALL_CFLAGS) with +Subject: [PATCH] * gcc-interface/Make-lang.in (gnatbind): Replace $(ALL_CFLAGS) with $(CFLAGS) on the link line. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172623 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0138-PR-tree-optimization-48616.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0138-PR-tree-optimization-48616.patch index c3d271fba..ecb371681 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0138-PR-tree-optimization-48616.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0138-PR-tree-optimization-48616.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 45a8b16e2be6b6ff5d37d43e86a6e2fce5cfb79d Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 18 Apr 2011 07:38:11 +0000 -Subject: [PATCH 138/200] PR tree-optimization/48616 +Subject: [PATCH] PR tree-optimization/48616 * tree-vect-stmts.c (vectorizable_shift): If SLP, determine whether the shift is by scalar or vector based on whether all SLP scalar stmts have the same rhs. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0139-2011-04-18-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0139-2011-04-18-Richard-Guenther-rguenther-suse.de.patch index a14ee29f3..c79804c25 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0139-2011-04-18-Richard-Guenther-rguenther-suse.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0139-2011-04-18-Richard-Guenther-rguenther-suse.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 68e7b8b6643a4c50a8527610dbf5a7ab36cc8f24 Mon Sep 17 00:00:00 2001 From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 18 Apr 2011 14:25:57 +0000 -Subject: [PATCH 139/200] 2011-04-18 Richard Guenther <rguenther@suse.de> +Subject: [PATCH] 2011-04-18 Richard Guenther <rguenther@suse.de> PR middle-end/46364 * g++.dg/torture/pr46364.C: New testcase. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0140-PR-47571-Fix-weakref-trickery-breakage-on-alpha-dec-.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0140-PR-47571-Fix-weakref-trickery-breakage-on-alpha-dec-.patch index 5860b1907..c8be19ee5 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0140-PR-47571-Fix-weakref-trickery-breakage-on-alpha-dec-.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0140-PR-47571-Fix-weakref-trickery-breakage-on-alpha-dec-.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 137ed44dcdd5890433b8d0348dcd2b7624b7c3d6 Mon Sep 17 00:00:00 2001 From: jb <jb@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 18 Apr 2011 15:49:16 +0000 -Subject: [PATCH 140/200] PR 47571 Fix weakref trickery breakage on alpha-dec-osf +Subject: [PATCH] PR 47571 Fix weakref trickery breakage on alpha-dec-osf This is a backport from mainline r172469. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0141-dwarf2out.c-is_redundant_typedef-Add-inline-to-proto.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0141-dwarf2out.c-is_redundant_typedef-Add-inline-to-proto.patch index 7483afe28..282a669b2 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0141-dwarf2out.c-is_redundant_typedef-Add-inline-to-proto.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0141-dwarf2out.c-is_redundant_typedef-Add-inline-to-proto.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 9adddf1e8ef277d62e5da8dfd81bc50e2b4898c4 Mon Sep 17 00:00:00 2001 From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 18 Apr 2011 17:37:55 +0000 -Subject: [PATCH 141/200] * dwarf2out.c (is_redundant_typedef): Add 'inline' to prototype. +Subject: [PATCH] * dwarf2out.c (is_redundant_typedef): Add 'inline' to prototype. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172661 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0142-PR-c-48632.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0142-PR-c-48632.patch index fa158fda1..4afaa27ca 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0142-PR-c-48632.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0142-PR-c-48632.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 71ec07630d08b813b39a65a932c71c78b8ffd845 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 18 Apr 2011 21:56:12 +0000 -Subject: [PATCH 142/200] PR c++/48632 +Subject: [PATCH] PR c++/48632 * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr for type dependent pointers. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0143-PR-middle-end-48661.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0143-PR-middle-end-48661.patch index 324639e5c..ff5a9e0fc 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0143-PR-middle-end-48661.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0143-PR-middle-end-48661.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 6d925e0321b8a34fb21b00a202c07d3d8a6e389a Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 18 Apr 2011 21:58:03 +0000 -Subject: [PATCH 143/200] PR middle-end/48661 +Subject: [PATCH] PR middle-end/48661 * gimple-fold.c (gimple_get_virt_method_for_binfo): Return NULL if TREE_TYPE (v) is non-NULL. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0144-PR-c-48537.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0144-PR-c-48537.patch index 8d9440cee..251074aee 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0144-PR-c-48537.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0144-PR-c-48537.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 065054b0b29c40548abd13c272431507d035b30a Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 18 Apr 2011 23:29:30 +0000 -Subject: [PATCH 144/200] PR c++/48537 +Subject: [PATCH] PR c++/48537 * init.c (build_value_init): Handle UNION_TYPE the same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172679 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0146-PR-testsuite-48675.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0146-PR-testsuite-48675.patch index d25f59af0..48a3bcb6a 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0146-PR-testsuite-48675.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0146-PR-testsuite-48675.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From cd1bb68f56ade6449c6d52a1916c6a58f09f59e6 Mon Sep 17 00:00:00 2001 From: hp <hp@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 19 Apr 2011 03:58:04 +0000 -Subject: [PATCH 146/200] PR testsuite/48675 +Subject: [PATCH] PR testsuite/48675 * testsuite/20_util/hash/chi2_quality.cc (test_document_words): Stub this part if SAMPLES < 100000. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0147-2011-04-18-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0147-2011-04-18-Richard-Guenther-rguenther-suse.de.patch index dc577a904..e4a66f0ab 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0147-2011-04-18-Richard-Guenther-rguenther-suse.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0147-2011-04-18-Richard-Guenther-rguenther-suse.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From dd8cc468e2787972742061b1547dbab48729ccf8 Mon Sep 17 00:00:00 2001 From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 19 Apr 2011 09:14:05 +0000 -Subject: [PATCH 147/200] 2011-04-18 Richard Guenther <rguenther@suse.de> +Subject: [PATCH] 2011-04-18 Richard Guenther <rguenther@suse.de> PR preprocessor/48248 * c-ppoutput.c (maybe_print_line): Avoid changing -P behavior. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0149-PR-target-48678.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0149-PR-target-48678.patch index c5036bfe3..ed87467ad 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0149-PR-target-48678.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0149-PR-target-48678.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ac255441a3e973a974d1ab70d00a9b7269103214 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 19 Apr 2011 16:49:19 +0000 -Subject: [PATCH 149/200] PR target/48678 +Subject: [PATCH] PR target/48678 * config/i386/i386.md (movstrict<mode>): FAIL if operands[0] is a SUBREG with non-MODE_INT mode inside of it. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0151-PR-c-46304.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0151-PR-c-46304.patch index 789558a0d..fbf329398 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0151-PR-c-46304.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0151-PR-c-46304.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 021acee3b7a6b26783c92870c1e202730c3f024e Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 20 Apr 2011 06:31:51 +0000 -Subject: [PATCH 151/200] PR c++/46304 +Subject: [PATCH] PR c++/46304 * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172756 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0152-bootstrap-lto.mk-Remove-obsolete-requirement.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0152-bootstrap-lto.mk-Remove-obsolete-requirement.patch index a1d8088d8..e3599e46c 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0152-bootstrap-lto.mk-Remove-obsolete-requirement.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0152-bootstrap-lto.mk-Remove-obsolete-requirement.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 64152d5463c74f3ec58a7d27e7f4e03dfd9557ff Mon Sep 17 00:00:00 2001 From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 20 Apr 2011 09:25:33 +0000 -Subject: [PATCH 152/200] * bootstrap-lto.mk: Remove obsolete requirement. +Subject: [PATCH] * bootstrap-lto.mk: Remove obsolete requirement. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172762 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0153-2011-04-20-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0153-2011-04-20-Richard-Guenther-rguenther-suse.de.patch index 9ff69b0c9..14e9b193e 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0153-2011-04-20-Richard-Guenther-rguenther-suse.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0153-2011-04-20-Richard-Guenther-rguenther-suse.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 5ff95d9c48276f6495b8ebefeb2ce4ac1ab6a1fe Mon Sep 17 00:00:00 2001 From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 20 Apr 2011 09:48:00 +0000 -Subject: [PATCH 153/200] 2011-04-20 Richard Guenther <rguenther@suse.de> +Subject: [PATCH] 2011-04-20 Richard Guenther <rguenther@suse.de> Backport from mainline 2011-04-19 Bernd Schmidt <bernds@codesourcery.com> diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0154-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0154-Backport-from-mainline.patch index 152b0817d..c3cff8f50 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0154-Backport-from-mainline.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0154-Backport-from-mainline.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From b769f6c6e91c977fb6b4fcc5b7838eb79dddaeb7 Mon Sep 17 00:00:00 2001 From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 20 Apr 2011 11:18:50 +0000 -Subject: [PATCH 154/200] Backport from mainline +Subject: [PATCH] Backport from mainline 2011-04-19 Eric Botcazou <ebotcazou@adacore.com> PR lto/48148 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0155-PR-tree-optimization-48611.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0155-PR-tree-optimization-48611.patch index 922c0a840..b2c0cd86f 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0155-PR-tree-optimization-48611.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0155-PR-tree-optimization-48611.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 0e3879bf21f04b54b0849f3a86c20359f965e12a Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 20 Apr 2011 18:19:47 +0000 -Subject: [PATCH 155/200] PR tree-optimization/48611 +Subject: [PATCH] PR tree-optimization/48611 * tree-eh.c (note_eh_region_may_contain_throw): Don't propagate beyond ERT_MUST_NOT_THROW region. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0156-PR-c-48657.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0156-PR-c-48657.patch index b1720b75b..c68952520 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0156-PR-c-48657.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0156-PR-c-48657.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 03be58e53f230926009974bd7aed6a40a557dc1d Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 20 Apr 2011 19:39:26 +0000 -Subject: [PATCH 156/200] PR c++/48657 +Subject: [PATCH] PR c++/48657 * decl.c (cp_finish_decl): Handle non-member constant variables in templates, too. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0157-PR-target-48288.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0157-PR-target-48288.patch index 66c349c93..067067cf4 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0157-PR-target-48288.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0157-PR-target-48288.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 05f12c826eff0c87deeac7347d73cb276ec493cc Mon Sep 17 00:00:00 2001 From: danglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 20 Apr 2011 23:36:20 +0000 -Subject: [PATCH 157/200] PR target/48288 +Subject: [PATCH] PR target/48288 * config/pa/predicates.md (ior_operand): Delete predicate. (cint_ior_operand, reg_or_cint_ior_operand): New predicates. * config/pa/pa.md (iordi3): Use reg_or_cint_ior_operand predicate in diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0159-PR-c-48594.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0159-PR-c-48594.patch index a01b83488..c25a7dee1 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0159-PR-c-48594.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0159-PR-c-48594.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From eda6b7fee4d20c15dc919a726b60ee5777c402c8 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 21 Apr 2011 03:03:08 +0000 -Subject: [PATCH 159/200] PR c++/48594 +Subject: [PATCH] PR c++/48594 * decl2.c (build_offset_ref_call_from_tree): Move non-dependency of object outside condition. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0160-semantics.c-finish_compound_literal-Don-t-put-an-arr.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0160-semantics.c-finish_compound_literal-Don-t-put-an-arr.patch index 44f5d3583..98d58d9b4 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0160-semantics.c-finish_compound_literal-Don-t-put-an-arr.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0160-semantics.c-finish_compound_literal-Don-t-put-an-arr.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 19692feb0bd83e8e6b3a1e1e0b43119d7e12ce96 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 21 Apr 2011 04:27:30 +0000 -Subject: [PATCH 160/200] * semantics.c (finish_compound_literal): Don't put an array +Subject: [PATCH] * semantics.c (finish_compound_literal): Don't put an array with a dtor in a static variable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172806 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0161-gimple.c-walk_gimple_op-GIMPLE_CALL-Fix-couple-of-ov.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0161-gimple.c-walk_gimple_op-GIMPLE_CALL-Fix-couple-of-ov.patch index 64e797835..6b8baebee 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0161-gimple.c-walk_gimple_op-GIMPLE_CALL-Fix-couple-of-ov.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0161-gimple.c-walk_gimple_op-GIMPLE_CALL-Fix-couple-of-ov.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 20a8b6ba99d25394d9d4b958a8ecc171fe3d263b Mon Sep 17 00:00:00 2001 From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 21 Apr 2011 14:18:54 +0000 -Subject: [PATCH 161/200] * gimple.c (walk_gimple_op) <GIMPLE_CALL>: Fix couple of oversights. +Subject: [PATCH] * gimple.c (walk_gimple_op) <GIMPLE_CALL>: Fix couple of oversights. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172829 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0162-2011-04-21-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0162-2011-04-21-Richard-Guenther-rguenther-suse.de.patch index fa83ccc5e..f10e72501 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0162-2011-04-21-Richard-Guenther-rguenther-suse.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0162-2011-04-21-Richard-Guenther-rguenther-suse.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From d0c1a282504a0fa941a9ae22536c73f64d8c5762 Mon Sep 17 00:00:00 2001 From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 21 Apr 2011 14:40:53 +0000 -Subject: [PATCH 162/200] 2011-04-21 Richard Guenther <rguenther@suse.de> +Subject: [PATCH] 2011-04-21 Richard Guenther <rguenther@suse.de> PR middle-end/48695 * tree-ssa-alias.c (aliasing_component_refs_p): Compute base diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0163-de.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0163-de.po-Update.patch index 15ae0137b..360d885e9 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0163-de.po-Update.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0163-de.po-Update.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From bdc36219ffa6e8c7e2b48e4aedc32082205a2195 Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 21 Apr 2011 17:02:45 +0000 -Subject: [PATCH 163/200] * de.po: Update. +Subject: [PATCH] * de.po: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172836 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0164-PR-target-48708.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0164-PR-target-48708.patch index a089ebe59..fde53a48a 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0164-PR-target-48708.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0164-PR-target-48708.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ad24dcb7c07f1f9d41cb6782ea14c6c1727c4cb0 Mon Sep 17 00:00:00 2001 From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 21 Apr 2011 20:23:55 +0000 -Subject: [PATCH 164/200] PR target/48708 +Subject: [PATCH] PR target/48708 * config/i386/i386.c (ix86_expand_vector_set) <V2DImode>: Generate vec_extract and vec_concat for non-SSE4_1 targets. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0166-PR-c-48716.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0166-PR-c-48716.patch index c9c474d60..b75b90654 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0166-PR-c-48716.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0166-PR-c-48716.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 3a3d51cb4f1ec33265471b03d21b96d30e899858 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 22 Apr 2011 14:11:44 +0000 -Subject: [PATCH 166/200] PR c/48716 +Subject: [PATCH] PR c/48716 * gimplify.c (gimplify_bind_expr): Mark as GOVD_LOCAL also TREE_STATIC variables declared inside of some OpenMP construct. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0167-PR-target-48723.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0167-PR-target-48723.patch index 8359bb170..e86beea30 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0167-PR-target-48723.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0167-PR-target-48723.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 6798037eb1c55f1dd79c04da313bd6bcd4d2aa9e Mon Sep 17 00:00:00 2001 From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 22 Apr 2011 18:43:57 +0000 -Subject: [PATCH 167/200] PR target/48723 +Subject: [PATCH] PR target/48723 * config/i386/i386.c (ix86_expand_prologue): Update m->fs.sp_offset after the call to ix86_adjust_stack_and_probe. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0168-PR-tree-optimization-48717.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0168-PR-tree-optimization-48717.patch index a3c51de69..0edf04682 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0168-PR-tree-optimization-48717.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0168-PR-tree-optimization-48717.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 8825c738568548e5d67dc2f4e7ce9326dcc2cd7c Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 22 Apr 2011 18:53:30 +0000 -Subject: [PATCH 168/200] PR tree-optimization/48717 +Subject: [PATCH] PR tree-optimization/48717 * tree-ssa-forwprop.c (associate_plusminus): For A + ~A and ~A + A optimizations use build_int_cst_type instead of build_int_cst. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0170-Revert.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0170-Revert.patch index 9f39bdea1..e3899c253 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0170-Revert.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0170-Revert.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From b4d9ee2abbc5ac5fcf475e1d495bd3d55500d39b Mon Sep 17 00:00:00 2001 From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 23 Apr 2011 07:41:43 +0000 -Subject: [PATCH 170/200] Revert: +Subject: [PATCH] Revert: 2011-04-22 Uros Bizjak <ubizjak@gmail.com> PR target/48723 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0171-PR-c-48685.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0171-PR-c-48685.patch index f11f405af..c15cf4d8d 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0171-PR-c-48685.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0171-PR-c-48685.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 260252e3308b19f495f084658236114ead218ec5 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 23 Apr 2011 10:18:54 +0000 -Subject: [PATCH 171/200] PR c/48685 +Subject: [PATCH] PR c/48685 * fold-const.c (fold_convert_loc): Add NOP_EXPR when casting to VOID_TYPE even around MODIFY_EXPR. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0172-gcc.dg-pr48616.c-dg-options-Add-fno-common-to-option.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0172-gcc.dg-pr48616.c-dg-options-Add-fno-common-to-option.patch index 6ba93bf67..ec50c3a37 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0172-gcc.dg-pr48616.c-dg-options-Add-fno-common-to-option.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0172-gcc.dg-pr48616.c-dg-options-Add-fno-common-to-option.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 79d3442448d1bd498a80baca666a94dfabe93364 Mon Sep 17 00:00:00 2001 From: danglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 23 Apr 2011 17:47:17 +0000 -Subject: [PATCH 172/200] * gcc.dg/pr48616.c (dg-options): Add -fno-common to options on +Subject: [PATCH] * gcc.dg/pr48616.c (dg-options): Add -fno-common to options on hppa*-*-hpux*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172900 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0173-2011-04-23-Jonathan-Wakely-jwakely.gcc-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0173-2011-04-23-Jonathan-Wakely-jwakely.gcc-gmail.com.patch index 6cd605f79..bef49b567 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0173-2011-04-23-Jonathan-Wakely-jwakely.gcc-gmail.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0173-2011-04-23-Jonathan-Wakely-jwakely.gcc-gmail.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 0755fde6008ab7a7ae98f3b4c5967191408431f3 Mon Sep 17 00:00:00 2001 From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 23 Apr 2011 17:51:31 +0000 -Subject: [PATCH 173/200] 2011-04-23 Jonathan Wakely <jwakely.gcc@gmail.com> +Subject: [PATCH] 2011-04-23 Jonathan Wakely <jwakely.gcc@gmail.com> PR libstdc++/48521 * include/std/type_traits (result_of): Handle pointer to member. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0174-PR-preprocessor-48740.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0174-PR-preprocessor-48740.patch index 852b7ecd4..d7019721f 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0174-PR-preprocessor-48740.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0174-PR-preprocessor-48740.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From c6deb5c58fde1c5115d9e92afb2ead8e7ac4fea0 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sat, 23 Apr 2011 23:33:39 +0000 -Subject: [PATCH 174/200] PR preprocessor/48740 +Subject: [PATCH] PR preprocessor/48740 * lex.c (lex_raw_string): When raw string ends with ??) followed by raw prefix and ", ensure it is preprocessed with ??) rather than ??]. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0176-2011-04-24-Paolo-Carlini-paolo.carlini-oracle.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0176-2011-04-24-Paolo-Carlini-paolo.carlini-oracle.com.patch index 35282c1c3..ce3b141da 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0176-2011-04-24-Paolo-Carlini-paolo.carlini-oracle.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0176-2011-04-24-Paolo-Carlini-paolo.carlini-oracle.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 63c4ffd33d8f3e61e53d30f50146e1bc4cb6e38a Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 24 Apr 2011 09:43:29 +0000 -Subject: [PATCH 176/200] 2011-04-24 Paolo Carlini <paolo.carlini@oracle.com> +Subject: [PATCH] 2011-04-24 Paolo Carlini <paolo.carlini@oracle.com> PR other/48748 * doc/extend.texi (Type Traits): Document __is_standard_layout, diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0178-PR-c-48707.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0178-PR-c-48707.patch index 40505e553..275d5edce 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0178-PR-c-48707.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0178-PR-c-48707.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From c2606fe2aa58ae13a13e7ff0b17da61e4565586d Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Mon, 25 Apr 2011 21:53:57 +0000 -Subject: [PATCH 178/200] PR c++/48707 +Subject: [PATCH] PR c++/48707 * pt.c (value_dependent_expression_p): Handle type-dependent expression. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0180-2011-04-26-Tobias-Burnus-burnus-net-b.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0180-2011-04-26-Tobias-Burnus-burnus-net-b.de.patch index ec605836e..f9a95bd0e 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0180-2011-04-26-Tobias-Burnus-burnus-net-b.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0180-2011-04-26-Tobias-Burnus-burnus-net-b.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ead753a2ac74bd306d240de4760b7f809c581052 Mon Sep 17 00:00:00 2001 From: burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 26 Apr 2011 08:41:31 +0000 -Subject: [PATCH 180/200] 2011-04-26 Tobias Burnus <burnus@net-b.de> +Subject: [PATCH] 2011-04-26 Tobias Burnus <burnus@net-b.de> PR fortran/48588 * parse.c (resolve_all_program_units): Skip modules. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0181-2011-04-26-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0181-2011-04-26-Richard-Guenther-rguenther-suse.de.patch index ee423293c..970f19c67 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0181-2011-04-26-Richard-Guenther-rguenther-suse.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0181-2011-04-26-Richard-Guenther-rguenther-suse.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 2e8f32d39576b002280e29079ad6cfc55c852276 Mon Sep 17 00:00:00 2001 From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 26 Apr 2011 12:59:22 +0000 -Subject: [PATCH 181/200] 2011-04-26 Richard Guenther <rguenther@suse.de> +Subject: [PATCH] 2011-04-26 Richard Guenther <rguenther@suse.de> PR tree-optimization/48731 * ipa-inline.c (cgraph_flatten): Test if function is inlinable. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0182-PR-tree-optimization-48734.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0182-PR-tree-optimization-48734.patch index 40f3efa78..4ba1b9d63 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0182-PR-tree-optimization-48734.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0182-PR-tree-optimization-48734.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From a3ac868928384ffe6f10c3aa0fd3ac9ab8cc1aae Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 26 Apr 2011 13:44:51 +0000 -Subject: [PATCH 182/200] PR tree-optimization/48734 +Subject: [PATCH] PR tree-optimization/48734 * tree-ssa-reassoc.c (eliminate_redundant_comparison): Give up if return value from maybe_fold_*_comparsions isn't something the code is prepared to handle. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0183-PR-debug-48768.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0183-PR-debug-48768.patch index 2a0fd2fba..b3d25e06c 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0183-PR-debug-48768.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0183-PR-debug-48768.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 8a0e77485c3d9d34c6f65cec908829dcc4cd5fee Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 26 Apr 2011 13:47:13 +0000 -Subject: [PATCH 183/200] PR debug/48768 +Subject: [PATCH] PR debug/48768 * tree-ssa.c (insert_debug_temp_for_var_def): If degenerate_phi_result is error_mark_node, set value to NULL. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0184-de.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0184-de.po-Update.patch index eea1bea06..7a02d90a2 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0184-de.po-Update.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0184-de.po-Update.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 6dd6ecb750b587d76e46e7e622e44407fce87389 Mon Sep 17 00:00:00 2001 From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 26 Apr 2011 14:57:30 +0000 -Subject: [PATCH 184/200] * de.po: Update. +Subject: [PATCH] * de.po: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172974 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0185-PR-c-48726.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0185-PR-c-48726.patch index 50987f04e..e2df632e7 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0185-PR-c-48726.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0185-PR-c-48726.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From c0df85fc6ea1962c53f98bbca38d182eba8e23f7 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 26 Apr 2011 23:42:50 +0000 -Subject: [PATCH 185/200] PR c++/48726 +Subject: [PATCH] PR c++/48726 * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR. * decl.c (reshape_init_array_1): Likewise. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0187-PR-c-42687.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0187-PR-c-42687.patch index 9d363e520..9f3514ca7 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0187-PR-c-42687.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0187-PR-c-42687.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From ccb3ae3a3167213d1c84397653a7cfec0df3a5b7 Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 27 Apr 2011 05:20:06 +0000 -Subject: [PATCH 187/200] PR c++/42687 +Subject: [PATCH] PR c++/42687 * parser.c (cp_parser_primary_expression): Set *idk to CP_ID_KIND_NONE for a parenthesized identifier. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0188-PR-c-48742.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0188-PR-c-48742.patch index 718272de7..a93a84b80 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0188-PR-c-48742.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0188-PR-c-48742.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 1a6d9e7052b3632a85ca6f79b48384fd684c4411 Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 27 Apr 2011 07:05:54 +0000 -Subject: [PATCH 188/200] PR c/48742 +Subject: [PATCH] PR c/48742 * c-typeck.c (build_binary_op): Don't wrap arguments if int_operands is true. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0189-gcc.dg-20020312-2.c-Add-definition-for-RX.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0189-gcc.dg-20020312-2.c-Add-definition-for-RX.patch index 458699905..9a169a7a9 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0189-gcc.dg-20020312-2.c-Add-definition-for-RX.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0189-gcc.dg-20020312-2.c-Add-definition-for-RX.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From abb5bc5b7190b68909f9dd14386aa2c430bacd9a Mon Sep 17 00:00:00 2001 From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 27 Apr 2011 14:55:28 +0000 -Subject: [PATCH 189/200] * gcc.dg/20020312-2.c: Add definition for RX. +Subject: [PATCH] * gcc.dg/20020312-2.c: Add definition for RX. * lib/target-supports.exp (add_options_for_ieee): Use -mnofpu option with RX targets. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0190-PR-c-48046.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0190-PR-c-48046.patch index 2a8888a1f..a027da247 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0190-PR-c-48046.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0190-PR-c-48046.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From c270475fa490deeb18cf6275a86ce15a57e706ff Mon Sep 17 00:00:00 2001 From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 27 Apr 2011 15:57:06 +0000 -Subject: [PATCH 190/200] PR c++/48046 +Subject: [PATCH] PR c++/48046 * parser.c (cp_parser_diagnose_invalid_type_name): Commit to tentative parse sooner. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0192-PR-middle-end-48597.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0192-PR-middle-end-48597.patch index dcbe5d842..ac397bc0e 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0192-PR-middle-end-48597.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0192-PR-middle-end-48597.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 7c26af7b723eae6ac629ea01058553ff025400ab Mon Sep 17 00:00:00 2001 From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 28 Apr 2011 17:01:55 +0000 -Subject: [PATCH 192/200] PR middle-end/48597 +Subject: [PATCH] PR middle-end/48597 * final.c (final_scan_insn): Call dwarf2out_frame_debug even for inline asm. diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0193-2011-04-28-Tobias-Burnus-burnus-net-b.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0193-2011-04-28-Tobias-Burnus-burnus-net-b.de.patch index 9b971fdca..cd89a4a69 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0193-2011-04-28-Tobias-Burnus-burnus-net-b.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0193-2011-04-28-Tobias-Burnus-burnus-net-b.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From cb79606d4958a3f3df1adfcc00b641e3b8089819 Mon Sep 17 00:00:00 2001 From: burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 28 Apr 2011 18:43:16 +0000 -Subject: [PATCH 193/200] 2011-04-28 Tobias Burnus <burnus@net-b.de> +Subject: [PATCH] 2011-04-28 Tobias Burnus <burnus@net-b.de> PR fortran/48788 * resolve.c (resolve_global_procedure): Error recovery - diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0194-2011-04-28-Tobias-Burnus-burnus-net-b.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0194-2011-04-28-Tobias-Burnus-burnus-net-b.de.patch index e47889939..0e35312b8 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0194-2011-04-28-Tobias-Burnus-burnus-net-b.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0194-2011-04-28-Tobias-Burnus-burnus-net-b.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From a588d1bdc7fb4aa8e1214b6a57d581ddcfa86159 Mon Sep 17 00:00:00 2001 From: burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 28 Apr 2011 18:47:28 +0000 -Subject: [PATCH 194/200] 2011-04-28 Tobias Burnus <burnus@net-b.de> +Subject: [PATCH] 2011-04-28 Tobias Burnus <burnus@net-b.de> PR fortran/48112 * resolve.c (resolve_fl_var_and_proc): Print diagnostic of diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch index b37cb613a..628060c09 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 5d622f64eff4e9fa78356c24290aed131b5c519c Mon Sep 17 00:00:00 2001 From: dodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 28 Apr 2011 19:46:34 +0000 -Subject: [PATCH 195/200] Fix PR c++/48656 +Subject: [PATCH] Fix PR c++/48656 gcc/cp/ diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0196-Backport-4.7-patchtes-to-4.6.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0196-Backport-4.7-patchtes-to-4.6.patch index 7fd93dbd9..d418d6e9c 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0196-Backport-4.7-patchtes-to-4.6.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0196-Backport-4.7-patchtes-to-4.6.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 99347f932bdf7d9b0bf8a4f36737ed128813c1a9 Mon Sep 17 00:00:00 2001 From: meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 28 Apr 2011 22:39:59 +0000 -Subject: [PATCH 196/200] Backport 4.7 patchtes to 4.6 +Subject: [PATCH] Backport 4.7 patchtes to 4.6 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173137 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0198-2011-04-29-Tobias-Burnus-burnus-net-b.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0198-2011-04-29-Tobias-Burnus-burnus-net-b.de.patch index 8053a2cc0..bd5755418 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0198-2011-04-29-Tobias-Burnus-burnus-net-b.de.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0198-2011-04-29-Tobias-Burnus-burnus-net-b.de.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 1c9148fe797f564821355a8976802689519324dd Mon Sep 17 00:00:00 2001 From: burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 29 Apr 2011 21:26:07 +0000 -Subject: [PATCH 198/200] 2011-04-29 Tobias Burnus <burnus@net-b.de> +Subject: [PATCH] 2011-04-29 Tobias Burnus <burnus@net-b.de> PR fortran/48810 * resolve.c (resolve_typebound_generic_call): Don't check access diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0199-2011-04-29-Paolo-Carlini-paolo.carlini-oracle.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0199-2011-04-29-Paolo-Carlini-paolo.carlini-oracle.com.patch index f5ce975b8..af769cd2f 100644 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0199-2011-04-29-Paolo-Carlini-paolo.carlini-oracle.com.patch +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0199-2011-04-29-Paolo-Carlini-paolo.carlini-oracle.com.patch @@ -1,8 +1,7 @@ -Upstream-Status: Inappropriate [Backport] From 838560450136f202dc9170f2ad3eec80b41e0381 Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 29 Apr 2011 23:19:59 +0000 -Subject: [PATCH 199/200] 2011-04-29 Paolo Carlini <paolo.carlini@oracle.com> +Subject: [PATCH] 2011-04-29 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/48760 * include/std/complex (complex<float>::complex(float, float), diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0201-PR-tree-optimization-48809.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0201-PR-tree-optimization-48809.patch new file mode 100644 index 000000000..9cec6d135 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0201-PR-tree-optimization-48809.patch @@ -0,0 +1,199 @@ +From 51e96cf1fffb6f2643c290dbd59d3f9fd5a1b760 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 30 Apr 2011 06:55:11 +0000 +Subject: [PATCH] PR tree-optimization/48809 + * tree-switch-conversion.c (build_arrays): Compute tidx in unsigned + type. + (gen_inbound_check): Don't compute index_expr - range_min in utype + again, instead reuse SSA_NAME initialized in build_arrays. + Remove two useless gsi_for_stmt calls. + + * gcc.c-torture/execute/pr48809.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173208 138bc75d-0d04-0410-961f-82ee72b054a4 + +index c012957..4b3eae6 100644 +new file mode 100644 +index 0000000..80de5bc +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/execute/pr48809.c +@@ -0,0 +1,60 @@ ++/* PR tree-optimization/48809 */ ++ ++extern void abort (void); ++ ++int ++foo (signed char x) ++{ ++ int y = 0; ++ switch (x) ++ { ++ case 0: y = 1; break; ++ case 1: y = 7; break; ++ case 2: y = 2; break; ++ case 3: y = 19; break; ++ case 4: y = 5; break; ++ case 5: y = 17; break; ++ case 6: y = 31; break; ++ case 7: y = 8; break; ++ case 8: y = 28; break; ++ case 9: y = 16; break; ++ case 10: y = 31; break; ++ case 11: y = 12; break; ++ case 12: y = 15; break; ++ case 13: y = 111; break; ++ case 14: y = 17; break; ++ case 15: y = 10; break; ++ case 16: y = 31; break; ++ case 17: y = 7; break; ++ case 18: y = 2; break; ++ case 19: y = 19; break; ++ case 20: y = 5; break; ++ case 21: y = 107; break; ++ case 22: y = 31; break; ++ case 23: y = 8; break; ++ case 24: y = 28; break; ++ case 25: y = 106; break; ++ case 26: y = 31; break; ++ case 27: y = 102; break; ++ case 28: y = 105; break; ++ case 29: y = 111; break; ++ case 30: y = 17; break; ++ case 31: y = 10; break; ++ case 32: y = 31; break; ++ case 98: y = 18; break; ++ case -62: y = 19; break; ++ } ++ return y; ++} ++ ++int ++main () ++{ ++ if (foo (98) != 18 || foo (97) != 0 || foo (99) != 0) ++ abort (); ++ if (foo (-62) != 19 || foo (-63) != 0 || foo (-61) != 0) ++ abort (); ++ if (foo (28) != 105 || foo (27) != 102 || foo (29) != 111) ++ abort (); ++ return 0; ++} +diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c +index 0f4b429..a8928e5 100644 +--- a/gcc/tree-switch-conversion.c ++++ b/gcc/tree-switch-conversion.c +@@ -1,6 +1,6 @@ + /* Switch Conversion converts variable initializations based on switch + statements to initializations from a static array. +- Copyright (C) 2006, 2008, 2009, 2010 Free Software Foundation, Inc. ++ Copyright (C) 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + Contributed by Martin Jambor <jamborm@suse.cz> + + This file is part of GCC. +@@ -656,7 +656,7 @@ static void + build_arrays (gimple swtch) + { + tree arr_index_type; +- tree tidx, sub, tmp; ++ tree tidx, sub, tmp, utype; + gimple stmt; + gimple_stmt_iterator gsi; + int i; +@@ -664,14 +664,20 @@ build_arrays (gimple swtch) + + gsi = gsi_for_stmt (swtch); + ++ /* Make sure we do not generate arithmetics in a subrange. */ ++ utype = TREE_TYPE (info.index_expr); ++ if (TREE_TYPE (utype)) ++ utype = lang_hooks.types.type_for_mode (TYPE_MODE (TREE_TYPE (utype)), 1); ++ else ++ utype = lang_hooks.types.type_for_mode (TYPE_MODE (utype), 1); ++ + arr_index_type = build_index_type (info.range_size); +- tmp = create_tmp_var (TREE_TYPE (info.index_expr), "csti"); ++ tmp = create_tmp_var (utype, "csui"); + add_referenced_var (tmp); + tidx = make_ssa_name (tmp, NULL); +- sub = fold_build2_loc (loc, MINUS_EXPR, +- TREE_TYPE (info.index_expr), info.index_expr, +- fold_convert_loc (loc, TREE_TYPE (info.index_expr), +- info.range_min)); ++ sub = fold_build2_loc (loc, MINUS_EXPR, utype, ++ fold_convert_loc (loc, utype, info.index_expr), ++ fold_convert_loc (loc, utype, info.range_min)); + sub = force_gimple_operand_gsi (&gsi, sub, + false, NULL, true, GSI_SAME_STMT); + stmt = gimple_build_assign (tidx, sub); +@@ -780,12 +786,7 @@ gen_inbound_check (gimple swtch) + tree label_decl2 = create_artificial_label (UNKNOWN_LOCATION); + tree label_decl3 = create_artificial_label (UNKNOWN_LOCATION); + gimple label1, label2, label3; +- +- tree utype; +- tree tmp_u_1, tmp_u_2, tmp_u_var; +- tree cast; +- gimple cast_assign, minus_assign; +- tree ulb, minus; ++ tree utype, tidx; + tree bound; + + gimple cond_stmt; +@@ -799,49 +800,24 @@ gen_inbound_check (gimple swtch) + gcc_assert (info.default_values); + bb0 = gimple_bb (swtch); + +- /* Make sure we do not generate arithmetics in a subrange. */ +- if (TREE_TYPE (TREE_TYPE (info.index_expr))) +- utype = lang_hooks.types.type_for_mode +- (TYPE_MODE (TREE_TYPE (TREE_TYPE (info.index_expr))), 1); +- else +- utype = lang_hooks.types.type_for_mode +- (TYPE_MODE (TREE_TYPE (info.index_expr)), 1); ++ tidx = gimple_assign_lhs (info.arr_ref_first); ++ utype = TREE_TYPE (tidx); + + /* (end of) block 0 */ + gsi = gsi_for_stmt (info.arr_ref_first); +- tmp_u_var = create_tmp_var (utype, "csui"); +- add_referenced_var (tmp_u_var); +- tmp_u_1 = make_ssa_name (tmp_u_var, NULL); +- +- cast = fold_convert_loc (loc, utype, info.index_expr); +- cast_assign = gimple_build_assign (tmp_u_1, cast); +- SSA_NAME_DEF_STMT (tmp_u_1) = cast_assign; +- gsi_insert_before (&gsi, cast_assign, GSI_SAME_STMT); +- update_stmt (cast_assign); +- +- ulb = fold_convert_loc (loc, utype, info.range_min); +- minus = fold_build2_loc (loc, MINUS_EXPR, utype, tmp_u_1, ulb); +- minus = force_gimple_operand_gsi (&gsi, minus, false, NULL, true, +- GSI_SAME_STMT); +- tmp_u_2 = make_ssa_name (tmp_u_var, NULL); +- minus_assign = gimple_build_assign (tmp_u_2, minus); +- SSA_NAME_DEF_STMT (tmp_u_2) = minus_assign; +- gsi_insert_before (&gsi, minus_assign, GSI_SAME_STMT); +- update_stmt (minus_assign); ++ gsi_next (&gsi); + + bound = fold_convert_loc (loc, utype, info.range_size); +- cond_stmt = gimple_build_cond (LE_EXPR, tmp_u_2, bound, NULL_TREE, NULL_TREE); ++ cond_stmt = gimple_build_cond (LE_EXPR, tidx, bound, NULL_TREE, NULL_TREE); + gsi_insert_before (&gsi, cond_stmt, GSI_SAME_STMT); + update_stmt (cond_stmt); + + /* block 2 */ +- gsi = gsi_for_stmt (info.arr_ref_first); + label2 = gimple_build_label (label_decl2); + gsi_insert_before (&gsi, label2, GSI_SAME_STMT); + last_assign = gen_def_assigns (&gsi); + + /* block 1 */ +- gsi = gsi_for_stmt (info.arr_ref_first); + label1 = gimple_build_label (label_decl1); + gsi_insert_before (&gsi, label1, GSI_SAME_STMT); + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0202-2011-04-30-Paul-Thomas-pault-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0202-2011-04-30-Paul-Thomas-pault-gcc.gnu.org.patch new file mode 100644 index 000000000..59380b049 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0202-2011-04-30-Paul-Thomas-pault-gcc.gnu.org.patch @@ -0,0 +1,198 @@ +From f90642b60dbe411df162174646348f4a7d5e1a63 Mon Sep 17 00:00:00 2001 +From: pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 30 Apr 2011 12:00:50 +0000 +Subject: [PATCH] 2011-04-30 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/48462 + PR fortran/48746 + * trans-expr.c ( arrayfunc_assign_needs_temporary): Need a temp + if automatic reallocation on assignement is active, the lhs is a + target and the rhs an intrinsic function. + (realloc_lhs_bounds_for_intrinsic_call): Rename as next. + (fcncall_realloc_result): Renamed version of above function. + Free the original descriptor data after the function call.Set the bounds and the + offset so that the lbounds are one. + (gfc_trans_arrayfunc_assign): Call renamed function. + +2011-04-30 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/48462 + PR fortran/48746 + * gfortran.dg/realloc_on_assign_7.f03: New test. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173214 138bc75d-0d04-0410-961f-82ee72b054a4 + +index da7cfba..1d678e6 100644 +--- a/gcc/fortran/trans-expr.c ++++ b/gcc/fortran/trans-expr.c +@@ -5444,9 +5444,12 @@ arrayfunc_assign_needs_temporary (gfc_expr * expr1, gfc_expr * expr2) + return true; + + /* If we have reached here with an intrinsic function, we do not +- need a temporary. */ ++ need a temporary except in the particular case that reallocation ++ on assignment is active and the lhs is allocatable and a target. */ + if (expr2->value.function.isym) +- return false; ++ return (gfc_option.flag_realloc_lhs ++ && sym->attr.allocatable ++ && sym->attr.target); + + /* If the LHS is a dummy, we need a temporary if it is not + INTENT(OUT). */ +@@ -5528,23 +5531,38 @@ realloc_lhs_loop_for_fcn_call (gfc_se *se, locus *where, gfc_ss **ss) + } + + ++/* For Assignment to a reallocatable lhs from intrinsic functions, ++ replace the se.expr (ie. the result) with a temporary descriptor. ++ Null the data field so that the library allocates space for the ++ result. Free the data of the original descriptor after the function, ++ in case it appears in an argument expression and transfer the ++ result to the original descriptor. */ ++ + static void +-realloc_lhs_bounds_for_intrinsic_call (gfc_se *se, int rank) ++fcncall_realloc_result (gfc_se *se, int rank) + { + tree desc; ++ tree res_desc; + tree tmp; + tree offset; + int n; + +- /* Use the allocation done by the library. */ ++ /* Use the allocation done by the library. Substitute the lhs ++ descriptor with a copy, whose data field is nulled.*/ + desc = build_fold_indirect_ref_loc (input_location, se->expr); +- tmp = gfc_conv_descriptor_data_get (desc); +- tmp = gfc_call_free (fold_convert (pvoid_type_node, tmp)); +- gfc_add_expr_to_block (&se->pre, tmp); +- gfc_conv_descriptor_data_set (&se->pre, desc, null_pointer_node); + /* Unallocated, the descriptor does not have a dtype. */ + tmp = gfc_conv_descriptor_dtype (desc); + gfc_add_modify (&se->pre, tmp, gfc_get_dtype (TREE_TYPE (desc))); ++ res_desc = gfc_evaluate_now (desc, &se->pre); ++ gfc_conv_descriptor_data_set (&se->pre, res_desc, null_pointer_node); ++ se->expr = gfc_build_addr_expr (TREE_TYPE (se->expr), res_desc); ++ ++ /* Free the lhs after the function call and copy the result to ++ the lhs descriptor. */ ++ tmp = gfc_conv_descriptor_data_get (desc); ++ tmp = gfc_call_free (fold_convert (pvoid_type_node, tmp)); ++ gfc_add_expr_to_block (&se->post, tmp); ++ gfc_add_modify (&se->post, desc, res_desc); + + offset = gfc_index_zero_node; + tmp = gfc_index_one_node; +@@ -5580,7 +5598,6 @@ realloc_lhs_bounds_for_intrinsic_call (gfc_se *se, int rank) + } + + +- + /* Try to translate array(:) = func (...), where func is a transformational + array function, without using a temporary. Returns NULL if this isn't the + case. */ +@@ -5645,7 +5662,7 @@ gfc_trans_arrayfunc_assign (gfc_expr * expr1, gfc_expr * expr2) + ss->is_alloc_lhs = 1; + } + else +- realloc_lhs_bounds_for_intrinsic_call (&se, expr1->rank); ++ fcncall_realloc_result (&se, expr1->rank); + } + + gfc_conv_function_expr (&se, expr2); +new file mode 100644 +index 0000000..f871d27 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/realloc_on_assign_7.f03 +@@ -0,0 +1,84 @@ ++! { dg-do run } ++! Check the fix for PR48462 in which the assignments involving matmul ++! seg faulted because a was automatically freed before the assignment. ++! Since it is related, the test for the fix of PR48746 has been added ++! as a subroutine by that name. ++! ++! Contributed by John Nedney <ortp21@gmail.com> ++! ++program main ++ implicit none ++ integer, parameter :: dp = kind(0.0d0) ++ real(kind=dp), allocatable :: delta(:,:) ++ real(kind=dp), allocatable, target :: a(:,:) ++ real(kind=dp), pointer :: aptr(:,:) ++ ++ allocate(a(3,3)) ++ aptr => a ++ ++ call foo ++ if (.not. associated (aptr, a)) call abort () ! reallocated to same size - remains associated ++ call bar ++ if (.not. associated (aptr, a)) call abort () ! reallocated to smaller size - remains associated ++ call foobar ++ if (associated (aptr, a)) call abort () ! reallocated to larger size - disassociates ++ ++ call pr48746 ++contains ++! ++! Original reduced version from comment #2 ++ subroutine foo ++ implicit none ++ real(kind=dp), allocatable :: b(:,:) ++ ++ allocate(b(3,3)) ++ allocate(delta(3,3)) ++ ++ a = reshape ([1d0, 2d0, 3d0, 4d0, 5d0, 6d0, 7d0, 8d0, 9d0], [3,3]) ++ b = reshape ([1d0, 0d0, 0d0, 0d0, 1d0, 0d0, 0d0, 0d0, 1d0], [3,3]) ++ ++ a = matmul( matmul( a, b ), b ) ++ delta = (a - reshape ([1d0, 2d0, 3d0, 4d0, 5d0, 6d0, 7d0, 8d0, 9d0], [3,3]))**2 ++ if (any (delta > 1d-12)) call abort ++ if (any (lbound (a) .ne. [1, 1])) call abort ++ end subroutine ++! ++! Check that all is well when the shape of 'a' changes. ++ subroutine bar ++ implicit none ++ real(kind=dp), allocatable :: a(:,:) ++ real(kind=dp), allocatable :: b(:,:) ++ ++ b = reshape ([1d0, 1d0, 1d0], [3,1]) ++ a = reshape ([1d0, 2d0, 3d0, 4d0, 5d0, 6d0, 7d0, 8d0, 9d0], [3,3]) ++ ++ a = matmul( a, matmul( a, b ) ) ++ ++ delta = (a - reshape ([198d0, 243d0, 288d0], [3,1]))**2 ++ if (any (delta > 1d-12)) call abort ++ if (any (lbound (a) .ne. [1, 1])) call abort ++ end subroutine ++ subroutine foobar ++ integer :: i ++ a = reshape ([(real(i, dp), i = 1, 100)],[10,10]) ++ end subroutine ++ subroutine pr48746 ++! This is a further wrinkle on the original problem and came about ++! because the dtype field of the result argument, passed to matmul, ++! was not being set. This is needed by matmul for the rank. ++! ++! Contributed by Thomas Koenig <tkoenig@gcc.gnu.org> ++! ++ implicit none ++ integer, parameter :: m=10, n=12, count=4 ++ real :: optmatmul(m, n) ++ real :: a(m, count), b(count, n), c(m, n) ++ real, dimension(:,:), allocatable :: tmp ++ call random_number(a) ++ call random_number(b) ++ tmp = matmul(a,b) ++ if (any (lbound (tmp) .ne. [1,1])) call abort ++ if (any (ubound (tmp) .ne. [10,12])) call abort ++ end subroutine ++end program main ++ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0203-2011-04-30-Jerry-DeLisle-jvdelisle-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0203-2011-04-30-Jerry-DeLisle-jvdelisle-gcc.gnu.org.patch new file mode 100644 index 000000000..64b882f0c --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0203-2011-04-30-Jerry-DeLisle-jvdelisle-gcc.gnu.org.patch @@ -0,0 +1,108 @@ +From fe8fe654371824f9121e248a30204bfad7433aba Mon Sep 17 00:00:00 2001 +From: jvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 30 Apr 2011 15:24:57 +0000 +Subject: [PATCH] 2011-04-30 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + Backport from mainline: + PR libgfortran/48030 + * io/read.c (read_x): Re-implement using fbuf_getc. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173218 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 50b1b40..4eda4a2 100644 +--- a/libgfortran/io/read.c ++++ b/libgfortran/io/read.c +@@ -1117,8 +1117,7 @@ bad_float: + void + read_x (st_parameter_dt *dtp, int n) + { +- int length; +- char *p, q; ++ int length, q, q2; + + if ((dtp->u.p.current_unit->pad_status == PAD_NO || is_internal_unit (dtp)) + && dtp->u.p.current_unit->bytes_left < n) +@@ -1131,7 +1130,7 @@ read_x (st_parameter_dt *dtp, int n) + + if (is_internal_unit (dtp)) + { +- p = mem_alloc_r (dtp->u.p.current_unit->s, &length); ++ mem_alloc_r (dtp->u.p.current_unit->s, &length); + if (unlikely (length < n)) + n = length; + goto done; +@@ -1140,55 +1139,37 @@ read_x (st_parameter_dt *dtp, int n) + if (dtp->u.p.sf_seen_eor) + return; + +- p = fbuf_read (dtp->u.p.current_unit, &length); +- if (p == NULL) +- { +- hit_eof (dtp); +- return; +- } +- +- if (length == 0 && dtp->u.p.item_count == 1) +- { +- if (dtp->u.p.current_unit->pad_status == PAD_NO) +- { +- hit_eof (dtp); +- return; +- } +- else +- return; +- } +- + n = 0; + while (n < length) + { +- q = *p; +- if (q == '\n' || q == '\r') ++ q = fbuf_getc (dtp->u.p.current_unit); ++ if (q == EOF) ++ break; ++ else if (q == '\n' || q == '\r') + { + /* Unexpected end of line. Set the position. */ +- fbuf_seek (dtp->u.p.current_unit, n + 1 ,SEEK_CUR); + dtp->u.p.sf_seen_eor = 1; + ++ /* If we see an EOR during non-advancing I/O, we need to skip ++ the rest of the I/O statement. Set the corresponding flag. */ ++ if (dtp->u.p.advance_status == ADVANCE_NO || dtp->u.p.seen_dollar) ++ dtp->u.p.eor_condition = 1; ++ + /* If we encounter a CR, it might be a CRLF. */ + if (q == '\r') /* Probably a CRLF */ + { +- /* See if there is an LF. Use fbuf_read rather then fbuf_getc so +- the position is not advanced unless it really is an LF. */ +- int readlen = 1; +- p = fbuf_read (dtp->u.p.current_unit, &readlen); +- if (*p == '\n' && readlen == 1) +- { +- dtp->u.p.sf_seen_eor = 2; +- fbuf_seek (dtp->u.p.current_unit, 1 ,SEEK_CUR); +- } ++ /* See if there is an LF. */ ++ q2 = fbuf_getc (dtp->u.p.current_unit); ++ if (q2 == '\n') ++ dtp->u.p.sf_seen_eor = 2; ++ else if (q2 != EOF) /* Oops, seek back. */ ++ fbuf_seek (dtp->u.p.current_unit, -1, SEEK_CUR); + } + goto done; + } + n++; +- p++; + } + +- fbuf_seek (dtp->u.p.current_unit, n, SEEK_CUR); +- + done: + if ((dtp->common.flags & IOPARM_DT_HAS_SIZE) != 0) + dtp->u.p.size_used += (GFC_IO_INT) n; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0205-2011-04-30-Doug-Kwan-dougkwan-google.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0205-2011-04-30-Doug-Kwan-dougkwan-google.com.patch new file mode 100644 index 000000000..2e2ef794e --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0205-2011-04-30-Doug-Kwan-dougkwan-google.com.patch @@ -0,0 +1,38 @@ +From 64c92e2bedec2c27ef0e2d4b4674ef17c30e3446 Mon Sep 17 00:00:00 2001 +From: dougkwan <dougkwan@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 1 May 2011 05:10:17 +0000 +Subject: [PATCH] 2011-04-30 Doug Kwan <dougkwan@google.com> + + * include/Makefile.am (install-freestanding-headers): Also install + cxxabi_tweaks.h. + * include/Makefile.in: Regenerate. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173230 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 10ed04c..27b0a4b 100644 +--- a/libstdc++-v3/include/Makefile.am ++++ b/libstdc++-v3/include/Makefile.am +@@ -1201,6 +1201,7 @@ install-freestanding-headers: + $(mkinstalldirs) $(DESTDIR)${gxx_include_dir} + $(mkinstalldirs) $(DESTDIR)${host_installdir} + for file in ${host_srcdir}/os_defines.h ${host_builddir}/c++config.h \ ++ ${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h \ + ${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h; do \ + $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done + $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir} +diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in +index 01e593d..3f1abd3 100644 +--- a/libstdc++-v3/include/Makefile.in ++++ b/libstdc++-v3/include/Makefile.in +@@ -1585,6 +1585,7 @@ install-freestanding-headers: + $(mkinstalldirs) $(DESTDIR)${gxx_include_dir} + $(mkinstalldirs) $(DESTDIR)${host_installdir} + for file in ${host_srcdir}/os_defines.h ${host_builddir}/c++config.h \ ++ ${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h \ + ${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h; do \ + $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done + $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0207-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0207-Backport-from-mainline.patch new file mode 100644 index 000000000..43b3ee56f --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0207-Backport-from-mainline.patch @@ -0,0 +1,132 @@ +From 67ac9513e96e9d5996dd549a1d686e5fcb2c2397 Mon Sep 17 00:00:00 2001 +From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 2 May 2011 12:30:09 +0000 +Subject: [PATCH] Backport from mainline: + 2011-04-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE): + Define. + Use them to handle ELF vs. ECOFF differences. + [__osf__] (_GLOBAL__F_ffi_call_osf): Define. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173246 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d0e7782..6b9f4df 100644 +--- a/libffi/src/alpha/osf.S ++++ b/libffi/src/alpha/osf.S +@@ -1,5 +1,5 @@ + /* ----------------------------------------------------------------------- +- osf.S - Copyright (c) 1998, 2001, 2007, 2008 Red Hat ++ osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011 Red Hat + + Alpha/OSF Foreign Function Interface + +@@ -299,33 +299,51 @@ $load_table: + #endif + + #ifdef __ELF__ ++# define UA_SI .4byte ++# define FDE_ENCODING 0x1b /* pcrel sdata4 */ ++# define FDE_ENCODE(X) .4byte X-. ++# define FDE_ARANGE(X) .4byte X ++#elif defined __osf__ ++# define UA_SI .align 0; .long ++# define FDE_ENCODING 0x50 /* aligned absolute */ ++# define FDE_ENCODE(X) .align 3; .quad X ++# define FDE_ARANGE(X) .align 0; .quad X ++#endif ++ ++#ifdef __ELF__ + .section .eh_frame,EH_FRAME_FLAGS,@progbits ++#elif defined __osf__ ++ .data ++ .align 3 ++ .globl _GLOBAL__F_ffi_call_osf ++_GLOBAL__F_ffi_call_osf: ++#endif + __FRAME_BEGIN__: +- .4byte $LECIE1-$LSCIE1 # Length of Common Information Entry ++ UA_SI $LECIE1-$LSCIE1 # Length of Common Information Entry + $LSCIE1: +- .4byte 0x0 # CIE Identifier Tag ++ UA_SI 0x0 # CIE Identifier Tag + .byte 0x1 # CIE Version + .ascii "zR\0" # CIE Augmentation + .byte 0x1 # uleb128 0x1; CIE Code Alignment Factor + .byte 0x78 # sleb128 -8; CIE Data Alignment Factor + .byte 26 # CIE RA Column + .byte 0x1 # uleb128 0x1; Augmentation size +- .byte 0x1b # FDE Encoding (pcrel sdata4) ++ .byte FDE_ENCODING # FDE Encoding + .byte 0xc # DW_CFA_def_cfa + .byte 30 # uleb128 column 30 + .byte 0 # uleb128 offset 0 + .align 3 + $LECIE1: + $LSFDE1: +- .4byte $LEFDE1-$LASFDE1 # FDE Length ++ UA_SI $LEFDE1-$LASFDE1 # FDE Length + $LASFDE1: +- .4byte $LASFDE1-__FRAME_BEGIN__ # FDE CIE offset +- .4byte $LFB1-. # FDE initial location +- .4byte $LFE1-$LFB1 # FDE address range ++ UA_SI $LASFDE1-__FRAME_BEGIN__ # FDE CIE offset ++ FDE_ENCODE($LFB1) # FDE initial location ++ FDE_ARANGE($LFE1-$LFB1) # FDE address range + .byte 0x0 # uleb128 0x0; Augmentation size + + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI1-$LFB1 ++ UA_SI $LCFI1-$LFB1 + .byte 0x9a # DW_CFA_offset, column 26 + .byte 4 # uleb128 4*-8 + .byte 0x8f # DW_CFA_offset, column 15 +@@ -335,32 +353,35 @@ $LASFDE1: + .byte 32 # uleb128 offset 32 + + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI2-$LCFI1 ++ UA_SI $LCFI2-$LCFI1 + .byte 0xda # DW_CFA_restore, column 26 + .align 3 + $LEFDE1: + + $LSFDE3: +- .4byte $LEFDE3-$LASFDE3 # FDE Length ++ UA_SI $LEFDE3-$LASFDE3 # FDE Length + $LASFDE3: +- .4byte $LASFDE3-__FRAME_BEGIN__ # FDE CIE offset +- .4byte $LFB2-. # FDE initial location +- .4byte $LFE2-$LFB2 # FDE address range ++ UA_SI $LASFDE3-__FRAME_BEGIN__ # FDE CIE offset ++ FDE_ENCODE($LFB2) # FDE initial location ++ FDE_ARANGE($LFE2-$LFB2) # FDE address range + .byte 0x0 # uleb128 0x0; Augmentation size + + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI5-$LFB2 ++ UA_SI $LCFI5-$LFB2 + .byte 0xe # DW_CFA_def_cfa_offset + .byte 0x80,0x1 # uleb128 128 + + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI6-$LCFI5 ++ UA_SI $LCFI6-$LCFI5 + .byte 0x9a # DW_CFA_offset, column 26 + .byte 16 # uleb128 offset 16*-8 + .align 3 + $LEFDE3: ++#if defined __osf__ ++ .align 0 ++ .long 0 # End of Table ++#endif + +-#ifdef __linux__ ++#if defined __ELF__ && defined __linux__ + .section .note.GNU-stack,"",@progbits + #endif +-#endif +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0209-PR-target-48723.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0209-PR-target-48723.patch new file mode 100644 index 000000000..01df53486 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0209-PR-target-48723.patch @@ -0,0 +1,26 @@ +From 55ec7e3af4823fc378f78e35b795af1bafcd3542 Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 3 May 2011 07:20:30 +0000 +Subject: [PATCH] PR target/48723 + * config/i386/i386.c (ix86_expand_prologue): Do not probe the stack + for -fstack-check if the size to allocate is negative. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173289 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 6e4bb3b..f3a8a0c 100644 +--- a/gcc/config/i386/i386.c ++++ b/gcc/config/i386/i386.c +@@ -10566,8 +10566,8 @@ ix86_expand_prologue (void) + } + + /* The stack has already been decremented by the instruction calling us +- so we need to probe unconditionally to preserve the protection area. */ +- if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK) ++ so probe if the size is non-negative to preserve the protection area. */ ++ if (allocate >= 0 && flag_stack_check == STATIC_BUILTIN_STACK_CHECK) + { + /* We expect the registers to be saved when probes are used. */ + gcc_assert (int_registers_saved); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0210-2011-05-03-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0210-2011-05-03-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..38cf00220 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0210-2011-05-03-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,45 @@ +From 70c664c19627b688855bb6189db0b314e1d19567 Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 3 May 2011 10:21:44 +0000 +Subject: [PATCH] 2011-05-03 Richard Guenther <rguenther@suse.de> + + PR lto/48846 + * lto-streamer-in.c (unpack_ts_decl_common_value_fields): + Stream decl_common.off_align instead of the derived DECL_OFFSET_ALIGN. + * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173299 138bc75d-0d04-0410-961f-82ee72b054a4 + +index a873258..4783717 100644 +--- a/gcc/lto-streamer-in.c ++++ b/gcc/lto-streamer-in.c +@@ -1596,11 +1596,9 @@ unpack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr) + + if (TREE_CODE (expr) == FIELD_DECL) + { +- unsigned HOST_WIDE_INT off_align; + DECL_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1); + DECL_NONADDRESSABLE_P (expr) = (unsigned) bp_unpack_value (bp, 1); +- off_align = (unsigned HOST_WIDE_INT) bp_unpack_value (bp, 8); +- SET_DECL_OFFSET_ALIGN (expr, off_align); ++ expr->decl_common.off_align = bp_unpack_value (bp, 8); + } + + if (TREE_CODE (expr) == RESULT_DECL +diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c +index ba916b6..3b90fdd 100644 +--- a/gcc/lto-streamer-out.c ++++ b/gcc/lto-streamer-out.c +@@ -414,7 +414,7 @@ pack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr) + { + bp_pack_value (bp, DECL_PACKED (expr), 1); + bp_pack_value (bp, DECL_NONADDRESSABLE_P (expr), 1); +- bp_pack_value (bp, DECL_OFFSET_ALIGN (expr), 8); ++ bp_pack_value (bp, expr->decl_common.off_align, 8); + } + + if (TREE_CODE (expr) == RESULT_DECL +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0211-PR-target-48774.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0211-PR-target-48774.patch new file mode 100644 index 000000000..7ef98eb44 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0211-PR-target-48774.patch @@ -0,0 +1,78 @@ +From ab9047340859545251be5c074524d69327901407 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 3 May 2011 13:06:06 +0000 +Subject: [PATCH] PR target/48774 + * config/i386/i386.c (ix86_match_ccmode): For CC{A,C,O,S}mode + only succeed if req_mode is the same as set_mode. + + * gcc.dg/pr48774.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173302 138bc75d-0d04-0410-961f-82ee72b054a4 + +index f3a8a0c..e8210c5 100644 +--- a/gcc/config/i386/i386.c ++++ b/gcc/config/i386/i386.c +@@ -17194,11 +17194,15 @@ ix86_match_ccmode (rtx insn, enum machine_mode req_mode) + if (req_mode == CCZmode) + return false; + /* FALLTHRU */ ++ case CCZmode: ++ break; ++ + case CCAmode: + case CCCmode: + case CCOmode: + case CCSmode: +- case CCZmode: ++ if (set_mode != req_mode) ++ return false; + break; + + default: +new file mode 100644 +index 0000000..91ce361 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr48774.c +@@ -0,0 +1,38 @@ ++/* PR target/48774 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -funroll-loops" } */ ++ ++extern void abort (void); ++unsigned long int s[24] ++ = { 12, ~1, 12, ~2, 12, ~4, 12, ~8, 12, ~16, 12, ~32, ++ 12, ~64, 12, ~128, 12, ~256, 12, ~512, 12, ~1024, 12, ~2048 }; ++struct { int n; unsigned long *e[12]; } g ++ = { 12, { &s[0], &s[2], &s[4], &s[6], &s[8], &s[10], &s[12], &s[14], ++ &s[16], &s[18], &s[20], &s[22] } }; ++int c[12]; ++ ++__attribute__((noinline, noclone)) void ++foo (void) ++{ ++ int i, j; ++ for (i = 0; i < g.n; i++) ++ for (j = 0; j < g.n; j++) ++ { ++ if (i == j && j < g.e[0][0] && (g.e[i][1] & (1UL << j))) ++ abort (); ++ if (j < g.e[0][0] && (g.e[i][1] & (1UL << j))) ++ c[i]++; ++ } ++} ++ ++int ++main () ++{ ++ int i; ++ asm volatile ("" : "+m" (s), "+m" (g), "+m" (c)); ++ foo (); ++ for (i = 0; i < 12; i++) ++ if (c[i] != 11) ++ abort (); ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0212-2011-05-03-Paolo-Carlini-paolo.carlini-oracle.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0212-2011-05-03-Paolo-Carlini-paolo.carlini-oracle.com.patch new file mode 100644 index 000000000..46fc3dc92 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0212-2011-05-03-Paolo-Carlini-paolo.carlini-oracle.com.patch @@ -0,0 +1,462 @@ +From 6cc36bf90838d09b0a4899228bde2b009dd7c7dc Mon Sep 17 00:00:00 2001 +From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 3 May 2011 17:54:35 +0000 +Subject: [PATCH] 2011-05-03 Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/48750 + * include/parallel/multiway_merge.h: Run _ValueType destructors. + * include/parallel/multiway_mergesort.h: Likewise. + * include/parallel/quicksort.h: Likewise. + * include/parallel/random_shuffle.h: Likewise. + * include/parallel/partial_sum.h: Likewise. + * include/parallel/losertree.h: Run destructors; minor tweaks. + * include/parallel/par_loop.h: Run destructors, fix memory + allocations and deallocations. + * testsuite/26_numerics/accumulate/48750.cc: New. + + * testsuite/ext/profile/mutex_extensions_neg.cc: Do not run in + parallel-mode to avoid spurious multiple errors. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173335 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 8d7b137..cb24f7f 100644 +--- a/libstdc++-v3/include/parallel/losertree.h ++++ b/libstdc++-v3/include/parallel/losertree.h +@@ -1,6 +1,6 @@ + // -*- C++ -*- + +-// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. ++// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the terms +@@ -116,7 +116,11 @@ namespace __gnu_parallel + * @brief The destructor. + */ + ~_LoserTreeBase() +- { ::operator delete(_M_losers); } ++ { ++ for (unsigned int __i = 0; __i < (2 * _M_k); ++__i) ++ _M_losers[__i].~_Loser(); ++ ::operator delete(_M_losers); ++ } + + /** + * @brief Initializes the sequence "_M_source" with the element "__key". +@@ -131,15 +135,15 @@ namespace __gnu_parallel + { + unsigned int __pos = _M_k + __source; + +- if(_M_first_insert) ++ if (_M_first_insert) + { +- // Construct all keys, so we can easily deconstruct them. ++ // Construct all keys, so we can easily destruct them. + for (unsigned int __i = 0; __i < (2 * _M_k); ++__i) +- new(&(_M_losers[__i]._M_key)) _Tp(__key); ++ ::new(&(_M_losers[__i]._M_key)) _Tp(__key); + _M_first_insert = false; + } + else +- new(&(_M_losers[__pos]._M_key)) _Tp(__key); ++ _M_losers[__pos]._M_key = __key; + + _M_losers[__pos]._M_sup = __sup; + _M_losers[__pos]._M_source = __source; +@@ -379,7 +383,7 @@ namespace __gnu_parallel + } + + ~_LoserTreePointerBase() +- { ::operator delete[](_M_losers); } ++ { delete[] _M_losers; } + + int __get_min_source() + { return _M_losers[0]._M_source; } +@@ -577,7 +581,7 @@ namespace __gnu_parallel + _Compare _M_comp; + + public: +- _LoserTreeUnguardedBase(unsigned int __k, const _Tp __sentinel, ++ _LoserTreeUnguardedBase(unsigned int __k, const _Tp& __sentinel, + _Compare __comp = std::less<_Tp>()) + : _M_comp(__comp) + { +@@ -590,15 +594,24 @@ namespace __gnu_parallel + _M_losers = static_cast<_Loser*>(::operator new(2 * _M_k + * sizeof(_Loser))); + +- for (unsigned int __i = _M_k + _M_ik - 1; __i < (2 * _M_k); ++__i) +- { +- _M_losers[__i]._M_key = __sentinel; ++ for (unsigned int __i = 0; __i < _M_k; ++__i) ++ { ++ ::new(&(_M_losers[__i]._M_key)) _Tp(__sentinel); ++ _M_losers[__i]._M_source = -1; ++ } ++ for (unsigned int __i = _M_k + _M_ik - 1; __i < (2 * _M_k); ++__i) ++ { ++ ::new(&(_M_losers[__i]._M_key)) _Tp(__sentinel); + _M_losers[__i]._M_source = -1; + } + } + + ~_LoserTreeUnguardedBase() +- { ::operator delete(_M_losers); } ++ { ++ for (unsigned int __i = 0; __i < (2 * _M_k); ++__i) ++ _M_losers[__i].~_Loser(); ++ ::operator delete(_M_losers); ++ } + + int + __get_min_source() +@@ -615,7 +628,7 @@ namespace __gnu_parallel + { + unsigned int __pos = _M_k + __source; + +- new(&(_M_losers[__pos]._M_key)) _Tp(__key); ++ ::new(&(_M_losers[__pos]._M_key)) _Tp(__key); + _M_losers[__pos]._M_source = __source; + } + }; +@@ -634,7 +647,7 @@ namespace __gnu_parallel + using _Base::_M_losers; + + public: +- _LoserTreeUnguarded(unsigned int __k, const _Tp __sentinel, ++ _LoserTreeUnguarded(unsigned int __k, const _Tp& __sentinel, + _Compare __comp = std::less<_Tp>()) + : _Base::_LoserTreeUnguardedBase(__k, __sentinel, __comp) + { } +@@ -721,7 +734,7 @@ namespace __gnu_parallel + using _Base::_M_losers; + + public: +- _LoserTreeUnguarded(unsigned int __k, const _Tp __sentinel, ++ _LoserTreeUnguarded(unsigned int __k, const _Tp& __sentinel, + _Compare __comp = std::less<_Tp>()) + : _Base::_LoserTreeUnguardedBase(__k, __sentinel, __comp) + { } +diff --git a/libstdc++-v3/include/parallel/multiway_merge.h b/libstdc++-v3/include/parallel/multiway_merge.h +index 0fd3da2..00df31c 100644 +--- a/libstdc++-v3/include/parallel/multiway_merge.h ++++ b/libstdc++-v3/include/parallel/multiway_merge.h +@@ -1045,11 +1045,12 @@ namespace __gnu_parallel + _ValueType; + + // __k sequences. +- _SeqNumber __k = static_cast<_SeqNumber>(__seqs_end - __seqs_begin); ++ const _SeqNumber __k ++ = static_cast<_SeqNumber>(__seqs_end - __seqs_begin); + +- _ThreadIndex __num_threads = omp_get_num_threads(); ++ const _ThreadIndex __num_threads = omp_get_num_threads(); + +- _DifferenceType __num_samples = ++ const _DifferenceType __num_samples = + __gnu_parallel::_Settings::get().merge_oversampling * __num_threads; + + _ValueType* __samples = static_cast<_ValueType*> +@@ -1096,6 +1097,10 @@ namespace __gnu_parallel + __pieces[__slab][__seq].second = + _GLIBCXX_PARALLEL_LENGTH(__seqs_begin[__seq]); + } ++ ++ for (_SeqNumber __s = 0; __s < __k; ++__s) ++ for (_DifferenceType __i = 0; __i < __num_samples; ++__i) ++ __samples[__s * __num_samples + __i].~_ValueType(); + ::operator delete(__samples); + } + +@@ -1258,10 +1263,10 @@ namespace __gnu_parallel + __length = std::min<_DifferenceTp>(__length, __total_length); + + if (__total_length == 0 || __k == 0) +- { +- delete[] __ne_seqs; +- return __target; +- } ++ { ++ delete[] __ne_seqs; ++ return __target; ++ } + + std::vector<std::pair<_DifferenceType, _DifferenceType> >* __pieces; + +diff --git a/libstdc++-v3/include/parallel/multiway_mergesort.h b/libstdc++-v3/include/parallel/multiway_mergesort.h +index c0dab63..af7c10a 100644 +--- a/libstdc++-v3/include/parallel/multiway_mergesort.h ++++ b/libstdc++-v3/include/parallel/multiway_mergesort.h +@@ -378,6 +378,8 @@ namespace __gnu_parallel + + # pragma omp barrier + ++ for (_DifferenceType __i = 0; __i < __length_local; ++__i) ++ __sd->_M_temporary[__iam][__i].~_ValueType(); + ::operator delete(__sd->_M_temporary[__iam]); + } + +@@ -413,6 +415,7 @@ namespace __gnu_parallel + // shared variables + _PMWMSSortingData<_RAIter> __sd; + _DifferenceType* __starts; ++ _DifferenceType __size; + + # pragma omp parallel num_threads(__num_threads) + { +@@ -427,7 +430,7 @@ namespace __gnu_parallel + + if (!__exact) + { +- _DifferenceType __size = ++ __size = + (_Settings::get().sort_mwms_oversampling * __num_threads - 1) + * __num_threads; + __sd._M_samples = static_cast<_ValueType*> +@@ -463,7 +466,11 @@ namespace __gnu_parallel + delete[] __sd._M_temporary; + + if (!__exact) +- ::operator delete(__sd._M_samples); ++ { ++ for (_DifferenceType __i = 0; __i < __size; ++__i) ++ __sd._M_samples[__i].~_ValueType(); ++ ::operator delete(__sd._M_samples); ++ } + + delete[] __sd._M_offsets; + delete[] __sd._M_pieces; +diff --git a/libstdc++-v3/include/parallel/par_loop.h b/libstdc++-v3/include/parallel/par_loop.h +index 1e21d3a..b776df4 100644 +--- a/libstdc++-v3/include/parallel/par_loop.h ++++ b/libstdc++-v3/include/parallel/par_loop.h +@@ -91,8 +91,7 @@ namespace __gnu_parallel + _ThreadIndex __iam = omp_get_thread_num(); + + // Neutral element. +- _Result* __reduct = static_cast<_Result*> +- (::operator new(sizeof(_Result))); ++ _Result* __reduct; + + _DifferenceType + __start = equally_split_point(__length, __num_threads, __iam), +@@ -100,7 +99,7 @@ namespace __gnu_parallel + + if (__start < __stop) + { +- new(__reduct) _Result(__f(__o, __begin + __start)); ++ __reduct = new _Result(__f(__o, __begin + __start)); + ++__start; + __constructed[__iam] = true; + } +@@ -110,18 +109,26 @@ namespace __gnu_parallel + for (; __start < __stop; ++__start) + *__reduct = __r(*__reduct, __f(__o, __begin + __start)); + +- __thread_results[__iam] = *__reduct; ++ if (__constructed[__iam]) ++ { ++ ::new(&__thread_results[__iam]) _Result(*__reduct); ++ delete __reduct; ++ } + } //parallel + + for (_ThreadIndex __i = 0; __i < __num_threads; ++__i) + if (__constructed[__i]) +- __output = __r(__output, __thread_results[__i]); ++ { ++ __output = __r(__output, __thread_results[__i]); ++ __thread_results[__i].~_Result(); ++ } + + // Points to last element processed (needed as return value for + // some algorithms like transform). + __f._M_finish_iterator = __begin + __length; + +- delete[] __thread_results; ++ ::operator delete(__thread_results); ++ + delete[] __constructed; + + return __o; +diff --git a/libstdc++-v3/include/parallel/partial_sum.h b/libstdc++-v3/include/parallel/partial_sum.h +index 5513c2f..0be9881 100644 +--- a/libstdc++-v3/include/parallel/partial_sum.h ++++ b/libstdc++-v3/include/parallel/partial_sum.h +@@ -184,7 +184,10 @@ namespace __gnu_parallel + __bin_op, __sums[__iam]); + } //parallel + ++ for (_ThreadIndex __i = 0; __i < __num_threads; ++__i) ++ __sums[__i].~_ValueType(); + ::operator delete(__sums); ++ + delete[] __borders; + + return __result + __n; +diff --git a/libstdc++-v3/include/parallel/quicksort.h b/libstdc++-v3/include/parallel/quicksort.h +index 1884eb8..1b4d598 100644 +--- a/libstdc++-v3/include/parallel/quicksort.h ++++ b/libstdc++-v3/include/parallel/quicksort.h +@@ -1,6 +1,6 @@ + // -*- C++ -*- + +-// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ++// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the terms +@@ -82,6 +82,8 @@ namespace __gnu_parallel + _DifferenceType __split = __parallel_partition(__begin, __end, + __pred, __num_threads); + ++ for (_DifferenceType __s = 0; __s < __num_samples; ++__s) ++ __samples[__s].~_ValueType(); + ::operator delete(__samples); + + return __split; +diff --git a/libstdc++-v3/include/parallel/random_shuffle.h b/libstdc++-v3/include/parallel/random_shuffle.h +index bae9572..c3967c2 100644 +--- a/libstdc++-v3/include/parallel/random_shuffle.h ++++ b/libstdc++-v3/include/parallel/random_shuffle.h +@@ -1,6 +1,6 @@ + // -*- C++ -*- + +-// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ++// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the terms +@@ -209,7 +209,7 @@ namespace __gnu_parallel + _ThreadIndex __target_p = __bin_proc[__target_bin]; + + // Last column [__d->_M_num_threads] stays unchanged. +- ::new(&(__temporaries[__target_p][__dist[__target_bin + 1]++])) ++ ::new(&(__temporaries[__target_p][__dist[__target_bin + 1]++])) + _ValueType(*(__source + __i + __start)); + } + +@@ -227,8 +227,8 @@ namespace __gnu_parallel + (__sd->_M_temporaries[__iam] + + (__b == __d->_M_bins_begin + ? 0 : __sd->_M_dist[__b][__d->_M_num_threads])), +- * __end = (__sd->_M_temporaries[__iam] +- + __sd->_M_dist[__b + 1][__d->_M_num_threads]); ++ *__end = (__sd->_M_temporaries[__iam] ++ + __sd->_M_dist[__b + 1][__d->_M_num_threads]); + + __sequential_random_shuffle(__begin, __end, __rng); + std::copy(__begin, __end, __sd->_M_source + __global_offset +@@ -236,6 +236,8 @@ namespace __gnu_parallel + ? 0 : __sd->_M_dist[__b][__d->_M_num_threads])); + } + ++ for (_SequenceIndex __i = 0; __i < __offset; ++__i) ++ __sd->_M_temporaries[__iam][__i].~_ValueType(); + ::operator delete(__sd->_M_temporaries[__iam]); + } + +@@ -501,6 +503,9 @@ namespace __gnu_parallel + delete[] __dist0; + delete[] __dist1; + delete[] __oracles; ++ ++ for (_DifferenceType __i = 0; __i < __n; ++__i) ++ __target[__i].~_ValueType(); + ::operator delete(__target); + } + else +diff --git a/libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc b/libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc +new file mode 100644 +index 0000000..450382c +--- /dev/null ++++ b/libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc +@@ -0,0 +1,70 @@ ++// Copyright (C) 2011 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// <http://www.gnu.org/licenses/>. ++ ++#include <vector> ++#include <numeric> ++ ++class NaturalParameters ++{ ++public: ++ ++ NaturalParameters() ++ : m_data(2) ++ { } ++ ++ std::vector<double>::const_iterator ++ begin() const ++ { return m_data.begin(); } ++ ++ std::vector<double>::const_iterator ++ end() const ++ { return m_data.begin(); } ++ ++ NaturalParameters& ++ operator+=(const NaturalParameters&) ++ { return *this; } ++ ++private: ++ std::vector<double> m_data; ++}; ++ ++inline ++NaturalParameters ++operator+(const NaturalParameters& a, const NaturalParameters& b) ++{ ++ NaturalParameters tmp = a; ++ return tmp += b; ++} ++ ++// libstdc++/48750 ++void test01() ++{ ++ // Used to fail in parallel-mode with a segfault. ++ for (std::size_t i = 0; i < 1000; ++i) ++ { ++ std::vector<NaturalParameters> ChildrenNP(1000); ++ NaturalParameters init; ++ NaturalParameters NP = std::accumulate(ChildrenNP.begin(), ++ ChildrenNP.end(), init); ++ } ++} ++ ++int main() ++{ ++ test01(); ++ return 0; ++} +diff --git a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc +index 174a8af..c0b1f68 100644 +--- a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc ++++ b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc +@@ -3,6 +3,9 @@ + + // -*- C++ -*- + ++// Otherwise we may get *multiple* errors. ++#undef _GLIBCXX_PARALLEL ++ + // Copyright (C) 2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0214-include-ext-sso_string_base.h-__sso_string_base-_M_c.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0214-include-ext-sso_string_base.h-__sso_string_base-_M_c.patch new file mode 100644 index 000000000..d4065898d --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0214-include-ext-sso_string_base.h-__sso_string_base-_M_c.patch @@ -0,0 +1,178 @@ +From b4dba0d5e1b14b28113b6a44c9264aa3c05e40f0 Mon Sep 17 00:00:00 2001 +From: aaw <aaw@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 4 May 2011 14:48:41 +0000 +Subject: [PATCH] * include/ext/sso_string_base.h (__sso_string_base<>::_M_construct): + Fix unqualified lookup. + (__sso_string_base<>::_M_construct): Likewise. + (__sso_string_base<>::_M_construct): Likewise. + (__sso_string_base<>::_M_assign): Likewise. + (__sso_string_base<>::_M_reserve): Likewise. + (__sso_string_base<>::_M_mutate): Likewise. + (__sso_string_base<>::_M_erase): Likewise. + * include/ext/vstring.h (__versa_string<>::replace): Likewise. + (__versa_string<>::compare): Likewise. + * include/ext/vstring.tcc (__versa_string<>::compare): Likewise. + (__versa_string<>::compare): Likewise. + (__versa_string<>::compare): Likewise. + (__versa_string<>::compare): Likewise. + (__versa_string<>::compare): Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173377 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 053f514..ccaf419 100644 +--- a/libstdc++-v3/include/ext/sso_string_base.h ++++ b/libstdc++-v3/include/ext/sso_string_base.h +@@ -411,7 +411,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // Allocate more space. + __capacity = __len + 1; + _CharT* __another = _M_create(__capacity, __len); +- _S_copy(__another, _M_data(), __len); ++ this->_S_copy(__another, _M_data(), __len); + _M_dispose(); + _M_data(__another); + _M_capacity(__capacity); +@@ -451,7 +451,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Check for out_of_range and length_error exceptions. + __try +- { _S_copy_chars(_M_data(), __beg, __end); } ++ { this->_S_copy_chars(_M_data(), __beg, __end); } + __catch(...) + { + _M_dispose(); +@@ -473,7 +473,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + } + + if (__n) +- _S_assign(_M_data(), __n, __c); ++ this->_S_assign(_M_data(), __n, __c); + + _M_set_length(__n); + } +@@ -498,7 +498,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + } + + if (__rsize) +- _S_copy(_M_data(), __rcs._M_data(), __rsize); ++ this->_S_copy(_M_data(), __rcs._M_data(), __rsize); + + _M_set_length(__rsize); + } +@@ -520,14 +520,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + || __res > size_type(_S_local_capacity)) + { + _CharT* __tmp = _M_create(__res, __capacity); +- _S_copy(__tmp, _M_data(), _M_length() + 1); ++ this->_S_copy(__tmp, _M_data(), _M_length() + 1); + _M_dispose(); + _M_data(__tmp); + _M_capacity(__res); + } + else if (!_M_is_local()) + { +- _S_copy(_M_local_data, _M_data(), _M_length() + 1); ++ this->_S_copy(_M_local_data, _M_data(), _M_length() + 1); + _M_destroy(__capacity); + _M_data(_M_local_data); + } +@@ -546,12 +546,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + _CharT* __r = _M_create(__new_capacity, _M_capacity()); + + if (__pos) +- _S_copy(__r, _M_data(), __pos); ++ this->_S_copy(__r, _M_data(), __pos); + if (__s && __len2) +- _S_copy(__r + __pos, __s, __len2); ++ this->_S_copy(__r + __pos, __s, __len2); + if (__how_much) +- _S_copy(__r + __pos + __len2, +- _M_data() + __pos + __len1, __how_much); ++ this->_S_copy(__r + __pos + __len2, ++ _M_data() + __pos + __len1, __how_much); + + _M_dispose(); + _M_data(__r); +@@ -566,8 +566,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + const size_type __how_much = _M_length() - __pos - __n; + + if (__how_much && __n) +- _S_move(_M_data() + __pos, _M_data() + __pos + __n, +- __how_much); ++ this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); + + _M_set_length(_M_length() - __n); + } +diff --git a/libstdc++-v3/include/ext/vstring.h b/libstdc++-v3/include/ext/vstring.h +index 6e43e2b..442a392 100644 +--- a/libstdc++-v3/include/ext/vstring.h ++++ b/libstdc++-v3/include/ext/vstring.h +@@ -1359,7 +1359,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + && __i2 <= _M_iend()); + __glibcxx_requires_valid_range(__k1, __k2); + typedef typename std::__is_integer<_InputIterator>::__type _Integral; +- return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral()); ++ return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral()); + } + + // Specializations for the common case of pointer and iterator: +@@ -1914,7 +1914,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + int __r = traits_type::compare(this->_M_data(), __str.data(), __len); + if (!__r) +- __r = _S_compare(__size, __osize); ++ __r = this->_S_compare(__size, __osize); + return __r; + } + +diff --git a/libstdc++-v3/include/ext/vstring.tcc b/libstdc++-v3/include/ext/vstring.tcc +index e36058b..588985b 100644 +--- a/libstdc++-v3/include/ext/vstring.tcc ++++ b/libstdc++-v3/include/ext/vstring.tcc +@@ -466,7 +466,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + int __r = traits_type::compare(this->_M_data() + __pos, + __str.data(), __len); + if (!__r) +- __r = _S_compare(__n, __osize); ++ __r = this->_S_compare(__n, __osize); + return __r; + } + +@@ -485,7 +485,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + int __r = traits_type::compare(this->_M_data() + __pos1, + __str.data() + __pos2, __len); + if (!__r) +- __r = _S_compare(__n1, __n2); ++ __r = this->_S_compare(__n1, __n2); + return __r; + } + +@@ -501,7 +501,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + const size_type __len = std::min(__size, __osize); + int __r = traits_type::compare(this->_M_data(), __s, __len); + if (!__r) +- __r = _S_compare(__size, __osize); ++ __r = this->_S_compare(__size, __osize); + return __r; + } + +@@ -518,7 +518,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + const size_type __len = std::min(__n1, __osize); + int __r = traits_type::compare(this->_M_data() + __pos, __s, __len); + if (!__r) +- __r = _S_compare(__n1, __osize); ++ __r = this->_S_compare(__n1, __osize); + return __r; + } + +@@ -535,7 +535,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + const size_type __len = std::min(__n1, __n2); + int __r = traits_type::compare(this->_M_data() + __pos, __s, __len); + if (!__r) +- __r = _S_compare(__n1, __n2); ++ __r = this->_S_compare(__n1, __n2); + return __r; + } + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0215-config-i386-i386.md-movdi_internal_rex64-TYPE_SSEMOV.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0215-config-i386-i386.md-movdi_internal_rex64-TYPE_SSEMOV.patch new file mode 100644 index 000000000..813b549ed --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0215-config-i386-i386.md-movdi_internal_rex64-TYPE_SSEMOV.patch @@ -0,0 +1,244 @@ +From 29c9d7b889311e84c52f371bdbc8d37f1c82b47f Mon Sep 17 00:00:00 2001 +From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 4 May 2011 17:01:43 +0000 +Subject: [PATCH] * config/i386/i386.md (*movdi_internal_rex64) <TYPE_SSEMOV>: + Use %v prefix in insn mnemonic to handle TARGET_AVX. + (*movdi_internal): Use "maybe_vex" instead of "vex" in "prefix" + attribute calculation. + (*movdf_internal): Output AVX mnemonics. Add "prefix" attribute. + * config/i386/sse.md (*sse2_storeq_rex64): Do not emit %v prefix + for mov{q} mnemonic. + (*vec_extractv2di_1_rex64_avx): Ditto. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173382 138bc75d-0d04-0410-961f-82ee72b054a4 + +index c50002e..a90e310 100644 +--- a/gcc/config/i386/i386.md ++++ b/gcc/config/i386/i386.md +@@ -1974,21 +1974,15 @@ + return "movdq2q\t{%1, %0|%0, %1}"; + + case TYPE_SSEMOV: +- if (TARGET_AVX) +- { +- if (get_attr_mode (insn) == MODE_TI) +- return "vmovdqa\t{%1, %0|%0, %1}"; +- else +- return "vmovq\t{%1, %0|%0, %1}"; +- } +- + if (get_attr_mode (insn) == MODE_TI) +- return "movdqa\t{%1, %0|%0, %1}"; +- /* FALLTHRU */ ++ return "%vmovdqa\t{%1, %0|%0, %1}"; ++ /* Handle broken assemblers that require movd instead of movq. */ ++ if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])) ++ return "%vmovd\t{%1, %0|%0, %1}"; ++ return "%vmovq\t{%1, %0|%0, %1}"; + + case TYPE_MMXMOV: +- /* Moves from and into integer register is done using movd +- opcode with REX prefix. */ ++ /* Handle broken assemblers that require movd instead of movq. */ + if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])) + return "movd\t{%1, %0|%0, %1}"; + return "movq\t{%1, %0|%0, %1}"; +@@ -2108,7 +2102,7 @@ + [(set_attr "type" "*,*,mmx,mmxmov,mmxmov,sselog1,ssemov,ssemov,ssemov,sselog1,ssemov,ssemov,ssemov") + (set (attr "prefix") + (if_then_else (eq_attr "alternative" "5,6,7,8") +- (const_string "vex") ++ (const_string "maybe_vex") + (const_string "orig"))) + (set_attr "mode" "DI,DI,DI,DI,DI,TI,DI,TI,DI,V4SF,V2SF,V4SF,V2SF")]) + +@@ -2997,7 +2991,8 @@ + + case 11: + case 12: +- return "%vmovd\t{%1, %0|%0, %1}"; ++ /* Handle broken assemblers that require movd instead of movq. */ ++ return "%vmovd\t{%1, %0|%0, %1}"; + + default: + gcc_unreachable(); +@@ -3106,17 +3101,17 @@ + switch (get_attr_mode (insn)) + { + case MODE_V4SF: +- return "xorps\t%0, %0"; ++ return "%vxorps\t%0, %d0"; + case MODE_V2DF: + if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL) +- return "xorps\t%0, %0"; ++ return "%vxorps\t%0, %d0"; + else +- return "xorpd\t%0, %0"; ++ return "%vxorpd\t%0, %d0"; + case MODE_TI: + if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL) +- return "xorps\t%0, %0"; ++ return "%vxorps\t%0, %d0"; + else +- return "pxor\t%0, %0"; ++ return "%vpxor\t%0, %d0"; + default: + gcc_unreachable (); + } +@@ -3126,34 +3121,62 @@ + switch (get_attr_mode (insn)) + { + case MODE_V4SF: +- return "movaps\t{%1, %0|%0, %1}"; ++ return "%vmovaps\t{%1, %0|%0, %1}"; + case MODE_V2DF: + if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL) +- return "movaps\t{%1, %0|%0, %1}"; ++ return "%vmovaps\t{%1, %0|%0, %1}"; + else +- return "movapd\t{%1, %0|%0, %1}"; ++ return "%vmovapd\t{%1, %0|%0, %1}"; + case MODE_TI: + if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL) +- return "movaps\t{%1, %0|%0, %1}"; ++ return "%vmovaps\t{%1, %0|%0, %1}"; + else +- return "movdqa\t{%1, %0|%0, %1}"; ++ return "%vmovdqa\t{%1, %0|%0, %1}"; + case MODE_DI: +- return "movq\t{%1, %0|%0, %1}"; ++ return "%vmovq\t{%1, %0|%0, %1}"; + case MODE_DF: +- return "movsd\t{%1, %0|%0, %1}"; ++ if (TARGET_AVX) ++ { ++ if (REG_P (operands[0]) && REG_P (operands[1])) ++ return "vmovsd\t{%1, %0, %0|%0, %0, %1}"; ++ else ++ return "vmovsd\t{%1, %0|%0, %1}"; ++ } ++ else ++ return "movsd\t{%1, %0|%0, %1}"; + case MODE_V1DF: +- return "movlpd\t{%1, %0|%0, %1}"; ++ if (TARGET_AVX) ++ { ++ if (REG_P (operands[0])) ++ return "vmovlpd\t{%1, %0, %0|%0, %0, %1}"; ++ else ++ return "vmovlpd\t{%1, %0|%0, %1}"; ++ } ++ else ++ return "movlpd\t{%1, %0|%0, %1}"; + case MODE_V2SF: +- return "movlps\t{%1, %0|%0, %1}"; ++ if (TARGET_AVX) ++ { ++ if (REG_P (operands[0])) ++ return "vmovlps\t{%1, %0, %0|%0, %0, %1}"; ++ else ++ return "vmovlps\t{%1, %0|%0, %1}"; ++ } ++ else ++ return "movlps\t{%1, %0|%0, %1}"; + default: + gcc_unreachable (); + } + + default: +- gcc_unreachable(); ++ gcc_unreachable (); + } + } + [(set_attr "type" "fmov,fmov,fmov,multi,multi,sselog1,ssemov,ssemov,ssemov") ++ (set (attr "prefix") ++ (if_then_else (eq_attr "alternative" "0,1,2,3,4") ++ (const_string "orig") ++ (const_string "maybe_vex"))) + (set (attr "prefix_data16") + (if_then_else (eq_attr "mode" "V1DF") + (const_string "1") +@@ -3441,12 +3464,13 @@ + + case 9: case 10: case 14: case 15: + return "movd\t{%1, %0|%0, %1}"; +- case 12: case 13: +- return "%vmovd\t{%1, %0|%0, %1}"; + + case 11: + return "movq\t{%1, %0|%0, %1}"; + ++ case 12: case 13: ++ return "%vmovd\t{%1, %0|%0, %1}"; ++ + default: + gcc_unreachable (); + } +diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md +index 6a254b6..ca37622 100644 +--- a/gcc/config/i386/mmx.md ++++ b/gcc/config/i386/mmx.md +@@ -63,6 +63,7 @@ + DONE; + }) + ++;; movd instead of movq is required to handle broken assemblers. + (define_insn "*mov<mode>_internal_rex64" + [(set (match_operand:MMXMODEI8 0 "nonimmediate_operand" + "=rm,r,!?y,!y,!?y,m ,!y ,*Y2,x,x ,m,r ,Yi") +@@ -196,6 +197,7 @@ + (const_string "orig"))) + (set_attr "mode" "DI,DI,DI,DI,DI,DI,DI,DI,V4SF,V4SF,V2SF,V2SF,DI,DI")]) + ++;; movd instead of movq is required to handle broken assemblers. + (define_insn "*movv2sf_internal_rex64" + [(set (match_operand:V2SF 0 "nonimmediate_operand" + "=rm,r,!?y,!y,!?y,m ,!y ,*Y2,x,x,x,m,r ,Yi") +diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md +index 6db9b77..db252c8 100644 +--- a/gcc/config/i386/sse.md ++++ b/gcc/config/i386/sse.md +@@ -7434,9 +7434,8 @@ + "@ + # + # +- %vmov{q}\t{%1, %0|%0, %1}" ++ mov{q}\t{%1, %0|%0, %1}" + [(set_attr "type" "*,*,imov") +- (set_attr "prefix" "*,*,maybe_vex") + (set_attr "mode" "*,*,DI")]) + + (define_insn "*sse2_storeq" +@@ -7472,11 +7471,11 @@ + vmovhps\t{%1, %0|%0, %1} + vpsrldq\t{$8, %1, %0|%0, %1, 8} + vmovq\t{%H1, %0|%0, %H1} +- vmov{q}\t{%H1, %0|%0, %H1}" ++ mov{q}\t{%H1, %0|%0, %H1}" + [(set_attr "type" "ssemov,sseishft1,ssemov,imov") + (set_attr "length_immediate" "*,1,*,*") + (set_attr "memory" "*,none,*,*") +- (set_attr "prefix" "vex") ++ (set_attr "prefix" "vex,vex,vex,orig") + (set_attr "mode" "V2SF,TI,TI,DI")]) + + (define_insn "*vec_extractv2di_1_rex64" +@@ -7754,6 +7753,7 @@ + (const_string "vex"))) + (set_attr "mode" "TI,TI,TI,TI,TI,V2SF")]) + ++;; movd instead of movq is required to handle broken assemblers. + (define_insn "*vec_concatv2di_rex64_sse4_1" + [(set (match_operand:V2DI 0 "register_operand" "=x ,x ,Yi,!x,x,x,x") + (vec_concat:V2DI +@@ -7774,6 +7774,7 @@ + (set_attr "length_immediate" "1,*,*,*,*,*,*") + (set_attr "mode" "TI,TI,TI,TI,TI,V4SF,V2SF")]) + ++;; movd instead of movq is required to handle broken assemblers. + (define_insn "*vec_concatv2di_rex64_sse" + [(set (match_operand:V2DI 0 "register_operand" "=Y2 ,Yi,!Y2,Y2,x,x") + (vec_concat:V2DI +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch new file mode 100644 index 000000000..2cae794bb --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch @@ -0,0 +1,189 @@ +From 4eae6ccb843f9ac74bd928fab5247ae8e79e0d0f Mon Sep 17 00:00:00 2001 +From: kargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 4 May 2011 19:18:01 +0000 +Subject: [PATCH] 2011-05-04 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/48720 + * gfortran.texi: Document the 'Q' exponent-letter extension. + * invoke.texi: Document -Wreal-q-constant. + * lang.opt: Add -Wreal-q-constant option. + * gfortran.h: Add warn_real_q_constant to option struct. + * primary.c (match_real_constant): Use it. Accept 'Q' as + exponent-letter for REAL(16) real-literal-constant with a + fallback to REAL(10) or error if REAL(10) is not available. + * options.c (gfc_init_options, set_Wall) Set it. + (gfc_handle_option): Handle new option. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173392 138bc75d-0d04-0410-961f-82ee72b054a4 + +index b64fa20..165bd2f 100644 +--- a/gcc/fortran/gfortran.h ++++ b/gcc/fortran/gfortran.h +@@ -2190,6 +2190,7 @@ typedef struct + int warn_character_truncation; + int warn_array_temp; + int warn_align_commons; ++ int warn_real_q_constant; + int warn_unused_dummy_argument; + int max_errors; + +diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi +index 2f63bbb..88676cd 100644 +--- a/gcc/fortran/gfortran.texi ++++ b/gcc/fortran/gfortran.texi +@@ -1237,6 +1237,7 @@ without warning. + * Missing period in FORMAT specifications:: + * I/O item lists:: + * BOZ literal constants:: ++* @code{Q} exponent-letter:: + * Real array indices:: + * Unary operators:: + * Implicitly convert LOGICAL and INTEGER values:: +@@ -1427,6 +1428,18 @@ To support legacy codes, GNU Fortran allows the input item list + of the @code{READ} statement, and the output item lists of the + @code{WRITE} and @code{PRINT} statements, to start with a comma. + ++@node @code{Q} exponent-letter ++@subsection @code{Q} exponent-letter ++@cindex @code{Q} exponent-letter ++ ++GNU Fortran accepts real literal constants with an exponent-letter ++of @code{Q}, for example, @code{1.23Q45}. The constant is interpreted ++as a @code{REAL(16)} entity on targets that suppports this type. If ++the target does not support @code{REAL(16)} but has a @code{REAL(10)} ++type, then the real-literal-constant will be interpreted as a ++@code{REAL(10)} entity. In the absence of @code{REAL(16)} and ++@code{REAL(10)}, an error will occur. ++ + @node BOZ literal constants + @subsection BOZ literal constants + @cindex BOZ literal constants +diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi +index 22245c9..9a286c0 100644 +--- a/gcc/fortran/invoke.texi ++++ b/gcc/fortran/invoke.texi +@@ -692,7 +692,7 @@ we recommend avoiding and that we believe are easy to avoid. + This currently includes @option{-Waliasing}, @option{-Wampersand}, + @option{-Wconversion}, @option{-Wsurprising}, @option{-Wintrinsics-std}, + @option{-Wno-tabs}, @option{-Wintrinsic-shadow}, @option{-Wline-truncation}, +-and @option{-Wunused}. ++@option{-Wreal-q-constant} and @option{-Wunused}. + + @item -Waliasing + @opindex @code{Waliasing} +@@ -780,6 +780,12 @@ it as @code{EXTERNAL} procedure because of this. @option{-fall-intrinsics} can + be used to never trigger this behavior and always link to the intrinsic + regardless of the selected standard. + ++@item -Wreal-q-constant ++@opindex @code{Wreal-q-constant} ++@cindex warnings, @code{q} exponent-letter ++Produce a warning if a real-literal-constant contains a @code{q} ++exponent-letter. ++ + @item -Wsurprising + @opindex @code{Wsurprising} + @cindex warnings, suspicious code +diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt +index 69b3144..02fbaeb 100644 +--- a/gcc/fortran/lang.opt ++++ b/gcc/fortran/lang.opt +@@ -238,6 +238,10 @@ Wintrinsics-std + Fortran Warning + Warn on intrinsics not part of the selected standard + ++Wreal-q-constant ++Fortran Warning ++Warn about real-literal-constants with 'q' exponent-letter ++ + Wreturn-type + Fortran Warning + ; Documented in C +diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c +index c116103..7073388 100644 +--- a/gcc/fortran/options.c ++++ b/gcc/fortran/options.c +@@ -107,6 +107,7 @@ gfc_init_options (unsigned int decoded_options_count, + gfc_option.warn_intrinsic_shadow = 0; + gfc_option.warn_intrinsics_std = 0; + gfc_option.warn_align_commons = 1; ++ gfc_option.warn_real_q_constant = 0; + gfc_option.warn_unused_dummy_argument = 0; + gfc_option.max_errors = 25; + +@@ -445,6 +446,7 @@ set_Wall (int setting) + gfc_option.warn_intrinsic_shadow = setting; + gfc_option.warn_intrinsics_std = setting; + gfc_option.warn_character_truncation = setting; ++ gfc_option.warn_real_q_constant = setting; + gfc_option.warn_unused_dummy_argument = setting; + + warn_unused = setting; +@@ -643,6 +645,10 @@ gfc_handle_option (size_t scode, const char *arg, int value, + gfc_option.warn_align_commons = value; + break; + ++ case OPT_Wreal_q_constant: ++ gfc_option.warn_real_q_constant = value; ++ break; ++ + case OPT_Wunused_dummy_argument: + gfc_option.warn_unused_dummy_argument = value; + break; +diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c +index 4cda7a1..22cfbc2 100644 +--- a/gcc/fortran/primary.c ++++ b/gcc/fortran/primary.c +@@ -541,6 +541,17 @@ match_real_constant (gfc_expr **result, int signflag) + goto done; + exp_char = c; + ++ ++ if (c == 'q') ++ { ++ if (gfc_notify_std (GFC_STD_GNU, "Extension: exponent-letter 'q' in " ++ "real-literal-constant at %C") == FAILURE) ++ return MATCH_ERROR; ++ else if (gfc_option.warn_real_q_constant) ++ gfc_warning("Extension: exponent-letter 'q' in real-literal-constant " ++ "at %C"); ++ } ++ + /* Scan exponent. */ + c = gfc_next_ascii_char (); + count++; +@@ -616,6 +627,30 @@ done: + kind = gfc_default_double_kind; + break; + ++ case 'q': ++ if (kind != -2) ++ { ++ gfc_error ("Real number at %C has a 'q' exponent and an explicit " ++ "kind"); ++ goto cleanup; ++ } ++ ++ /* The maximum possible real kind type parameter is 16. First, try ++ that for the kind, then fallback to trying kind=10 (Intel 80 bit) ++ extended precision. If neither value works, just given up. */ ++ kind = 16; ++ if (gfc_validate_kind (BT_REAL, kind, true) < 0) ++ { ++ kind = 10; ++ if (gfc_validate_kind (BT_REAL, kind, true) < 0) ++ { ++ gfc_error ("Invalid exponent-letter 'q' in " ++ "real-literal-constant at %C"); ++ goto cleanup; ++ } ++ } ++ break; ++ + default: + if (kind == -2) + kind = gfc_default_real_kind; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0218-PR-c-48749.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0218-PR-c-48749.patch new file mode 100644 index 000000000..1caa36a4f --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0218-PR-c-48749.patch @@ -0,0 +1,59 @@ +From 0a32d85a09c354725c2c18fb7ac42d2809197070 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 5 May 2011 02:51:01 +0000 +Subject: [PATCH] PR c++/48749 + * class.c (resolves_to_fixed_type_p): Don't look closely + in templates. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173414 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d19610a..c833329 100644 +--- a/gcc/cp/class.c ++++ b/gcc/cp/class.c +@@ -5978,7 +5978,17 @@ resolves_to_fixed_type_p (tree instance, int* nonnull) + { + tree t = TREE_TYPE (instance); + int cdtorp = 0; +- tree fixed = fixed_type_or_null (instance, nonnull, &cdtorp); ++ tree fixed; ++ ++ if (processing_template_decl) ++ { ++ /* In a template we only care about the type of the result. */ ++ if (nonnull) ++ *nonnull = true; ++ return true; ++ } ++ ++ fixed = fixed_type_or_null (instance, nonnull, &cdtorp); + if (fixed == NULL_TREE) + return 0; + if (POINTER_TYPE_P (t)) +new file mode 100644 +index 0000000..e236504 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/conversion/base1.C +@@ -0,0 +1,20 @@ ++// PR c++/48749 ++ ++struct Tuple3 ++{ ++ float x; ++}; ++ ++struct Pos: virtual Tuple3 { }; ++ ++struct TexCoords ++{ ++ Pos pos; ++}; ++ ++template <class T> ++void eval (const TexCoords &coords) ++{ ++ const Pos &pos = coords.pos; ++ pos.x; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0219-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0219-Backport-from-mainline.patch new file mode 100644 index 000000000..89ac751c9 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0219-Backport-from-mainline.patch @@ -0,0 +1,145 @@ +From c36ec52943b79e5245d18041217a1b9a76fde887 Mon Sep 17 00:00:00 2001 +From: irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 5 May 2011 08:39:40 +0000 +Subject: [PATCH] Backport from mainline: + 2011-04-18 Ulrich Weigand <ulrich.weigand@linaro.org> + Ira Rosen <ira.rosen@linaro.org> + + PR target/48252 + * config/arm/arm.c (neon_emit_pair_result_insn): Swap arguments + to match neon_vzip/vuzp/vtrn_internal. + * config/arm/neon.md (neon_vtrn<mode>_internal): Make both + outputs explicitly dependent on both inputs. + (neon_vzip<mode>_internal, neon_vuzp<mode>_internal): Likewise. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173418 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 8515002..9e6582a 100644 +--- a/gcc/config/arm/arm.c ++++ b/gcc/config/arm/arm.c +@@ -19564,7 +19564,7 @@ neon_emit_pair_result_insn (enum machine_mode mode, + rtx tmp1 = gen_reg_rtx (mode); + rtx tmp2 = gen_reg_rtx (mode); + +- emit_insn (intfn (tmp1, op1, tmp2, op2)); ++ emit_insn (intfn (tmp1, op1, op2, tmp2)); + + emit_move_insn (mem, tmp1); + mem = adjust_address (mem, mode, GET_MODE_SIZE (mode)); +diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md +index 440b982..bc13722 100644 +--- a/gcc/config/arm/neon.md ++++ b/gcc/config/arm/neon.md +@@ -4079,20 +4079,21 @@ + + (define_insn "neon_vtrn<mode>_internal" + [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")] +- UNSPEC_VTRN1)) +- (set (match_operand:VDQW 2 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")] +- UNSPEC_VTRN2))] +- "TARGET_NEON" +- "vtrn.<V_sz_elem>\t%<V_reg>0, %<V_reg>2" ++ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") ++ (match_operand:VDQW 2 "s_register_operand" "w")] ++ UNSPEC_VTRN1)) ++ (set (match_operand:VDQW 3 "s_register_operand" "=2") ++ (unspec:VDQW [(match_dup 1) (match_dup 2)] ++ UNSPEC_VTRN2))] ++ "TARGET_NEON" ++ "vtrn.<V_sz_elem>\t%<V_reg>0, %<V_reg>3" + [(set (attr "neon_type") + (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0)) + (const_string "neon_bp_simple") + (const_string "neon_bp_3cycle")))] + ) + +-(define_expand "neon_vtrn<mode>" ++ "neon_vtrn<mode>" + [(match_operand:SI 0 "s_register_operand" "r") + (match_operand:VDQW 1 "s_register_operand" "w") + (match_operand:VDQW 2 "s_register_operand" "w")] +@@ -4105,13 +4106,14 @@ + + (define_insn "neon_vzip<mode>_internal" + [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")] +- UNSPEC_VZIP1)) +- (set (match_operand:VDQW 2 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")] +- UNSPEC_VZIP2))] +- "TARGET_NEON" +- "vzip.<V_sz_elem>\t%<V_reg>0, %<V_reg>2" ++ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") ++ (match_operand:VDQW 2 "s_register_operand" "w")] ++ UNSPEC_VZIP1)) ++ (set (match_operand:VDQW 3 "s_register_operand" "=2") ++ (unspec:VDQW [(match_dup 1) (match_dup 2)] ++ UNSPEC_VZIP2))] ++ "TARGET_NEON" ++ "vzip.<V_sz_elem>\t%<V_reg>0, %<V_reg>3" + [(set (attr "neon_type") + (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0)) + (const_string "neon_bp_simple") +@@ -4131,13 +4133,14 @@ + + (define_insn "neon_vuzp<mode>_internal" + [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")] ++ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") ++ (match_operand:VDQW 2 "s_register_operand" "w")] + UNSPEC_VUZP1)) +- (set (match_operand:VDQW 2 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")] +- UNSPEC_VUZP2))] ++ (set (match_operand:VDQW 3 "s_register_operand" "=2") ++ (unspec:VDQW [(match_dup 1) (match_dup 2)] ++ UNSPEC_VUZP2))] + "TARGET_NEON" +- "vuzp.<V_sz_elem>\t%<V_reg>0, %<V_reg>2" ++ "vuzp.<V_sz_elem>\t%<V_reg>0, %<V_reg>3" + [(set (attr "neon_type") + (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0)) + (const_string "neon_bp_simple") +new file mode 100644 +index 0000000..1a06c71 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/arm/pr48252.c +@@ -0,0 +1,31 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_hw } */ ++/* { dg-options "-O2" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include <stdlib.h> ++ ++int main(void) ++{ ++ uint8x8_t v1 = {1, 1, 1, 1, 1, 1, 1, 1}; ++ uint8x8_t v2 = {2, 2, 2, 2, 2, 2, 2, 2}; ++ uint8x8x2_t vd1, vd2; ++ union {uint8x8_t v; uint8_t buf[8];} d1, d2, d3, d4; ++ int i; ++ ++ vd1 = vzip_u8(v1, vdup_n_u8(0)); ++ vd2 = vzip_u8(v2, vdup_n_u8(0)); ++ ++ vst1_u8(d1.buf, vd1.val[0]); ++ vst1_u8(d2.buf, vd1.val[1]); ++ vst1_u8(d3.buf, vd2.val[0]); ++ vst1_u8(d4.buf, vd2.val[1]); ++ ++ for (i = 0; i < 8; i++) ++ if ((i % 2 == 0 && d4.buf[i] != 2) ++ || (i % 2 == 1 && d4.buf[i] != 0)) ++ abort (); ++ ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0220-gcc.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0220-gcc.patch new file mode 100644 index 000000000..0b9062356 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0220-gcc.patch @@ -0,0 +1,55 @@ +From a663e35e688bda4a6841271cbdfbb287654aecd4 Mon Sep 17 00:00:00 2001 +From: jules <jules@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 5 May 2011 15:56:06 +0000 +Subject: [PATCH] gcc/ + * config/arm/neon.md (vec_set<mode>_internal): Fix misplaced + parenthesis in D-register case. + + gcc/testsuite/ + * gcc.target/arm/neon-vset_lanes8.c: New test. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173439 138bc75d-0d04-0410-961f-82ee72b054a4 + +index bc13722..491dd98 100644 +--- a/gcc/config/arm/neon.md ++++ b/gcc/config/arm/neon.md +@@ -425,7 +425,7 @@ + (match_operand:SI 2 "immediate_operand" "i")))] + "TARGET_NEON" + { +- int elt = ffs ((int) INTVAL (operands[2]) - 1); ++ int elt = ffs ((int) INTVAL (operands[2])) - 1; + if (BYTES_BIG_ENDIAN) + elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt; + operands[2] = GEN_INT (elt); +new file mode 100644 +index 0000000..e87102e +--- /dev/null ++++ b/gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c +@@ -0,0 +1,21 @@ ++/* Test the `vset_lane_s8' ARM Neon intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_hw } */ ++/* { dg-options "-O0" } */ ++/* { dg-add-options arm_neon } */ ++ ++#include "arm_neon.h" ++#include <stdlib.h> ++#include <string.h> ++ ++int8x8_t x = { 1, 2, 3, 4, 5, 6, 7, 8 }; ++int8x8_t y = { 1, 2, 3, 16, 5, 6, 7, 8 }; ++ ++int main (void) ++{ ++ x = vset_lane_s8 (16, x, 3); ++ if (memcmp (&x, &y, sizeof (x)) != 0) ++ abort(); ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0221-PR-ada-48844.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0221-PR-ada-48844.patch new file mode 100644 index 000000000..5c90712f4 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0221-PR-ada-48844.patch @@ -0,0 +1,182 @@ +From 8035672553bc675f341a90983e4ac3eb7fc28832 Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 5 May 2011 16:27:03 +0000 +Subject: [PATCH] PR ada/48844 + * gcc-interface/gigi.h (get_variant_part): Declare. + * gcc-interface/decl.c (get_variant_part): Make global. + * gcc-interface/utils2.c (find_common_type): Do not return T1 if the + types have the same constant size, are record types and T1 has a + variant part while T2 doesn't. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173443 138bc75d-0d04-0410-961f-82ee72b054a4 + +index a10fc2d..e576895 100644 +--- a/gcc/ada/gcc-interface/decl.c ++++ b/gcc/ada/gcc-interface/decl.c +@@ -177,7 +177,6 @@ static void check_ok_for_atomic (tree, Entity_Id, bool); + static tree create_field_decl_from (tree, tree, tree, tree, tree, + VEC(subst_pair,heap) *); + static tree get_rep_part (tree); +-static tree get_variant_part (tree); + static tree create_variant_part_from (tree, VEC(variant_desc,heap) *, tree, + tree, VEC(subst_pair,heap) *); + static void copy_and_substitute_in_size (tree, tree, VEC(subst_pair,heap) *); +@@ -8400,7 +8399,7 @@ get_rep_part (tree record_type) + + /* Return the variant part of RECORD_TYPE, if any. Otherwise return NULL. */ + +-static tree ++tree + get_variant_part (tree record_type) + { + tree field; +diff --git a/gcc/ada/gcc-interface/gigi.h b/gcc/ada/gcc-interface/gigi.h +index e45cf13..eca4d9e 100644 +--- a/gcc/ada/gcc-interface/gigi.h ++++ b/gcc/ada/gcc-interface/gigi.h +@@ -151,6 +151,9 @@ extern tree choices_to_gnu (tree operand, Node_Id choices); + extern void annotate_object (Entity_Id gnat_entity, tree gnu_type, tree size, + bool by_ref, bool by_double_ref); + ++/* Return the variant part of RECORD_TYPE, if any. Otherwise return NULL. */ ++extern tree get_variant_part (tree record_type); ++ + /* Given a type T, a FIELD_DECL F, and a replacement value R, return a new + type with all size expressions that contain F updated by replacing F + with R. If F is NULL_TREE, always make a new RECORD_TYPE, even if +diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c +index 07d6b5b..7028cdc 100644 +--- a/gcc/ada/gcc-interface/utils2.c ++++ b/gcc/ada/gcc-interface/utils2.c +@@ -193,15 +193,21 @@ find_common_type (tree t1, tree t2) + calling into build_binary_op), some others are really expected and we + have to be careful. */ + +- /* We must prevent writing more than what the target may hold if this is for ++ /* We must avoid writing more than what the target can hold if this is for + an assignment and the case of tagged types is handled in build_binary_op +- so use the lhs type if it is known to be smaller, or of constant size and +- the rhs type is not, whatever the modes. We also force t1 in case of ++ so we use the lhs type if it is known to be smaller or of constant size ++ and the rhs type is not, whatever the modes. We also force t1 in case of + constant size equality to minimize occurrences of view conversions on the +- lhs of assignments. */ ++ lhs of an assignment, except for the case of record types with a variant ++ part on the lhs but not on the rhs to make the conversion simpler. */ + if (TREE_CONSTANT (TYPE_SIZE (t1)) + && (!TREE_CONSTANT (TYPE_SIZE (t2)) +- || !tree_int_cst_lt (TYPE_SIZE (t2), TYPE_SIZE (t1)))) ++ || tree_int_cst_lt (TYPE_SIZE (t1), TYPE_SIZE (t2)) ++ || (TYPE_SIZE (t1) == TYPE_SIZE (t2) ++ && !(TREE_CODE (t1) == RECORD_TYPE ++ && TREE_CODE (t2) == RECORD_TYPE ++ && get_variant_part (t1) != NULL_TREE ++ && get_variant_part (t2) == NULL_TREE)))) + return t1; + + /* Otherwise, if the lhs type is non-BLKmode, use it. Note that we know +new file mode 100644 +index 0000000..56047c9 +--- /dev/null ++++ b/gcc/testsuite/gnat.dg/discr29.adb +@@ -0,0 +1,8 @@ ++package body Discr29 is ++ ++ procedure Proc (R : out Rec3) is ++ begin ++ R := (False, Tmp); ++ end; ++ ++end Discr29; +diff --git a/gcc/testsuite/gnat.dg/discr29.ads b/gcc/testsuite/gnat.dg/discr29.ads +new file mode 100644 +index 0000000..a205bc1 +--- /dev/null ++++ b/gcc/testsuite/gnat.dg/discr29.ads +@@ -0,0 +1,27 @@ ++-- { dg-do compile } ++ ++package Discr29 is ++ ++ type Rec1 is record ++ I1 : Integer; ++ I2 : Integer; ++ I3 : Integer; ++ end record; ++ ++ type Rec2 is tagged record ++ I1 : Integer; ++ I2 : Integer; ++ end record; ++ ++ type Rec3 (D : Boolean) is record ++ case D is ++ when True => A : Rec1; ++ when False => B : Rec2; ++ end case; ++ end record; ++ ++ procedure Proc (R : out Rec3); ++ ++ Tmp : Rec2; ++ ++end Discr29; +diff --git a/gcc/testsuite/gnat.dg/discr30.adb b/gcc/testsuite/gnat.dg/discr30.adb +new file mode 100644 +index 0000000..b3bf100 +--- /dev/null ++++ b/gcc/testsuite/gnat.dg/discr30.adb +@@ -0,0 +1,50 @@ ++-- PR ada/48844 ++-- Reported by Georg Bauhaus <bauhaus@futureapps.de> */ ++ ++-- { dg-do compile } ++ ++procedure Discr30 is ++ ++ generic ++ type Source is private; ++ type Target is private; ++ function Conversion (S : Source) return Target; ++ ++ function Conversion (S : Source) return Target is ++ type Source_Wrapper is tagged record ++ S : Source; ++ end record; ++ type Target_Wrapper is tagged record ++ T : Target; ++ end record; ++ ++ type Selector is (Source_Field, Target_Field); ++ type Magic (Sel : Selector := Target_Field) is record ++ case Sel is ++ when Source_Field => S : Source_Wrapper; ++ when Target_Field => T : Target_Wrapper; ++ end case; ++ end record; ++ ++ M : Magic; ++ ++ function Convert (T : Target_Wrapper) return Target is ++ begin ++ M := (Sel => Source_Field, S => (S => S)); ++ return T.T; ++ end Convert; ++ ++ begin ++ return Convert (M.T); ++ end Conversion; ++ ++ type Integer_Access is access all Integer; ++ ++ I : aliased Integer; ++ I_Access : Integer_Access := I'Access; ++ ++ function Convert is new Conversion (Integer_Access, Integer); ++ ++begin ++ I := Convert (I_Access); ++end; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0222-PR-c-40975.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0222-PR-c-40975.patch new file mode 100644 index 000000000..b0efd67cb --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0222-PR-c-40975.patch @@ -0,0 +1,55 @@ +From 0870d53c5df3fbecd862b72a46d449e6453a8584 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 5 May 2011 21:02:06 +0000 +Subject: [PATCH] PR c++/40975 + * tree-inline.c (copy_tree_r): Handle STATEMENT_LIST. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173452 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 59ac0f1..1ec4866 100644 +new file mode 100644 +index 0000000..24582d8 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/init/new30.C +@@ -0,0 +1,15 @@ ++// PR c++/40975 ++ ++struct data_type ++{ ++ // constructor required to reproduce compiler bug ++ data_type() {} ++}; ++ ++struct ptr_type ++{ ++ // array new as default argument required to reproduce compiler bug ++ ptr_type (data_type* ptr = new data_type[1]) { delete[] ptr; } ++}; ++ ++ptr_type obj; +diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c +index fd8edb4..f2255f8 100644 +--- a/gcc/tree-inline.c ++++ b/gcc/tree-inline.c +@@ -4334,14 +4334,16 @@ copy_tree_r (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) + CONSTRUCTOR_ELTS (*tp)); + *tp = new_tree; + } ++ else if (code == STATEMENT_LIST) ++ /* We used to just abort on STATEMENT_LIST, but we can run into them ++ with statement-expressions (c++/40975). */ ++ copy_statement_list (tp); + else if (TREE_CODE_CLASS (code) == tcc_type) + *walk_subtrees = 0; + else if (TREE_CODE_CLASS (code) == tcc_declaration) + *walk_subtrees = 0; + else if (TREE_CODE_CLASS (code) == tcc_constant) + *walk_subtrees = 0; +- else +- gcc_assert (code != STATEMENT_LIST); + return NULL_TREE; + } + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0223-Add-missing-break-for-OPT_mfpu_-case.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0223-Add-missing-break-for-OPT_mfpu_-case.patch new file mode 100644 index 000000000..4198fdf5b --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0223-Add-missing-break-for-OPT_mfpu_-case.patch @@ -0,0 +1,21 @@ +From d28f39e8557b84975e6d60f35ac46ee10df5ea5f Mon Sep 17 00:00:00 2001 +From: meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 5 May 2011 21:32:40 +0000 +Subject: [PATCH] Add missing break for OPT_mfpu_ case + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173457 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 0ff1745..c6c1847 100644 +--- a/gcc/config/rs6000/rs6000.c ++++ b/gcc/config/rs6000/rs6000.c +@@ -4630,6 +4630,7 @@ rs6000_handle_option (size_t code, const char *arg, int value) + target_flags_explicit |= MASK_SOFT_FLOAT; + rs6000_single_float = rs6000_double_float = 0; + } ++ break; + + case OPT_mrecip: + rs6000_recip_name = (value) ? "default" : "none"; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0224-2011-05-06-Jonathan-Wakely-jwakely.gcc-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0224-2011-05-06-Jonathan-Wakely-jwakely.gcc-gmail.com.patch new file mode 100644 index 000000000..0f06faea6 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0224-2011-05-06-Jonathan-Wakely-jwakely.gcc-gmail.com.patch @@ -0,0 +1,5993 @@ +From f6dc87875dab85f9e701e895015bd91d49425be1 Mon Sep 17 00:00:00 2001 +From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 5 May 2011 23:39:58 +0000 +Subject: [PATCH] 2011-05-06 Jonathan Wakely <jwakely.gcc@gmail.com> + + * doc/xml/manual/status_cxx200x.xml: Update to reflect current status + and FDIS content. + * doc/xml/manual/documentation_hacking.xml: Fix typo. + * doc/html/*: Regenerate. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173459 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 6e6276f..4305fd7 100644 +--- a/libstdc++-v3/doc/html/api.html ++++ b/libstdc++-v3/doc/html/api.html +@@ -1,13 +1,13 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>The GNU C++ Library API Reference</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="up" href="bk02.html" title=""/><link rel="prev" href="bk02.html" title=""/><link rel="next" href="bk03.html" title=""/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library API Reference</th></tr><tr><td align="left"><a accesskey="p" href="bk02.html">Prev</a> </td><th width="60%" align="center"/><td align="right"> <a accesskey="n" href="bk03.html">Next</a></td></tr></table><hr/></div><div class="article" title="The GNU C++ Library API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="api"/>The GNU C++ Library API Reference</h2></div><div><p class="copyright">Copyright © ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>The GNU C++ Library API Reference</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="up" href="bk02.html" title=""/><link rel="prev" href="bk02.html" title=""/><link rel="next" href="bk03.html" title=""/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library API Reference</th></tr><tr><td align="left"><a accesskey="p" href="bk02.html">Prev</a> </td><th width="60%" align="center"/><td align="right"> <a accesskey="n" href="bk03.html">Next</a></td></tr></table><hr/></div><div class="article" title="The GNU C++ Library API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="api"/>The GNU C++ Library API Reference</h2></div><div><p class="copyright">Copyright © + 2008 + , + 2010 + +- <a class="link" href="http://www.fsf.org/" target="">FSF ++ <a class="link" href="http://www.fsf.org/">FSF + </a> +- </p></div><div><div class="legalnotice" title="Legal Notice"><a id="id520754"/><p> ++ </p></div><div><div class="legalnotice" title="Legal Notice"><a id="id408490"/><p> + <a class="link" href="manual/license.html" title="License">License + </a> + </p></div></div></div><hr/></div><p> +@@ -21,25 +21,25 @@ + </p><p> + The API documentation, rendered into HTML, can be viewed online: + </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p> +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="">for the 3.4 release ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release + </a> + </p></li><li class="listitem"><p> +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html" target="">for the 4.1 release ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html">for the 4.1 release + </a> + </p></li><li class="listitem"><p> +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html" target="">for the 4.2 release ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html">for the 4.2 release + </a> + </p></li><li class="listitem"><p> +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html" target="">for the 4.3 release ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html">for the 4.3 release + </a> + </p></li><li class="listitem"><p> +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html" target="">for the 4.4 release ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html">for the 4.4 release + </a> + </p></li><li class="listitem"><p> +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-api-4.5/index.html" target="">for the 4.5 release ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-api-4.5/index.html">for the 4.5 release + </a> + </p></li><li class="listitem"><p> +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html" target="">"the latest collection" ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">"the latest collection" + </a> + (For the main development tree; see the date on the first page.) + </p></li></ul></div><p> +@@ -47,7 +47,7 @@ + gcc.org site in a directory located at + <code class="literal"><URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/></code>. + You will almost certainly need to use one of the +- <a class="link" href="http://gcc.gnu.org/mirrors.html" target="">mirror sites</a> to download ++ <a class="link" href="http://gcc.gnu.org/mirrors.html">mirror sites</a> to download + the tarball. After unpacking, simply load libstdc++-html-*/index.html + into a browser. + </p><p> +diff --git a/libstdc++-v3/doc/html/bk02.html b/libstdc++-v3/doc/html/bk02.html +index ee5cb8d..9c2d768 100644 +--- a/libstdc++-v3/doc/html/bk02.html ++++ b/libstdc++-v3/doc/html/bk02.html +@@ -1,3 +1,3 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title/><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library"/><link rel="prev" href="manual/backwards.html" title="Backwards Compatibility"/><link rel="next" href="api.html" title="The GNU C++ Library API Reference"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr/></div><div class="book"><div class="titlepage"><hr/></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="article"><a href="api.html">The GNU C++ Library API Reference</a></span></dt></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><td align="center"> </td><td align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td align="left" valign="top">Backwards Compatibility </td><td align="center"><a accesskey="h" href="spine.html">Home</a></td><td align="right" valign="top"> The GNU C++ Library API Reference</td></tr></table></div></body></html> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title/><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library"/><link rel="prev" href="manual/backwards.html" title="Backwards Compatibility"/><link rel="next" href="api.html" title="The GNU C++ Library API Reference"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr/></div><div class="book"><div class="titlepage"><hr/></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="article"><a href="api.html">The GNU C++ Library API Reference</a></span></dt></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><td align="center"> </td><td align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td align="left" valign="top">Backwards Compatibility </td><td align="center"><a accesskey="h" href="spine.html">Home</a></td><td align="right" valign="top"> The GNU C++ Library API Reference</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/bk03.html b/libstdc++-v3/doc/html/bk03.html +index 0ac4b7e..6d1d2e9 100644 +--- a/libstdc++-v3/doc/html/bk03.html ++++ b/libstdc++-v3/doc/html/bk03.html +@@ -1,3 +1,3 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title/><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library"/><link rel="prev" href="api.html" title="The GNU C++ Library API Reference"/><link rel="next" href="faq.html" title="Frequently Asked Questions"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr></table><hr/></div><div class="book"><div class="titlepage"><hr/></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="api.html">Prev</a> </td><td align="center"> </td><td align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr><tr><td align="left" valign="top">The GNU C++ Library API Reference </td><td align="center"><a accesskey="h" href="spine.html">Home</a></td><td align="right" valign="top"> Frequently Asked Questions</td></tr></table></div></body></html> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title/><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library"/><link rel="prev" href="api.html" title="The GNU C++ Library API Reference"/><link rel="next" href="faq.html" title="Frequently Asked Questions"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr></table><hr/></div><div class="book"><div class="titlepage"><hr/></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="api.html">Prev</a> </td><td align="center"> </td><td align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr><tr><td align="left" valign="top">The GNU C++ Library API Reference </td><td align="center"><a accesskey="h" href="spine.html">Home</a></td><td align="right" valign="top"> Frequently Asked Questions</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html +index 2eaade9..7b333ed 100644 +--- a/libstdc++-v3/doc/html/faq.html ++++ b/libstdc++-v3/doc/html/faq.html +@@ -1,10 +1,10 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Frequently Asked Questions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="up" href="bk03.html" title=""/><link rel="prev" href="bk03.html" title=""/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Frequently Asked Questions</th></tr><tr><td align="left"><a accesskey="p" href="bk03.html">Prev</a> </td><th width="60%" align="center"/><td align="right"> </td></tr></table><hr/></div><div class="article" title="Frequently Asked Questions"><div class="titlepage"><div><div><h1 class="title"><a id="faq"/>Frequently Asked Questions</h1></div><div><p class="copyright">Copyright © ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Frequently Asked Questions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="up" href="bk03.html" title=""/><link rel="prev" href="bk03.html" title=""/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Frequently Asked Questions</th></tr><tr><td align="left"><a accesskey="p" href="bk03.html">Prev</a> </td><th width="60%" align="center"/><td align="right"> </td></tr></table><hr/></div><div class="article" title="Frequently Asked Questions"><div class="titlepage"><div><div><h1 class="title"><a id="faq"/>Frequently Asked Questions</h1></div><div><p class="copyright">Copyright © + 2008, 2010 + +- <a class="link" href="http://www.fsf.org" target="">FSF</a> +- </p></div></div><hr/></div><div class="qandaset" title="Frequently Asked Questions"><a id="id533065"/><dl><dt/><dd><dl><dt>1.1. <a href="faq.html#faq.what"> ++ <a class="link" href="http://www.fsf.org">FSF</a> ++ </p></div></div><hr/></div><div class="qandaset" title="Frequently Asked Questions"><a id="id384449"/><dl><dt/><dd><dl><dt>1.1. <a href="faq.html#faq.what"> + What is libstdc++? + </a></dt><dt>1.2. <a href="faq.html#faq.why"> + Why should I use libstdc++? +@@ -105,7 +105,7 @@ + What happened to the older libg++? I need that! + </a></dt><dt>1.7. <a href="faq.html#faq.more_questions"> + What if I have more questions? +- </a></dt></dl></td></tr><tr class="question" title="1.1."><td align="left" valign="top"><a id="faq.what"/><a id="faq.what.q"/><p><b>1.1.</b></p></td><td align="left" valign="top"><p> ++ </a></dt></dl></td></tr><tr class="question" title="1.1."><td align="left" valign="top"><a id="faq.what"/><a id="faq.what.q"/><p><strong>1.1.</strong></p></td><td align="left" valign="top"><p> + What is libstdc++? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="faq.what.a"/></td><td align="left" valign="top"><p> + The GNU Standard C++ Library v3 is an ongoing project to +@@ -114,8 +114,8 @@ + exactly how far the project has come, or just want the latest + bleeding-edge code, the up-to-date source is available over + anonymous SVN, and can even be browsed over +- the <a class="link" href="http://gcc.gnu.org/svn.html" target="">web</a>. +- </p></td></tr><tr class="question" title="1.2."><td align="left" valign="top"><a id="faq.why"/><a id="q-why"/><p><b>1.2.</b></p></td><td align="left" valign="top"><p> ++ the <a class="link" href="http://gcc.gnu.org/svn.html">web</a>. ++ </p></td></tr><tr class="question" title="1.2."><td align="left" valign="top"><a id="faq.why"/><a id="q-why"/><p><strong>1.2.</strong></p></td><td align="left" valign="top"><p> + Why should I use libstdc++? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-why"/></td><td align="left" valign="top"><p> + The completion of the ISO C++ standardization gave the C++ +@@ -129,9 +129,9 @@ + (<span class="command"><strong>gcc</strong></span>, <span class="command"><strong>g++</strong></span>, etc) is widely + considered to be one of the leading compilers in the world. Its + development is overseen by the +- <a class="link" href="http://gcc.gnu.org/" target="">GCC team</a>. All of ++ <a class="link" href="http://gcc.gnu.org/">GCC team</a>. All of + the rapid development and near-legendary +- <a class="link" href="http://gcc.gnu.org/buildstat.html" target="">portability</a> ++ <a class="link" href="http://gcc.gnu.org/buildstat.html">portability</a> + that are the hallmarks of an open-source project are being + applied to libstdc++. + </p><p> +@@ -141,7 +141,7 @@ + <code class="classname">vector<></code>, iostreams, and algorithms.) + Programmers will no longer need to <span class="quote">“<span class="quote">roll their own</span>”</span> + nor be worried about platform-specific incompatibilities. +- </p></td></tr><tr class="question" title="1.3."><td align="left" valign="top"><a id="faq.who"/><a id="q-who"/><p><b>1.3.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="1.3."><td align="left" valign="top"><a id="faq.who"/><a id="q-who"/><p><strong>1.3.</strong></p></td><td align="left" valign="top"><p> + Who's in charge of it? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-who"/></td><td align="left" valign="top"><p> + The libstdc++ project is contributed to by several developers +@@ -153,15 +153,15 @@ + Development and discussion is held on the libstdc++ mailing + list. Subscribing to the list, or searching the list + archives, is open to everyone. You can read instructions for +- doing so on the <a class="link" href="http://gcc.gnu.org/libstdc++/" target="">homepage</a>. ++ doing so on the <a class="link" href="http://gcc.gnu.org/libstdc++/">homepage</a>. + If you have questions, ideas, code, or are just curious, sign up! +- </p></td></tr><tr class="question" title="1.4."><td align="left" valign="top"><a id="faq.when"/><a id="q-when"/><p><b>1.4.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="1.4."><td align="left" valign="top"><a id="faq.when"/><a id="q-when"/><p><strong>1.4.</strong></p></td><td align="left" valign="top"><p> + When is libstdc++ going to be finished? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-when"/></td><td align="left" valign="top"><p> + Nathan Myers gave the best of all possible answers, responding to + a Usenet article asking this question: <span class="emphasis"><em>Sooner, if you + help.</em></span> +- </p></td></tr><tr class="question" title="1.5."><td align="left" valign="top"><a id="faq.how"/><a id="q-how"/><p><b>1.5.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="1.5."><td align="left" valign="top"><a id="faq.how"/><a id="q-how"/><p><strong>1.5.</strong></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"/></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 +@@ -172,7 +172,7 @@ + anybody who is willing to help write documentation, for example, + or has found a bug in code that we all thought was working and is + willing to provide details, is more than welcome! +- </p></td></tr><tr class="question" title="1.6."><td align="left" valign="top"><a id="faq.whereis_old"/><a id="q-whereis_old"/><p><b>1.6.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="1.6."><td align="left" valign="top"><a id="faq.whereis_old"/><a id="q-whereis_old"/><p><strong>1.6.</strong></p></td><td align="left" valign="top"><p> + What happened to the older libg++? I need that! + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-whereis_old"/></td><td align="left" valign="top"><p> + The most recent libg++ README states that libg++ is no longer +@@ -180,7 +180,7 @@ + projects, and is only being kicked along to support older code. + </p><p> + More information in the <a class="link" href="manual/backwards.html" title="Backwards Compatibility">backwards compatibility documentation</a> +- </p></td></tr><tr class="question" title="1.7."><td align="left" valign="top"><a id="faq.more_questions"/><a id="q-more_questions"/><p><b>1.7.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="1.7."><td align="left" valign="top"><a id="faq.more_questions"/><a id="q-more_questions"/><p><strong>1.7.</strong></p></td><td align="left" valign="top"><p> + What if I have more questions? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-more_questions"/></td><td align="left" valign="top"><p> + If you have read the README file, and your question remains +@@ -201,17 +201,17 @@ + How is that different from the GNU {Lesser,Library} GPL? + </a></dt><dt>2.4. <a href="faq.html#faq.license.what_restrictions"> + I see. So, what restrictions are there on programs that use the library? +- </a></dt></dl></td></tr><tr class="question" title="2.1."><td align="left" valign="top"><a id="faq.license.what"/><a id="q-license.what"/><p><b>2.1.</b></p></td><td align="left" valign="top"><p> ++ </a></dt></dl></td></tr><tr class="question" title="2.1."><td align="left" valign="top"><a id="faq.license.what"/><a id="q-license.what"/><p><strong>2.1.</strong></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"/></td><td align="left" valign="top"><p> + 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" title="2.2."><td align="left" valign="top"><a id="faq.license.any_program"/><a id="q-license.any_program"/><p><b>2.2.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="2.2."><td align="left" valign="top"><a id="faq.license.any_program"/><a id="q-license.any_program"/><p><strong>2.2.</strong></p></td><td align="left" valign="top"><p> + So any program which uses libstdc++ falls under the GPL? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.any_program"/></td><td align="left" valign="top"><p> + No. The special exception permits use of the library in + proprietary applications. +- </p></td></tr><tr class="question" title="2.3."><td align="left" valign="top"><a id="faq.license.lgpl"/><a id="q-license.lgpl"/><p><b>2.3.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="2.3."><td align="left" valign="top"><a id="faq.license.lgpl"/><a id="q-license.lgpl"/><p><strong>2.3.</strong></p></td><td align="left" valign="top"><p> + How is that different from the GNU {Lesser,Library} GPL? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.lgpl"/></td><td align="left" valign="top"><p> + The LGPL requires that users be able to replace the LGPL code with a +@@ -221,7 +221,7 @@ + are expanded inside the code that uses the library. So to allow people + to replace the library code, someone using the library would have to + distribute their own source, rendering the LGPL equivalent to the GPL. +- </p></td></tr><tr class="question" title="2.4."><td align="left" valign="top"><a id="faq.license.what_restrictions"/><a id="q-license.what_restrictions"/><p><b>2.4.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="2.4."><td align="left" valign="top"><a id="faq.license.what_restrictions"/><a id="q-license.what_restrictions"/><p><strong>2.4.</strong></p></td><td align="left" valign="top"><p> + I see. So, what restrictions are there on programs that use the library? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.what_restrictions"/></td><td align="left" valign="top"><p> + None. We encourage such programs to be released as open source, +@@ -234,7 +234,7 @@ + What's libsupc++? + </a></dt><dt>3.6. <a href="faq.html#faq.size"> + This library is HUGE! +- </a></dt></dl></td></tr><tr class="question" title="3.1."><td align="left" valign="top"><a id="faq.how_to_install"/><a id="q-how_to_install"/><p><b>3.1.</b></p></td><td align="left" valign="top"><p>How do I install libstdc++? ++ </a></dt></dl></td></tr><tr class="question" title="3.1."><td align="left" valign="top"><a id="faq.how_to_install"/><a id="q-how_to_install"/><p><strong>3.1.</strong></p></td><td align="left" valign="top"><p>How do I install libstdc++? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_install"/></td><td align="left" valign="top"><p> + Often libstdc++ comes pre-installed as an integral part of many + existing Linux and Unix systems, as well as many embedded +@@ -247,11 +247,11 @@ + documentation</a> for detailed + instructions. You may wish to browse those files ahead + of time to get a feel for what's required. +- </p></td></tr><tr class="question" title="3.2."><td align="left" valign="top"><a id="faq.how_to_get_sources"/><a id="q-how_to_get_sources"/><p><b>3.2.</b></p></td><td align="left" valign="top"><p>How does one get current libstdc++ sources? ++ </p></td></tr><tr class="question" title="3.2."><td align="left" valign="top"><a id="faq.how_to_get_sources"/><a id="q-how_to_get_sources"/><p><strong>3.2.</strong></p></td><td align="left" valign="top"><p>How does one get current libstdc++ sources? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_get_sources"/></td><td align="left" valign="top"><p> + Libstdc++ sources for all official releases can be obtained as + part of the GCC sources, available from various sites and +- mirrors. A full <a class="link" href="http://gcc.gnu.org/mirrors.html" target="">list of ++ mirrors. A full <a class="link" href="http://gcc.gnu.org/mirrors.html">list of + download sites</a> is provided on the main GCC site. + </p><p> + Current libstdc++ sources can always be checked out of the main +@@ -262,7 +262,7 @@ + <span class="application">Subversion</span>, or <acronym class="acronym">SVN</acronym>, is + one of several revision control packages. It was selected for GNU + projects because it's free (speech), free (beer), and very high +- quality. The <a class="link" href="http://subversion.tigris.org" target=""> Subversion ++ quality. The <a class="link" href="http://subversion.tigris.org"> Subversion + home page</a> has a better description. + </p><p> + The <span class="quote">“<span class="quote">anonymous client checkout</span>”</span> feature of SVN is +@@ -270,20 +270,20 @@ + the latest libstdc++ sources. + </p><p> + For more information +- see <a class="link" href="http://gcc.gnu.org/svn.html" target=""><acronym class="acronym">SVN</acronym> ++ see <a class="link" href="http://gcc.gnu.org/svn.html"><acronym class="acronym">SVN</acronym> + details</a>. +- </p></td></tr><tr class="question" title="3.3."><td align="left" valign="top"><a id="faq.how_to_test"/><a id="q-how_to_test"/><p><b>3.3.</b></p></td><td align="left" valign="top"><p>How do I know if it works? ++ </p></td></tr><tr class="question" title="3.3."><td align="left" valign="top"><a id="faq.how_to_test"/><a id="q-how_to_test"/><p><strong>3.3.</strong></p></td><td align="left" valign="top"><p>How do I know if it works? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_test"/></td><td align="left" valign="top"><p> + Libstdc++ comes with its own validation testsuite, which includes + conformance testing, regression testing, ABI testing, and + performance testing. Please consult the +- <a class="link" href="http://gcc.gnu.org/install/test.html" target="">testing ++ <a class="link" href="http://gcc.gnu.org/install/test.html">testing + documentation</a> for more details. + </p><p> + If you find bugs in the testsuite programs themselves, or if you + think of a new test program that should be added to the suite, + <span class="emphasis"><em>please</em></span> write up your idea and send it to the list! +- </p></td></tr><tr class="question" title="3.4."><td align="left" valign="top"><a id="faq.how_to_set_paths"/><a id="q-how_to_set_paths"/><p><b>3.4.</b></p></td><td align="left" valign="top"><p>How do I insure that the dynamically linked library will be found? ++ </p></td></tr><tr class="question" title="3.4."><td align="left" valign="top"><a id="faq.how_to_set_paths"/><a id="q-how_to_set_paths"/><p><strong>3.4.</strong></p></td><td align="left" valign="top"><p>How do I insure that the dynamically linked library will be found? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_set_paths"/></td><td align="left" valign="top"><p> + Depending on your platform and library version, the error message might + be similar to one of the following: +@@ -318,7 +318,7 @@ + </p><p> + Using LD_LIBRARY_PATH is not always the best solution, <a class="link" href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic" title="Finding Dynamic or Shared Libraries">Finding Dynamic or Shared + Libraries</a> in the manual gives some alternatives. +- </p></td></tr><tr class="question" title="3.5."><td align="left" valign="top"><a id="faq.what_is_libsupcxx"/><a id="q-what_is_libsupcxx"/><p><b>3.5.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="3.5."><td align="left" valign="top"><a id="faq.what_is_libsupcxx"/><a id="q-what_is_libsupcxx"/><p><strong>3.5.</strong></p></td><td align="left" valign="top"><p> + What's libsupc++? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_is_libsupcxx"/></td><td align="left" valign="top"><p> + If the only functions from <code class="filename">libstdc++.a</code> +@@ -335,7 +335,7 @@ + using anything from the rest of the library, such as IOStreams + or vectors, then you'll still need pieces from + <code class="filename">libstdc++.a</code>. +- </p></td></tr><tr class="question" title="3.6."><td align="left" valign="top"><a id="faq.size"/><a id="q-size"/><p><b>3.6.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="3.6."><td align="left" valign="top"><a id="faq.size"/><a id="q-size"/><p><strong>3.6.</strong></p></td><td align="left" valign="top"><p> + This library is HUGE! + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-size"/></td><td align="left" valign="top"><p> + Usually the size of libraries on disk isn't noticeable. When a +@@ -382,7 +382,7 @@ + Recent GNU/Linux glibc required? + </a></dt><dt>4.8. <a href="faq.html#faq.freebsd_wchar"> + Can't use wchar_t/wstring on FreeBSD +- </a></dt></dl></td></tr><tr class="question" title="4.1."><td align="left" valign="top"><a id="faq.other_compilers"/><a id="q-other_compilers"/><p><b>4.1.</b></p></td><td align="left" valign="top"><p> ++ </a></dt></dl></td></tr><tr class="question" title="4.1."><td align="left" valign="top"><a id="faq.other_compilers"/><a id="q-other_compilers"/><p><strong>4.1.</strong></p></td><td align="left" valign="top"><p> + Can libstdc++ be used with non-GNU compilers? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-other_compilers"/></td><td align="left" valign="top"><p> + Perhaps. +@@ -402,7 +402,7 @@ + been known to work with versions of the EDG C++ compiler, and + vendor-specific proprietary C++ compilers such as the Intel ICC + C++ compiler. +- </p></td></tr><tr class="question" title="4.2."><td align="left" valign="top"><a id="faq.solaris_long_long"/><a id="q-solaris_long_long"/><p><b>4.2.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="4.2."><td align="left" valign="top"><a id="faq.solaris_long_long"/><a id="q-solaris_long_long"/><p><strong>4.2.</strong></p></td><td align="left" valign="top"><p> + No 'long long' type on Solaris? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-solaris_long_long"/></td><td align="left" valign="top"><p> + By default we try to support the C99 <span class="type">long long</span> type. +@@ -414,7 +414,7 @@ + commonly reported platform affected was Solaris. + </p><p> + This has been fixed for libstdc++ releases greater than 3.0.3. +- </p></td></tr><tr class="question" title="4.3."><td align="left" valign="top"><a id="faq.predefined"/><a id="q-predefined"/><p><b>4.3.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="4.3."><td align="left" valign="top"><a id="faq.predefined"/><a id="q-predefined"/><p><strong>4.3.</strong></p></td><td align="left" valign="top"><p> + <code class="constant">_XOPEN_SOURCE</code> and <code class="constant">_GNU_SOURCE</code> are always defined? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-predefined"/></td><td align="left" valign="top"><p>On Solaris, g++ (but not gcc) always defines the preprocessor + macro <code class="constant">_XOPEN_SOURCE</code>. On GNU/Linux, the same happens +@@ -440,16 +440,16 @@ + <span class="command"><strong>g++ -E -dM - < /dev/null"</strong></span> to display + a list of predefined macros for any particular installation. + </p><p>This has been discussed on the mailing lists +- <a class="link" href="http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris" target="">quite a bit</a>. ++ <a class="link" href="http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris">quite a bit</a>. + </p><p>This method is something of a wart. We'd like to find a cleaner + solution, but nobody yet has contributed the time. +- </p></td></tr><tr class="question" title="4.4."><td align="left" valign="top"><a id="faq.darwin_ctype"/><a id="q-darwin_ctype"/><p><b>4.4.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="4.4."><td align="left" valign="top"><a id="faq.darwin_ctype"/><a id="q-darwin_ctype"/><p><strong>4.4.</strong></p></td><td align="left" valign="top"><p> + Mac OS X <code class="filename">ctype.h</code> is broken! How can I fix it? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-darwin_ctype"/></td><td align="left" valign="top"><p>This is a long-standing bug in the OS X support. Fortunately, + the patch is quite simple, and well-known. +- <a class="link" href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html" target=""> Here's a ++ <a class="link" href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html"> Here's a + link to the solution</a>. +- </p></td></tr><tr class="question" title="4.5."><td align="left" valign="top"><a id="faq.threads_i386"/><a id="q-threads_i386"/><p><b>4.5.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="4.5."><td align="left" valign="top"><a id="faq.threads_i386"/><a id="q-threads_i386"/><p><strong>4.5.</strong></p></td><td align="left" valign="top"><p> + Threading is broken on i386? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-threads_i386"/></td><td align="left" valign="top"><p> + </p><p>Support for atomic integer operations is/was broken on i386 +@@ -459,7 +459,7 @@ + on an i686, then you would encounter no problems. Only when + actually running the code on a i386 will the problem appear. + </p><p>This is fixed in 3.2.2. +- </p></td></tr><tr class="question" title="4.6."><td align="left" valign="top"><a id="faq.atomic_mips"/><a id="q-atomic_mips"/><p><b>4.6.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="4.6."><td align="left" valign="top"><a id="faq.atomic_mips"/><a id="q-atomic_mips"/><p><strong>4.6.</strong></p></td><td align="left" valign="top"><p> + MIPS atomic operations + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-atomic_mips"/></td><td align="left" valign="top"><p> + The atomic locking routines for MIPS targets requires MIPS II +@@ -469,7 +469,7 @@ + </p><p> + The mips*-*-linux* port continues to use the MIPS II routines, and more + work in this area is expected. +- </p></td></tr><tr class="question" title="4.7."><td align="left" valign="top"><a id="faq.linux_glibc"/><a id="q-linux_glibc"/><p><b>4.7.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="4.7."><td align="left" valign="top"><a id="faq.linux_glibc"/><a id="q-linux_glibc"/><p><strong>4.7.</strong></p></td><td align="left" valign="top"><p> + Recent GNU/Linux glibc required? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-linux_glibc"/></td><td align="left" valign="top"><p>When running on GNU/Linux, libstdc++ 3.2.1 (shared library version + 5.0.1) and later uses localization and formatting code from the system +@@ -480,7 +480,7 @@ + </p><p>The guideline is simple: the more recent the C++ library, the + more recent the C library. (This is also documented in the main + GCC installation instructions.) +- </p></td></tr><tr class="question" title="4.8."><td align="left" valign="top"><a id="faq.freebsd_wchar"/><a id="q-freebsd_wchar"/><p><b>4.8.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="4.8."><td align="left" valign="top"><a id="faq.freebsd_wchar"/><a id="q-freebsd_wchar"/><p><strong>4.8.</strong></p></td><td align="left" valign="top"><p> + Can't use wchar_t/wstring on FreeBSD + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-freebsd_wchar"/></td><td align="left" valign="top"><p> + Older versions of FreeBSD's C library do not have sufficient +@@ -499,7 +499,7 @@ + Bugs in the ISO C++ language or library specification + </a></dt><dt>5.3. <a href="faq.html#faq.compiler_bugs"> + Bugs in the compiler (gcc/g++) and not libstdc++ +- </a></dt></dl></td></tr><tr class="question" title="5.1."><td align="left" valign="top"><a id="faq.what_works"/><a id="q-what_works"/><p><b>5.1.</b></p></td><td align="left" valign="top"><p> ++ </a></dt></dl></td></tr><tr class="question" title="5.1."><td align="left" valign="top"><a id="faq.what_works"/><a id="q-what_works"/><p><strong>5.1.</strong></p></td><td align="left" valign="top"><p> + What works already? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_works"/></td><td align="left" valign="top"><p> + Short answer: Pretty much everything <span class="emphasis"><em>works</em></span> +@@ -513,7 +513,7 @@ + <a class="link" href="manual/status.html#status.iso.1998" title="C++ 1998/2003">C++98</a>, + <a class="link" href="manual/status.html#status.iso.tr1" title="C++ TR1">TR1</a>, and + <a class="link" href="manual/status.html#status.iso.200x" title="C++ 200x">C++0x</a>. +- </p></td></tr><tr class="question" title="5.2."><td align="left" valign="top"><a id="faq.standard_bugs"/><a id="q-standard_bugs"/><p><b>5.2.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="5.2."><td align="left" valign="top"><a id="faq.standard_bugs"/><a id="q-standard_bugs"/><p><strong>5.2.</strong></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"/></td><td align="left" valign="top"><p> + Unfortunately, there are some. +@@ -521,14 +521,14 @@ + For those people who are not part of the ISO Library Group + (i.e., nearly all of us needing to read this page in the first + place), a public list of the library defects is occasionally +- published <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/" target="">here</a>. ++ published <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/">here</a>. + Some of these issues have resulted in code changes in libstdc++. + </p><p> + If you think you've discovered a new bug that is not listed, + please post a message describing your problem + to <code class="email"><<a class="email" href="mailto:libstdc++@gcc.gnu.org">libstdc++@gcc.gnu.org</a>></code> or the Usenet group + comp.lang.c++.moderated. +- </p></td></tr><tr class="question" title="5.3."><td align="left" valign="top"><a id="faq.compiler_bugs"/><a id="q-compiler_bugs"/><p><b>5.3.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="5.3."><td align="left" valign="top"><a id="faq.compiler_bugs"/><a id="q-compiler_bugs"/><p><strong>5.3.</strong></p></td><td align="left" valign="top"><p> + Bugs in the compiler (gcc/g++) and not libstdc++ + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-compiler_bugs"/></td><td align="left" valign="top"><p> + On occasion, the compiler is wrong. Please be advised that this +@@ -541,7 +541,7 @@ + these lists with terms describing your issue. + </p><p> + Before reporting a bug, please examine the +- <a class="link" href="http://gcc.gnu.org/bugs/" target="">bugs database</a> with the ++ <a class="link" href="http://gcc.gnu.org/bugs/">bugs database</a> with the + category set to <span class="quote">“<span class="quote">g++</span>”</span>. + </p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>6.1. <a href="faq.html#faq.stream_reopening_fails"> + Reopening a stream fails +@@ -563,7 +563,7 @@ + list::size() is O(n)! + </a></dt><dt>6.9. <a href="faq.html#faq.easy_to_fix"> + Aw, that's easy to fix! +- </a></dt></dl></td></tr><tr class="question" title="6.1."><td align="left" valign="top"><a id="faq.stream_reopening_fails"/><a id="q-stream_reopening_fails"/><p><b>6.1.</b></p></td><td align="left" valign="top"><p> ++ </a></dt></dl></td></tr><tr class="question" title="6.1."><td align="left" valign="top"><a id="faq.stream_reopening_fails"/><a id="q-stream_reopening_fails"/><p><strong>6.1.</strong></p></td><td align="left" valign="top"><p> + Reopening a stream fails + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-stream_reopening_fails"/></td><td align="left" valign="top"><p> + One of the most-reported non-bug reports. Executing a sequence like: +@@ -590,7 +590,7 @@ + <span class="emphasis"><em>Update:</em></span> for GCC 4.0 we implemented the resolution + 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" title="6.2."><td align="left" valign="top"><a id="faq.wefcxx_verbose"/><a id="q-wefcxx_verbose"/><p><b>6.2.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="6.2."><td align="left" valign="top"><a id="faq.wefcxx_verbose"/><a id="q-wefcxx_verbose"/><p><strong>6.2.</strong></p></td><td align="left" valign="top"><p> + -Weffc++ complains too much + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-wefcxx_verbose"/></td><td align="left" valign="top"><p> + Many warnings are emitted when <code class="literal">-Weffc++</code> is used. Making +@@ -602,7 +602,7 @@ + We do, however, try to have libstdc++ sources as clean as possible. If + you see some simple changes that pacify <code class="literal">-Weffc++</code> + without other drawbacks, send us a patch. +- </p></td></tr><tr class="question" title="6.3."><td align="left" valign="top"><a id="faq.ambiguous_overloads"/><a id="q-ambiguous_overloads"/><p><b>6.3.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="6.3."><td align="left" valign="top"><a id="faq.ambiguous_overloads"/><a id="q-ambiguous_overloads"/><p><strong>6.3.</strong></p></td><td align="left" valign="top"><p> + Ambiguous overloads after including an old-style header + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-ambiguous_overloads"/></td><td align="left" valign="top"><p> + Another problem is the <code class="literal">rel_ops</code> namespace and the template +@@ -611,10 +611,10 @@ + (e.g., <span class="quote">“<span class="quote">using</span>”</span> them and the <iterator> header), + then you will suddenly be faced with huge numbers of ambiguity + errors. This was discussed on the -v3 list; Nathan Myers +- <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html" target="">sums ++ <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums + things up here</a>. The collisions with vector/string iterator + types have been fixed for 3.1. +- </p></td></tr><tr class="question" title="6.4."><td align="left" valign="top"><a id="faq.v2_headers"/><a id="q-v2_headers"/><p><b>6.4.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="6.4."><td align="left" valign="top"><a id="faq.v2_headers"/><a id="q-v2_headers"/><p><strong>6.4.</strong></p></td><td align="left" valign="top"><p> + The g++-3 headers are <span class="emphasis"><em>not ours</em></span> + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-v2_headers"/></td><td align="left" valign="top"><p> + If you are using headers in +@@ -630,7 +630,7 @@ + 'v'?). Starting with version 3.2 the headers are installed in + <code class="filename">${prefix}/include/c++/${version}</code> as this prevents + headers from previous versions being found by mistake. +- </p></td></tr><tr class="question" title="6.5."><td align="left" valign="top"><a id="faq.boost_concept_checks"/><a id="q-boost_concept_checks"/><p><b>6.5.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="6.5."><td align="left" valign="top"><a id="faq.boost_concept_checks"/><a id="q-boost_concept_checks"/><p><strong>6.5.</strong></p></td><td align="left" valign="top"><p> + Errors about <span class="emphasis"><em>*Concept</em></span> and + <span class="emphasis"><em>constraints</em></span> in the STL + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-boost_concept_checks"/></td><td align="left" valign="top"><p> +@@ -647,7 +647,7 @@ + checks, is available in the + <a class="link" href="manual/bk01pt02ch05s02.html" title="Concept Checking">Diagnostics</a>. + chapter of the manual. +- </p></td></tr><tr class="question" title="6.6."><td align="left" valign="top"><a id="faq.dlopen_crash"/><a id="q-dlopen_crash"/><p><b>6.6.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="6.6."><td align="left" valign="top"><a id="faq.dlopen_crash"/><a id="q-dlopen_crash"/><p><strong>6.6.</strong></p></td><td align="left" valign="top"><p> + Program crashes when using library code in a + dynamically-loaded library + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-dlopen_crash"/></td><td align="left" valign="top"><p> +@@ -666,12 +666,12 @@ + <br/> + // link the executable<br/> + g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl<br/> +- </p></div></td></tr><tr class="question" title="6.7."><td align="left" valign="top"><a id="faq.memory_leaks"/><a id="q-memory_leaks"/><p><b>6.7.</b></p></td><td align="left" valign="top"><p> ++ </p></div></td></tr><tr class="question" title="6.7."><td align="left" valign="top"><a id="faq.memory_leaks"/><a id="q-memory_leaks"/><p><strong>6.7.</strong></p></td><td align="left" valign="top"><p> + <span class="quote">“<span class="quote">Memory leaks</span>”</span> in containers + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-memory_leaks"/></td><td align="left" valign="top"><p> + A few people have reported that the standard containers appear + to leak memory when tested with memory checkers such as +- <a class="link" href="http://valgrind.org/" target="">valgrind</a>. ++ <a class="link" href="http://valgrind.org/">valgrind</a>. + The library's default allocators keep free memory in a pool + for later reuse, rather than returning it to the OS. Although + this memory is always reachable by the library and is never +@@ -679,18 +679,18 @@ + want to test the library for memory leaks please read + <a class="link" href="manual/debug.html#debug.memory" title="Memory Leak Hunting">Tips for memory leak hunting</a> + first. +- </p></td></tr><tr class="question" title="6.8."><td align="left" valign="top"><a id="faq.list_size_on"/><a id="q-list_size_on"/><p><b>6.8.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="6.8."><td align="left" valign="top"><a id="faq.list_size_on"/><a id="q-list_size_on"/><p><strong>6.8.</strong></p></td><td align="left" valign="top"><p> + list::size() is O(n)! + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-list_size_on"/></td><td align="left" valign="top"><p> + See + the <a class="link" href="manual/containers.html" title="Chapter 9. Containers">Containers</a> + chapter. +- </p></td></tr><tr class="question" title="6.9."><td align="left" valign="top"><a id="faq.easy_to_fix"/><a id="q-easy_to_fix"/><p><b>6.9.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="6.9."><td align="left" valign="top"><a id="faq.easy_to_fix"/><a id="q-easy_to_fix"/><p><strong>6.9.</strong></p></td><td align="left" valign="top"><p> + Aw, that's easy to fix! + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-easy_to_fix"/></td><td align="left" valign="top"><p> + If you have found a bug in the library and you think you have + a working fix, then send it in! The main GCC site has a page +- on <a class="link" href="http://gcc.gnu.org/contribute.html" target="">submitting ++ on <a class="link" href="http://gcc.gnu.org/contribute.html">submitting + 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++ +@@ -718,7 +718,7 @@ + What's an ABI and why is it so messy? + </a></dt><dt>7.8. <a href="faq.html#faq.size_equals_capacity"> + How do I make std::vector<T>::capacity() == std::vector<T>::size? +- </a></dt></dl></td></tr><tr class="question" title="7.1."><td align="left" valign="top"><a id="faq.iterator_as_pod"/><a id="faq.iterator_as_pod_q"/><p><b>7.1.</b></p></td><td align="left" valign="top"><p> ++ </a></dt></dl></td></tr><tr class="question" title="7.1."><td align="left" valign="top"><a id="faq.iterator_as_pod"/><a id="faq.iterator_as_pod_q"/><p><strong>7.1.</strong></p></td><td align="left" valign="top"><p> + string::iterator is not char*; vector<T>::iterator is not T* + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="faq.iterator_as_pod_a"/></td><td align="left" valign="top"><p> + If you have code that depends on container<T> iterators +@@ -737,7 +737,7 @@ + certain expressions to <code class="varname">&*i</code>. Future revisions + of the Standard are expected to bless this usage for + vector<> (but not for basic_string<>). +- </p></td></tr><tr class="question" title="7.2."><td align="left" valign="top"><a id="faq.what_is_next"/><a id="q-what_is_next"/><p><b>7.2.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="7.2."><td align="left" valign="top"><a id="faq.what_is_next"/><a id="q-what_is_next"/><p><strong>7.2.</strong></p></td><td align="left" valign="top"><p> + What's next after libstdc++? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_is_next"/></td><td align="left" valign="top"><p> + Hopefully, not much. The goal of libstdc++ is to produce a +@@ -748,12 +748,12 @@ + There is an effort underway to add significant extensions to + the standard library specification. The latest version of + this effort is described in +- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target=""> ++ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"> + The C++ Library Technical Report 1</a>. +- </p></td></tr><tr class="question" title="7.3."><td align="left" valign="top"><a id="faq.sgi_stl"/><a id="q-sgi_stl"/><p><b>7.3.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="7.3."><td align="left" valign="top"><a id="faq.sgi_stl"/><a id="q-sgi_stl"/><p><strong>7.3.</strong></p></td><td align="left" valign="top"><p> + What about the STL from SGI? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-sgi_stl"/></td><td align="left" valign="top"><p> +- The <a class="link" href="http://www.sgi.com/tech/stl/" target="">STL from SGI</a>, ++ The <a class="link" href="http://www.sgi.com/tech/stl/">STL from SGI</a>, + version 3.3, was the final merge of the STL codebase. The + code in libstdc++ contains many fixes and changes, and + the SGI code is no longer under active +@@ -773,23 +773,23 @@ + </p><p> + The FAQ for SGI's STL (one jump off of their main page) is + still recommended reading. +- </p></td></tr><tr class="question" title="7.4."><td align="left" valign="top"><a id="faq.extensions_and_backwards_compat"/><a id="q-extensions_and_backwards_compat"/><p><b>7.4.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="7.4."><td align="left" valign="top"><a id="faq.extensions_and_backwards_compat"/><a id="q-extensions_and_backwards_compat"/><p><strong>7.4.</strong></p></td><td align="left" valign="top"><p> + Extensions and Backward Compatibility + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-extensions_and_backwards_compat"/></td><td align="left" valign="top"><p> + See the <a class="link" href="manual/backwards.html" title="Backwards Compatibility">link</a> on backwards compatibility and <a class="link" href="manual/api.html" title="API Evolution and Deprecation History">link</a> on evolution. +- </p></td></tr><tr class="question" title="7.5."><td align="left" valign="top"><a id="faq.tr1_support"/><a id="q-tr1_support"/><p><b>7.5.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="7.5."><td align="left" valign="top"><a id="faq.tr1_support"/><a id="q-tr1_support"/><p><strong>7.5.</strong></p></td><td align="left" valign="top"><p> + Does libstdc++ support TR1? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-tr1_support"/></td><td align="left" valign="top"><p> + Yes. + </p><p> + The C++ Standard Library Technical Report adds many new features to + the library. The latest version of this effort is described in +- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target=""> ++ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"> + Technical Report 1</a>. + </p><p> + The implementation status of TR1 in libstdc++ can be tracked <a class="link" href="manual/status.html#status.iso.tr1" title="C++ TR1">on the TR1 status + page</a>. +- </p></td></tr><tr class="question" title="7.6."><td align="left" valign="top"><a id="faq.get_iso_cxx"/><a id="q-get_iso_cxx"/><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="question" title="7.6."><td align="left" valign="top"><a id="faq.get_iso_cxx"/><a id="q-get_iso_cxx"/><p><strong>7.6.</strong></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"/></td><td align="left" valign="top"><p> + Copies of the full ISO 14882 standard are available on line via + the ISO mirror site for committee members. Non-members, or those +@@ -798,17 +798,17 @@ + get a copy of the standard from their respective national + standards organization. In the USA, this national standards + organization is ANSI and their website is +- right <a class="link" href="http://www.ansi.org" target="">here</a>. (And if ++ right <a class="link" href="http://www.ansi.org">here</a>. (And if + you've already registered with them, clicking this link will take + you to directly to the place where you can +- <a class="link" href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003" target="">buy the standard on-line</a>. ++ <a class="link" href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line</a>. + </p><p> + Who is your country's member body? Visit the +- <a class="link" href="http://www.iso.ch/" target="">ISO homepage</a> and find out! ++ <a class="link" href="http://www.iso.ch/">ISO homepage</a> and find out! + </p><p> + The 2003 version of the standard (the 1998 version plus TC1) is + available in print, ISBN 0-470-84674-7. +- </p></td></tr><tr class="question" title="7.7."><td align="left" valign="top"><a id="faq.what_is_abi"/><a id="q-what_is_abi"/><p><b>7.7.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="7.7."><td align="left" valign="top"><a id="faq.what_is_abi"/><a id="q-what_is_abi"/><p><strong>7.7.</strong></p></td><td align="left" valign="top"><p> + What's an ABI and why is it so messy? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_is_abi"/></td><td align="left" valign="top"><p> + <acronym class="acronym">ABI</acronym> stands for <span class="quote">“<span class="quote">Application Binary +@@ -856,7 +856,7 @@ + so they may later be changed. Deciding which, and implementing + the decisions, must happen before you can reasonably document a + candidate C++ ABI that encompasses the standard library. +- </p></td></tr><tr class="question" title="7.8."><td align="left" valign="top"><a id="faq.size_equals_capacity"/><a id="q-size_equals_capacity"/><p><b>7.8.</b></p></td><td align="left" valign="top"><p> ++ </p></td></tr><tr class="question" title="7.8."><td align="left" valign="top"><a id="faq.size_equals_capacity"/><a id="q-size_equals_capacity"/><p><strong>7.8.</strong></p></td><td align="left" valign="top"><p> + How do I make std::vector<T>::capacity() == std::vector<T>::size? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-size_equals_capacity"/></td><td align="left" valign="top"><p> + The standard idiom for deallocating a <code class="classname">vector<T></code>'s +diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html +index 29af39e..dc4bf5a 100644 +--- a/libstdc++-v3/doc/html/manual/abi.html ++++ b/libstdc++-v3/doc/html/manual/abi.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ABI Policy and Guidelines</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , ABI , version , dynamic , shared , compatibility "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance"/><link rel="prev" href="test.html" title="Test"/><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 align="left"><a accesskey="p" href="test.html">Prev</a> </td><th width="60%" align="center">Appendix B. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ABI Policy and Guidelines</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , ABI , version , dynamic , shared , compatibility "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance"/><link rel="prev" href="test.html" title="Test"/><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 align="left"><a accesskey="p" href="test.html">Prev</a> </td><th width="60%" align="center">Appendix B. + Porting and Maintenance + + </th><td align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr/></div><div class="section" title="ABI Policy and Guidelines"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting.abi"/>ABI Policy and Guidelines</h2></div></div></div><p> +@@ -21,7 +21,7 @@ + virtual functions, etc. These details are defined as the compiler + Application Binary Interface, or ABI. The GNU C++ compiler uses an + industry-standard C++ ABI starting with version 3. Details can be +- found in the <a class="link" href="http://www.codesourcery.com/public/cxx-abi/abi.html" target="">ABI ++ found in the <a class="link" href="http://www.codesourcery.com/public/cxx-abi/abi.html">ABI + specification</a>. + </p><p> + The GNU C++ compiler, g++, has a compiler command line option to +@@ -30,7 +30,7 @@ + g++ command line options may change the ABI as a side-effect of + use. Such flags include <code class="code">-fpack-struct</code> and + <code class="code">-fno-exceptions</code>, but include others: see the complete +- list in the GCC manual under the heading <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options" target="">Options ++ list in the GCC manual under the heading <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options + for Code Generation Conventions</a>. + </p><p> + The configure options used when building a specific libstdc++ +@@ -115,7 +115,7 @@ compatible. + Note 2: Not strictly required. + </p><p> + Note 3: This release (but not previous or subsequent) has one +- known incompatibility, see <a class="link" href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678" target="">33678</a> ++ known incompatibility, see <a class="link" href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678">33678</a> + in the GCC bug database. + </p></li><li class="listitem"><p>Symbol versioning on the libstdc++.so binary.</p><p>mapfile: libstdc++-v3/config/abi/pre/gnu.ver</p><p>It is versioned with the following labels and version + definitions, where the version definition is the maximum for a +@@ -289,7 +289,7 @@ class that would otherwise have implicit versions. This will change + the way the compiler deals with this class in by-value return + statements or parameters: instead of passing instances of this + class in registers, the compiler will be forced to use memory. See the +-section on <a class="link" href="http://www.codesourcery.com/public/cxx-abi/abi.html#calls" target="">Function ++section on <a class="link" href="http://www.codesourcery.com/public/cxx-abi/abi.html#calls">Function + Calling Conventions and APIs</a> + of the C++ ABI documentation for further details. + </p></li></ol></div></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h3 class="title"><a id="abi.impl"/>Implementation</h3></div></div></div><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><p> +@@ -479,41 +479,41 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. + </p><p> + For more background on this issue, see these bugzilla entries: + </p><p> +-<a class="link" href="http://gcc.gnu.org/PR24660" target="">24660: versioning weak symbols in libstdc++</a> ++<a class="link" href="http://gcc.gnu.org/PR24660">24660: versioning weak symbols in libstdc++</a> + </p><p> +-<a class="link" href="http://gcc.gnu.org/PR19664" target="">19664: libstdc++ headers should have pop/push of the visibility around the declarations</a> +-</p></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="abi.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id621956"/><p><span class="biblioid"> ++<a class="link" href="http://gcc.gnu.org/PR19664">19664: libstdc++ headers should have pop/push of the visibility around the declarations</a> ++</p></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="abi.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id501388"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + ABIcheck, a vague idea of checking ABI compatibility +- </em>. </span></p></div><div class="biblioentry"><a id="id621973"/><p><span class="biblioid"> ++ </em>. </span></p></div><div class="biblioentry"><a id="id501406"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + C++ ABI Reference +- </em>. </span></p></div><div class="biblioentry"><a id="id621990"/><p><span class="biblioid"> ++ </em>. </span></p></div><div class="biblioentry"><a id="id501423"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Intel Compilers for Linux Compatibility with the GNU Compilers +- </em>. </span></p></div><div class="biblioentry"><a id="id622008"/><p><span class="biblioid"> ++ </em>. </span></p></div><div class="biblioentry"><a id="id501441"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Linker and Libraries Guide (document 819-0690) +- </em>. </span></p></div><div class="biblioentry"><a id="id622026"/><p><span class="biblioid"> ++ </em>. </span></p></div><div class="biblioentry"><a id="id501458"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Sun Studio 11: C++ Migration Guide (document 819-3689) +- </em>. </span></p></div><div class="biblioentry"><a id="id622043"/><p><span class="biblioid"> ++ </em>. </span></p></div><div class="biblioentry"><a id="id501476"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + How to Write Shared Libraries +- </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span></p></div><div class="biblioentry"><a id="id622074"/><p><span class="biblioid"> ++ </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span></p></div><div class="biblioentry"><a id="id501507"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + C++ ABI for the ARM Architecture +- </em>. </span></p></div><div class="biblioentry"><a id="id622092"/><p><span class="biblioid"> ++ </em>. </span></p></div><div class="biblioentry"><a id="id501524"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Dynamic Shared Objects: Survey and Issues + </em>. </span><span class="subtitle"> + ISO C++ J16/06-0046 +- . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="id622121"/><p><span class="biblioid"> ++ . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="id501554"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Versioning With Namespaces + </em>. </span><span class="subtitle"> + ISO C++ J16/06-0083 +- . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="id622151"/><p><span class="biblioid"> ++ . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="id501584"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Binary Compatibility of Shared Libraries Implemented in C++ + on GNU/Linux Systems +diff --git a/libstdc++-v3/doc/html/manual/algorithms.html b/libstdc++-v3/doc/html/manual/algorithms.html +index a484274..ba91e4e 100644 +--- a/libstdc++-v3/doc/html/manual/algorithms.html ++++ b/libstdc++-v3/doc/html/manual/algorithms.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 11. Algorithms</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library , algorithm "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="iterators.html" title="Chapter 10. Iterators"/><link rel="next" href="numerics.html" title="Chapter 12. Numerics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 11. Algorithms</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library , algorithm "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="iterators.html" title="Chapter 10. Iterators"/><link rel="next" href="numerics.html" title="Chapter 12. Numerics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. + Algorithms + + </th></tr><tr><td align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 11. Algorithms"><div class="titlepage"><div><div><h1 class="title"><a id="std.algorithms"/> ++ </th><td align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 11. Algorithms"><div class="titlepage"><div><div><h2 class="title"><a id="std.algorithms"/>Chapter 11. + Algorithms +- <a id="id600499" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><span class="section"><a href="algorithms.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt></dl></dd></dl></div><p> ++ <a id="id479931" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><span class="section"><a href="algorithms.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt></dl></dd></dl></div><p> + The neatest accomplishment of the algorithms sect1 is that all the + work is done via iterators, not containers directly. This means two + important things: +diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html +index bebd3a9..2cb3500 100644 +--- a/libstdc++-v3/doc/html/manual/api.html ++++ b/libstdc++-v3/doc/html/manual/api.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>API Evolution and Deprecation History</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content="ISO C++, api, evolution, deprecation, history"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="abi.html">Prev</a> </td><th width="60%" align="center">Appendix B. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>API Evolution and Deprecation History</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content="ISO C++, api, evolution, deprecation, history"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="abi.html">Prev</a> </td><th width="60%" align="center">Appendix B. + Porting and Maintenance + + </th><td align="right"> <a accesskey="n" href="backwards.html">Next</a></td></tr></table><hr/></div><div class="section" title="API Evolution and Deprecation History"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting.api"/>API Evolution and Deprecation History</h2></div></div></div><p> +@@ -75,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="id622712"/><p class="title"><b>Table B.6. Extension Allocators</b></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Allocator (3.4)</th><th style="text-align: left">Header (3.4)</th><th style="text-align: left">Allocator (3.[0-3])</th><th style="text-align: left">Header (3.[0-3])</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/new_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__new_alloc</code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/malloc_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__malloc_alloc_template<int></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/debug_allocator.h</code></td><td style="text-align: left"><code class="classname">std::debug_alloc<T></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td style="text-align: left"><code class="filename">ext/pool_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td style="text-align: left"><code class="filename">ext/mt_allocator.h</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/bitmap_allocator.h</code></td><td style="text-align: left"> </td><td style="text-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="id502145"/><p class="title"><strong>Table B.6. Extension Allocators</strong></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Allocator (3.4)</th><th style="text-align: left">Header (3.4)</th><th style="text-align: left">Allocator (3.[0-3])</th><th style="text-align: left">Header (3.[0-3])</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/new_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__new_alloc</code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/malloc_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__malloc_alloc_template<int></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/debug_allocator.h</code></td><td style="text-align: left"><code class="classname">std::debug_alloc<T></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td style="text-align: left"><code class="filename">ext/pool_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td style="text-align: left"><code class="filename">ext/mt_allocator.h</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/bitmap_allocator.h</code></td><td style="text-align: left"> </td><td style="text-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="id622942"/><p class="title"><b>Table B.7. Extension Allocators Continued</b></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Allocator</th><th style="text-align: left">Include</th><th style="text-align: left">Version</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/array_allocator.h</code></td><td style="text-align: left">4.0.0</td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/throw_allocator.h</code></td><td style="text-align: left">4.2.0</td></tr></tbody></table></div></div><br class="table-break"/><p> ++ </p><div class="table"><a id="id502375"/><p class="title"><strong>Table B.7. Extension Allocators Continued</strong></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/></colgroup><thead><tr><th style="text-align: left">Allocator</th><th style="text-align: left">Include</th><th style="text-align: left">Version</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/array_allocator.h</code></td><td style="text-align: left">4.0.0</td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/throw_allocator.h</code></td><td style="text-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 32bd793..bbaadbd 100644 +--- a/libstdc++-v3/doc/html/manual/appendix_contributing.html ++++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix A. Contributing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><link rel="prev" href="bk01pt04.html" title="Part IV. Appendices"/><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. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix A. Contributing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><link rel="prev" href="bk01pt04.html" title="Part IV. Appendices"/><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 align="left"><a accesskey="p" href="bk01pt04.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices + </th><td align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr></table><hr/></div><div class="appendix" title="Appendix A. Contributing"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.contrib"/> + Contributing +- <a id="id613503" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="section"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="section"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="section"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="section"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="section"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></div><p> ++ <a id="id492936" class="indexterm"/> ++</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="section"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="section"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="section"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="section"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="section"><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 +@@ -23,22 +23,22 @@ + the standard from their respective national standards + organization. In the USA, this national standards + organization is ANSI and their web-site is right +- <a class="link" href="http://www.ansi.org" target="">here.</a> ++ <a class="link" href="http://www.ansi.org">here.</a> + (And if you've already registered with them, clicking this link will take you to directly to the place where you can +- <a class="link" href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003" target="">buy the standard on-line</a>.) ++ <a class="link" href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line</a>.) + </p></li><li class="listitem"><p> + The library working group bugs, and known defects, can + be obtained here: +- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/" target="">http://www.open-std.org/jtc1/sc22/wg21 </a> ++ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/">http://www.open-std.org/jtc1/sc22/wg21 </a> + </p></li><li class="listitem"><p> + The newsgroup dedicated to standardization issues is + comp.std.c++: this FAQ for this group is quite useful and + can be +- found <a class="link" href="http://www.comeaucomputing.com/csc/faq.html" target=""> ++ found <a class="link" href="http://www.comeaucomputing.com/csc/faq.html"> + here </a>. + </p></li><li class="listitem"><p> + Peruse +- the <a class="link" href="http://www.gnu.org/prep/standards" target="">GNU ++ the <a class="link" href="http://www.gnu.org/prep/standards">GNU + Coding Standards</a>, and chuckle when you hit the part + about <span class="quote">“<span class="quote">Using Languages Other Than C</span>”</span>. + </p></li><li class="listitem"><p> +@@ -67,7 +67,7 @@ + this question would be appreciated. + </p><p> + For more information about getting a copyright assignment, please see +- <a class="link" href="http://www.gnu.org/prep/maintain/html_node/Legal-Matters.html" target="">Legal ++ <a class="link" href="http://www.gnu.org/prep/maintain/html_node/Legal-Matters.html">Legal + Matters</a>. + </p><p> + Please contact Benjamin Kosnik at +@@ -77,7 +77,7 @@ + <code class="email"><<a class="email" href="mailto:mailto:assign@gnu.org">mailto:assign@gnu.org</a>></code>, please cc the libstdc++ + maintainer above so that progress can be monitored. + </p></div><div class="section" title="Getting Sources"><div class="titlepage"><div><div><h3 class="title"><a id="list.getting"/>Getting Sources</h3></div></div></div><p> +- <a class="link" href="http://gcc.gnu.org/svnwrite.html" target="">Getting write access ++ <a class="link" href="http://gcc.gnu.org/svnwrite.html">Getting write access + (look for "Write after approval")</a> + </p></div><div class="section" title="Submitting Patches"><div class="titlepage"><div><div><h3 class="title"><a id="list.patches"/>Submitting Patches</h3></div></div></div><p> + Every patch must have several pieces of information before it can be +@@ -104,7 +104,7 @@ + else, use <span class="command"><strong>diff -cp OLD NEW</strong></span> ... If your + version of diff does not support these options, then get the + latest version of GNU +- diff. The <a class="link" href="http://gcc.gnu.org/wiki/SvnTricks" target="">SVN ++ diff. The <a class="link" href="http://gcc.gnu.org/wiki/SvnTricks">SVN + Tricks</a> wiki page has information on customising the + output of <code class="code">svn diff</code>. + </p></li><li class="listitem"><p> +diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html +index a8942f7..84f4403 100644 +--- a/libstdc++-v3/doc/html/manual/appendix_free.html ++++ b/libstdc++-v3/doc/html/manual/appendix_free.html +@@ -1,13 +1,13 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix C. Free Software Needs Free Documentation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><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. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix C. Free Software Needs Free Documentation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><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 align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices + </th><td align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr></table><hr/></div><div class="appendix" title="Appendix C. Free Software Needs Free Documentation"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.free"/> + Free Software Needs Free Documentation +- <a id="id625881" class="indexterm"/> ++ <a id="id505314" class="indexterm"/> + </h1></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 +@@ -41,7 +41,7 @@ can ill afford to lose manuals this way. + Free documentation, like free software, is a matter of freedom, + not price. The problem with these manuals was not that O'Reilly + Associates charged a price for printed copies--that in itself is fine. +-(The Free Software Foundation <a class="link" href="http://www.gnu.org/doc/doc.html" target="">sells printed copies</a> of ++(The Free Software Foundation <a class="link" href="http://www.gnu.org/doc/doc.html">sells printed copies</a> of + free GNU manuals, too.) But GNU manuals are available in source code + form, while these manuals are available only on paper. GNU manuals + come with permission to copy and modify; the Perl manuals do not. +@@ -117,7 +117,7 @@ manuals instead of proprietary ones. One way you can help this is to + check the distribution terms of a manual before you buy it, and + prefer copylefted manuals to non-copylefted ones. + </p><p> +-[Note: We now maintain a <a class="link" href="http://www.fsf.org/licensing/doc/other-free-books.html" target="">web page ++[Note: We now maintain a <a class="link" href="http://www.fsf.org/licensing/doc/other-free-books.html">web page + 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 +diff --git a/libstdc++-v3/doc/html/manual/appendix_gfdl.html b/libstdc++-v3/doc/html/manual/appendix_gfdl.html +index c74a471..9a46f18 100644 +--- a/libstdc++-v3/doc/html/manual/appendix_gfdl.html ++++ b/libstdc++-v3/doc/html/manual/appendix_gfdl.html +@@ -1,10 +1,10 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix E. GNU Free Documentation License</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><link rel="prev" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3"/><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 align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><th width="60%" align="center">Part IV. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix E. GNU Free Documentation License</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><link rel="prev" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3"/><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 align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices + </th><td align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr></table><hr/></div><div class="appendix" title="Appendix E. GNU Free Documentation License"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.gfdl-1.3"/>GNU Free Documentation License</h1></div></div></div><p>Version 1.3, 3 November 2008</p><p> + Copyright © 2000, 2001, 2002, 2007, 2008 +- <a class="link" href="http://www.fsf.org/" target="">Free Software Foundation, Inc.</a> ++ <a class="link" href="http://www.fsf.org/">Free Software Foundation, Inc.</a> + </p><p> + Everyone is permitted to copy and distribute verbatim copies of this + license document, but changing it is not allowed. +@@ -377,7 +377,7 @@ + Free Documentation 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. See +- <a class="link" href="http://www.gnu.org/copyleft/" target="">Copyleft</a>. ++ <a class="link" href="http://www.gnu.org/copyleft/">Copyleft</a>. + </p><p> + Each version of the License is given a distinguishing version number. If + the Document specifies that a particular numbered version of this License +diff --git a/libstdc++-v3/doc/html/manual/appendix_gpl.html b/libstdc++-v3/doc/html/manual/appendix_gpl.html +index dc89be9..58d1308 100644 +--- a/libstdc++-v3/doc/html/manual/appendix_gpl.html ++++ b/libstdc++-v3/doc/html/manual/appendix_gpl.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix D. GNU General Public License version 3</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><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. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix D. GNU General Public License version 3</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><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. + <acronym class="acronym">GNU</acronym> General Public License version 3 + </th></tr><tr><td align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices +@@ -10,7 +10,7 @@ + Version 3, 29 June 2007 + </p><p> + Copyright © 2007 Free Software Foundation, Inc. +- <a class="link" href="http://www.fsf.org/" target="">http://www.fsf.org/</a> ++ <a class="link" href="http://www.fsf.org/">http://www.fsf.org/</a> + </p><p> + Everyone is permitted to copy and distribute verbatim copies of this license + document, but changing it is not allowed. +@@ -78,7 +78,7 @@ + </p><p> + The precise terms and conditions for copying, distribution and modification + follow. +- </p><h2><a id="id626220"/> ++ </p><h2><a id="id505653"/> + TERMS AND CONDITIONS + </h2><h2><a id="gpl-3-definitions"/> + 0. Definitions. +@@ -619,7 +619,7 @@ + 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="id627044"/> ++ </p><h2><a id="id506476"/> + END OF TERMS AND CONDITIONS + </h2><h2><a id="HowToApply"/> + How to Apply These Terms to Your New Programs +@@ -648,7 +648,7 @@ 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="link" href="http://www.gnu.org/licenses/" target="">http://www.gnu.org/licenses/</a>. ++along with this program. If not, see <a class="link" href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>. + </pre><p> + Also add information on how to contact you by electronic and paper mail. + </p><p> +@@ -669,14 +669,14 @@ under certain conditions; type ‘<code class="literal">show c</code>’ for det + 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="link" href="http://www.gnu.org/licenses/" target="">http://www.gnu.org/licenses/</a>. ++ <a class="link" href="http://www.gnu.org/licenses/">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="link" href="http://www.gnu.org/philosophy/why-not-lgpl.html" target="">http://www.gnu.org/philosophy/why-not-lgpl.html</a>. ++ License. But first, please read <a class="link" href="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</a>. + </p></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><td align="center"><a accesskey="u" href="bk01pt04.html">Up</a></td><td align="right"> <a accesskey="n" href="appendix_gfdl.html">Next</a></td></tr><tr><td align="left" valign="top">Appendix C. + Free Software Needs Free Documentation + +diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html +index 0b1b44f..8cb4398 100644 +--- a/libstdc++-v3/doc/html/manual/appendix_porting.html ++++ b/libstdc++-v3/doc/html/manual/appendix_porting.html +@@ -1,15 +1,15 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix B. Porting and Maintenance</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><link rel="prev" href="source_design_notes.html" title="Design Notes"/><link rel="next" href="documentation_hacking.html" title="Writing and Generating Documentation"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix B. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Appendix B. Porting and Maintenance</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt04.html" title="Part IV. Appendices"/><link rel="prev" href="source_design_notes.html" title="Design Notes"/><link rel="next" href="documentation_hacking.html" title="Writing and Generating Documentation"/></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 align="left"><a accesskey="p" href="source_design_notes.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices + </th><td align="right"> <a accesskey="n" href="documentation_hacking.html">Next</a></td></tr></table><hr/></div><div class="appendix" title="Appendix B. Porting and Maintenance"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.porting"/> + Porting and Maintenance +- <a id="id614622" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="section"><a href="documentation_hacking.html">Writing and Generating Documentation</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#doc.intro">Introduction</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.generation">Generating Documentation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.doxygen">Doxygen</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.docbook">Docbook</a></span></dt></dl></dd><dt><span class="section"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="section"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="section"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="section"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="section"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="section"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="section"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="section"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="section"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="section"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt><dt><span class="section"><a href="test.html#test.special">Special Topics</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></div><div class="section" title="Configure and Build Hacking"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting.build_hacking"/>Configure and Build Hacking</h2></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.prereq"/>Prerequisites</h3></div></div></div><p> +- As noted <a class="link" href="http://gcc.gnu.org/install/prerequisites.html" target="">previously</a>, ++ <a id="id494054" class="indexterm"/> ++</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="section"><a href="documentation_hacking.html">Writing and Generating Documentation</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#doc.intro">Introduction</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.generation">Generating Documentation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.doxygen">Doxygen</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.docbook">Docbook</a></span></dt></dl></dd><dt><span class="section"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="section"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="section"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="section"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="section"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="section"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="section"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="section"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="section"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="section"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt><dt><span class="section"><a href="test.html#test.special">Special Topics</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></div><div class="section" title="Configure and Build Hacking"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting.build_hacking"/>Configure and Build Hacking</h2></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.prereq"/>Prerequisites</h3></div></div></div><p> ++ As noted <a class="link" href="http://gcc.gnu.org/install/prerequisites.html">previously</a>, + certain other tools are necessary for hacking on files that + control configure (<code class="code">configure.ac</code>, + <code class="code">acinclude.m4</code>) and make +@@ -19,14 +19,14 @@ + in GCC try to stay in sync with each other in terms of versions of + the auto-tools used, so please try to play nicely with the + neighbors. +- </p></div><div class="section" title="Overview: What Comes from Where"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.map"/>Overview: What Comes from Where</h3></div></div></div><div class="figure"><a id="id614754"/><p class="title"><b>Figure B.1. Configure and Build File Dependencies</b></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/confdeps.png" style="text-align: middle" alt="Dependency Graph for Configure and Build Files"/></div></div></div><br class="figure-break"/><p> ++ </p></div><div class="section" title="Overview: What Comes from Where"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.map"/>Overview: What Comes from Where</h3></div></div></div><div class="figure"><a id="id494186"/><p class="title"><strong>Figure B.1. Configure and Build File Dependencies</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/confdeps.png" style="text-align: middle" alt="Dependency Graph for Configure and Build Files"/></div></div></div><br class="figure-break"/><p> + Regenerate all generated files by using the command sequence + <code class="code">"autoreconf"</code> at the top level of the libstdc++ source + directory. The following will also work, but is much more complex: + <code class="code">"aclocal-1.11 && autoconf-2.64 && + autoheader-2.64 && automake-1.11"</code> The version + numbers may be absent entirely or otherwise vary depending on +- <a class="link" href="http://gcc.gnu.org/install/prerequisites.html" target="">the ++ <a class="link" href="http://gcc.gnu.org/install/prerequisites.html">the + current requirements</a> and your vendor's choice of + installation names. + </p></div><div class="section" title="Storing Information in non-AC files (like configure.host)"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.scripts"/>Storing Information in non-AC files (like configure.host)</h3></div></div></div><p> +@@ -196,7 +196,7 @@ + </p><p> + If you're wondering what that line noise in the last example was, + that's how you embed autoconf special characters in output text. +- They're called <a class="link" href="http://www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs" target=""><span class="emphasis"><em>quadrigraphs</em></span></a> ++ They're called <a class="link" href="http://www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs"><span class="emphasis"><em>quadrigraphs</em></span></a> + and you should use them whenever necessary. + </p></li><li class="listitem"><p>HELP-STRING is what you think it is. Do not include the + "default" text like we used to do; it will be done for you by +diff --git a/libstdc++-v3/doc/html/manual/associative.html b/libstdc++-v3/doc/html/manual/associative.html +index e4f072f..351ec94 100644 +--- a/libstdc++-v3/doc/html/manual/associative.html ++++ b/libstdc++-v3/doc/html/manual/associative.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Associative</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="containers.html" title="Chapter 9. Containers"/><link rel="prev" href="containers.html" title="Chapter 9. Containers"/><link rel="next" href="containers_and_c.html" title="Interacting with C"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Associative</th></tr><tr><td align="left"><a accesskey="p" href="containers.html">Prev</a> </td><th width="60%" align="center">Chapter 9. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Associative</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="containers.html" title="Chapter 9. Containers"/><link rel="prev" href="containers.html" title="Chapter 9. Containers"/><link rel="next" href="containers_and_c.html" title="Interacting with C"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Associative</th></tr><tr><td align="left"><a accesskey="p" href="containers.html">Prev</a> </td><th width="60%" align="center">Chapter 9. + Containers + + </th><td align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr></table><hr/></div><div class="section" title="Associative"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers.associative"/>Associative</h2></div></div></div><div class="section" title="Insertion Hints"><div class="titlepage"><div><div><h3 class="title"><a id="containers.associative.insert_hints"/>Insertion Hints</h3></div></div></div><p> +@@ -13,7 +13,7 @@ + item to insert. The standard says that <span class="quote">“<span class="quote"><code class="code">t</code> is + inserted as close as possible to the position just prior to + <code class="code">p</code>.</span>”</span> (Library DR #233 addresses this topic, +- referring to <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html" target="">N1780</a>. ++ referring to <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html">N1780</a>. + Since version 4.2 GCC implements the resolution to DR 233, so + that insertions happen as close as possible to the hint. For + earlier releases the hint was only used as described below. +diff --git a/libstdc++-v3/doc/html/manual/atomics.html b/libstdc++-v3/doc/html/manual/atomics.html +index 4ff4b74..68052a7 100644 +--- a/libstdc++-v3/doc/html/manual/atomics.html ++++ b/libstdc++-v3/doc/html/manual/atomics.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 14. Atomics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library , atomic "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="io_and_c.html" title="Interacting with C"/><link rel="next" href="concurrency.html" title="Chapter 15. Concurrency"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 14. Atomics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library , atomic "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="io_and_c.html" title="Interacting with C"/><link rel="next" href="concurrency.html" title="Chapter 15. Concurrency"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14. + Atomics + + </th></tr><tr><td align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 14. Atomics"><div class="titlepage"><div><div><h1 class="title"><a id="std.atomics"/> ++ </th><td align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 14. Atomics"><div class="titlepage"><div><div><h2 class="title"><a id="std.atomics"/>Chapter 14. + Atomics +- <a id="id602150" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></div><p> ++ <a id="id481583" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></div><p> + Facilities for atomic operations. + </p><div class="section" title="API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="std.atomics.api"/>API Reference</h2></div></div></div><p> + All items are declared in the standard header +diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html +index 40e7ccb..2ac6d78 100644 +--- a/libstdc++-v3/doc/html/manual/backwards.html ++++ b/libstdc++-v3/doc/html/manual/backwards.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Backwards Compatibility</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , backwards "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center">Appendix B. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Backwards Compatibility</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , backwards "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center">Appendix B. + Porting and Maintenance + + </th><td align="right"> <a accesskey="n" href="appendix_free.html">Next</a></td></tr></table><hr/></div><div class="section" title="Backwards Compatibility"><div class="titlepage"><div><div><h2 class="title"><a id="manual.appendix.porting.backwards"/>Backwards Compatibility</h2></div></div></div><div class="section" title="First"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.first"/>First</h3></div></div></div><p>The first generation GNU C++ library was called libg++. It was a +@@ -17,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">“<span class="quote">obvious</span>”</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="section" title="No ios_base"><div class="titlepage"><div><div><h4 class="title"><a id="id624435"/>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="section" title="No cout in ostream.h, no cin in istream.h"><div class="titlepage"><div><div><h4 class="title"><a id="id624468"/>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="section" title="No ios_base"><div class="titlepage"><div><div><h4 class="title"><a id="id503868"/>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="section" title="No cout in ostream.h, no cin in istream.h"><div class="titlepage"><div><div><h4 class="title"><a id="id503900"/>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> +@@ -29,7 +29,7 @@ Committee couldn't include everything, and so a lot of those + explicitly to get the required definitions. + </p><p> Some include adjustment may be required.</p><p>This project is no longer maintained or supported, and the sources + archived. For the desperate, +-the <a class="link" href="http://gcc.gnu.org/extensions.html" target="">GCC extensions ++the <a class="link" href="http://gcc.gnu.org/extensions.html">GCC extensions + page</a> describes where to find the last libg++ source. The code is + considered replaced and rewritten. + </p></div></div><div class="section" title="Second"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.second"/>Second</h3></div></div></div><p> +@@ -44,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="section" title="Namespace std:: not supported"><div class="titlepage"><div><div><h4 class="title"><a id="id624570"/>Namespace <code class="code">std::</code> not supported</h4></div></div></div><p> ++</p><div class="section" title="Namespace std:: not supported"><div class="titlepage"><div><div><h4 class="title"><a id="id504003"/>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>. +@@ -108,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="section" title="Illegal iterator usage"><div class="titlepage"><div><div><h4 class="title"><a id="id624697"/>Illegal iterator usage</h4></div></div></div><p> ++</pre></div><div class="section" title="Illegal iterator usage"><div class="titlepage"><div><div><h4 class="title"><a id="id504130"/>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 class="itemizedlist"><li class="listitem"><p> +@@ -121,7 +121,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [ + </p></li><li class="listitem"><p> + <code class="code">if (iterator)</code> won't work any more => use + <code class="code">if (iterator != iterator_type())</code> +- </p></li></ul></div></div><div class="section" title="isspace from cctype is a macro"><div class="titlepage"><div><div><h4 class="title"><a id="id624758"/><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro ++ </p></li></ul></div></div><div class="section" title="isspace from cctype is a macro"><div class="titlepage"><div><div><h4 class="title"><a id="id504191"/><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.). +@@ -154,7 +154,7 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; + (<code class="filename">ctype.h</code>) and the + definitions in namespace <code class="code">std::</code> + (<code class="code"><cctype></code>). +-</p></div><div class="section" title="No vector::at, deque::at, string::at"><div class="titlepage"><div><div><h4 class="title"><a id="id624854"/>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="section" title="No vector::at, deque::at, string::at"><div class="titlepage"><div><div><h4 class="title"><a id="id504286"/>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) +@@ -180,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="section" title="No std::char_traits<char>::eof"><div class="titlepage"><div><div><h4 class="title"><a id="id624893"/>No <code class="code">std::char_traits<char>::eof</code></h4></div></div></div><p> ++</p></div><div class="section" title="No std::char_traits<char>::eof"><div class="titlepage"><div><div><h4 class="title"><a id="id504326"/>No <code class="code">std::char_traits<char>::eof</code></h4></div></div></div><p> + Use some kind of autoconf test, plus this: + </p><pre class="programlisting"> + #ifdef HAVE_CHAR_TRAITS +@@ -188,7 +188,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)], + #else + #define CPP_EOF EOF + #endif +-</pre></div><div class="section" title="No string::clear"><div class="titlepage"><div><div><h4 class="title"><a id="id624911"/>No <code class="code">string::clear</code></h4></div></div></div><p> ++</pre></div><div class="section" title="No string::clear"><div class="titlepage"><div><div><h4 class="title"><a id="id504344"/>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). +@@ -206,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="section" title="Removal of ostream::form and istream::scan extensions"><div class="titlepage"><div><div><h4 class="title"><a id="id624957"/> ++</p></div><div class="section" title="Removal of ostream::form and istream::scan extensions"><div class="titlepage"><div><div><h4 class="title"><a id="id504390"/> + 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="section" title="No basic_stringbuf, basic_stringstream"><div class="titlepage"><div><div><h4 class="title"><a id="id624976"/>No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></h4></div></div></div><p> ++</p></div><div class="section" title="No basic_stringbuf, basic_stringstream"><div class="titlepage"><div><div><h4 class="title"><a id="id504408"/>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 +@@ -299,14 +299,14 @@ any = temp; + Another example of using stringstreams is in <a class="link" href="strings.html#strings.string.shrink" title="Shrink to Fit">this howto</a>. + </p><p> There is additional information in the libstdc++-v2 info files, in + particular <span class="quote">“<span class="quote">info iostream</span>”</span>. +-</p></div><div class="section" title="Little or no wide character support"><div class="titlepage"><div><div><h4 class="title"><a id="id625132"/>Little or no wide character support</h4></div></div></div><p> ++</p></div><div class="section" title="Little or no wide character support"><div class="titlepage"><div><div><h4 class="title"><a id="id504564"/>Little or no wide character support</h4></div></div></div><p> + Classes <code class="classname">wstring</code> and + <code class="classname">char_traits<wchar_t></code> are + not supported. +- </p></div><div class="section" title="No templatized iostreams"><div class="titlepage"><div><div><h4 class="title"><a id="id625150"/>No templatized iostreams</h4></div></div></div><p> ++ </p></div><div class="section" title="No templatized iostreams"><div class="titlepage"><div><div><h4 class="title"><a id="id504583"/>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="section" title="Thread safety issues"><div class="titlepage"><div><div><h4 class="title"><a id="id625169"/>Thread safety issues</h4></div></div></div><p> ++ </p></div><div class="section" title="Thread safety issues"><div class="titlepage"><div><div><h4 class="title"><a id="id504602"/>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 +@@ -331,7 +331,7 @@ particular <span class="quote">“<span class="quote">info iostream</span>”</s + against the gthr.h abstraction layer which is provided by gcc. A + minor problem that pops up every so often is different + interpretations of what "thread-safe" means for a +- library (not a general program). We currently use the <a class="link" href="http://www.sgi.com/tech/stl/thread_safety.html" target="">same ++ library (not a general program). We currently use the <a class="link" href="http://www.sgi.com/tech/stl/thread_safety.html">same + definition that SGI</a> uses for their STL subset. However, + the exception for read-only containers only applies to the STL + components. This definition is widely-used and something similar +@@ -343,11 +343,11 @@ particular <span class="quote">“<span class="quote">info iostream</span>”</s + "Thread Next" to move down the thread. This farm is in + latest-to-oldest order. + </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p> +- Our threading expert Loren gives a breakdown of <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2001-10/msg00024.html" target="">the ++ Our threading expert Loren gives a breakdown of <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2001-10/msg00024.html">the + six situations involving threads</a> for the 3.0 + release series. + </p></li><li class="listitem"><p> +- <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html" target=""> ++ <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html"> + This message</a> inspired a recent updating of issues with + threading and the SGI STL library. It also contains some + example POSIX-multithreaded STL code. +@@ -364,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="link" href="source_design_notes.html" title="Design Notes">design document</a>. +- </p><p>Portability notes and known implementation limitations are as follows.</p><div class="section" title="Pre-ISO headers moved to backwards or removed"><div class="titlepage"><div><div><h4 class="title"><a id="id625293"/>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="section" title="Pre-ISO headers moved to backwards or removed"><div class="titlepage"><div><div><h4 class="title"><a id="id504726"/>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. +@@ -373,7 +373,7 @@ libstdc++-v3. + <code class="code">std::</code> into the global namespace. + </p><p>For those of you new to ISO C++ (welcome, time travelers!), no, + that isn't a typo. Yes, the headers really have new names. +- Marshall Cline's C++ FAQ Lite has a good explanation in <a class="link" href="http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.4" target="">item ++ Marshall Cline's C++ FAQ Lite has a good explanation in <a class="link" href="http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.4">item + [27.4]</a>. + </p><p> Some include adjustment may be required. What follows is an + autoconf test that defines <code class="code">PRE_STDCXX_HEADERS</code> when they +@@ -436,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="section" title="Extension headers hash_map, hash_set moved to ext or backwards"><div class="titlepage"><div><div><h4 class="title"><a id="id625378"/>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="section" title="Extension headers hash_map, hash_set moved to ext or backwards"><div class="titlepage"><div><div><h4 class="title"><a id="id504811"/>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 +@@ -508,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="section" title="No ios::nocreate/ios::noreplace."><div class="titlepage"><div><div><h4 class="title"><a id="id625481"/>No <code class="code">ios::nocreate/ios::noreplace</code>. ++</pre></div><div class="section" title="No ios::nocreate/ios::noreplace."><div class="titlepage"><div><div><h4 class="title"><a id="id504914"/>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 +@@ -519,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="section" title="No stream::attach(int fd)"><div class="titlepage"><div><div><h4 class="title"><a id="id625529"/> ++</p></div><div class="section" title="No stream::attach(int fd)"><div class="titlepage"><div><div><h4 class="title"><a id="id504962"/> + 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 +@@ -535,14 +535,14 @@ No <code class="code">stream::attach(int fd)</code> + </p><p> + An extension is available that implements this. + <code class="filename">ext/stdio_filebuf.h</code> contains a derived class called +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html" target=""><code class="code">__gnu_cxx::stdio_filebuf</code></a>. ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code class="code">__gnu_cxx::stdio_filebuf</code></a>. + This class can be constructed from a C <code class="code">FILE*</code> or a file + descriptor, and provides the <code class="code">fd()</code> function. + </p><p> + For another example of this, refer to +- <a class="link" href="http://www.josuttis.com/cppcode/fdstream.html" target="">fdstream example</a> ++ <a class="link" href="http://www.josuttis.com/cppcode/fdstream.html">fdstream example</a> + by Nicolai Josuttis. +-</p></div><div class="section" title="Support for C++98 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id625597"/> ++</p></div><div class="section" title="Support for C++98 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id505030"/> + 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"> +@@ -610,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="section" title="Support for C++TR1 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id625624"/> ++</pre></div><div class="section" title="Support for C++TR1 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id505057"/> + Support for C++TR1 dialect. + </h4></div></div></div><p>Check for library coverage of the TR1 standard. + </p><pre class="programlisting"> +@@ -687,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="section" title="Support for C++0x dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id625668"/> ++</pre></div><div class="section" title="Support for C++0x dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id505101"/> + 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"> +@@ -899,19 +899,19 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ + AC_DEFINE(HAVE_UNORDERED_SET,,[Define if unordered_set is present. ]) + fi + ]) +-</pre></div><div class="section" title="Container::iterator_type is not necessarily Container::value_type*"><div class="titlepage"><div><div><h4 class="title"><a id="id625747"/> ++</pre></div><div class="section" title="Container::iterator_type is not necessarily Container::value_type*"><div class="titlepage"><div><div><h4 class="title"><a id="id505180"/> + 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" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id625777"/><p><span class="biblioid"> ++</p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id505210"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Migrating to GCC 4.1 +- </em>. </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span></p></div><div class="biblioentry"><a id="id625802"/><p><span class="biblioid"> ++ </em>. </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span></p></div><div class="biblioentry"><a id="id505235"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Building the Whole Debian Archive with GCC 4.1: A Summary +- </em>. </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span></p></div><div class="biblioentry"><a id="id625828"/><p><span class="biblioid"> ++ </em>. </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span></p></div><div class="biblioentry"><a id="id505261"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Migration guide for GCC-3.2 + </em>. </span></p></div></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="api.html">Prev</a> </td><td align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td align="right"> <a accesskey="n" href="appendix_free.html">Next</a></td></tr><tr><td align="left" valign="top">API Evolution and Deprecation History </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Appendix C. +diff --git a/libstdc++-v3/doc/html/manual/bitmap_allocator.html b/libstdc++-v3/doc/html/manual/bitmap_allocator.html +index 9d0f9e6..be584e4 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.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>bitmap_allocator</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , allocator "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_allocators.html" title="Chapter 20. Allocators"/><link rel="prev" href="ext_allocators.html" title="Chapter 20. Allocators"/><link rel="next" href="ext_containers.html" title="Chapter 21. Containers"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitmap_allocator</th></tr><tr><td align="left"><a accesskey="p" href="ext_allocators.html">Prev</a> </td><th width="60%" align="center">Chapter 20. Allocators</th><td align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr></table><hr/></div><div class="section" title="bitmap_allocator"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator.bitmap"/>bitmap_allocator</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>bitmap_allocator</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , allocator "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_allocators.html" title="Chapter 20. Allocators"/><link rel="prev" href="ext_allocators.html" title="Chapter 20. Allocators"/><link rel="next" href="ext_containers.html" title="Chapter 21. Containers"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitmap_allocator</th></tr><tr><td align="left"><a accesskey="p" href="ext_allocators.html">Prev</a> </td><th width="60%" align="center">Chapter 20. Allocators</th><td align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr></table><hr/></div><div class="section" title="bitmap_allocator"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator.bitmap"/>bitmap_allocator</h2></div></div></div><p> + </p><div class="section" title="Design"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.bitmap.design"/>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="id611395"/><p class="title"><b>Table 20.1. Bitmap Allocator Memory Map</b></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left">268</td><td style="text-align: left">0</td><td style="text-align: left">4294967295</td><td style="text-align: left">4294967295</td><td style="text-align: left">Data -> Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break"/><p> ++ </p><div class="table"><a id="id490827"/><p class="title"><strong>Table 20.1. Bitmap Allocator Memory Map</strong></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left">268</td><td style="text-align: left">0</td><td style="text-align: left">4294967295</td><td style="text-align: left">4294967295</td><td style="text-align: left">Data -> 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 +diff --git a/libstdc++-v3/doc/html/manual/bk01pt02.html b/libstdc++-v3/doc/html/manual/bk01pt02.html +index 52b7816..3a0751a 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt02.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt02.html +@@ -1,10 +1,10 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Part II. Standard Contents</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library Manual"/><link rel="prev" href="debug.html" title="Debugging Support"/><link rel="next" href="support.html" title="Chapter 4. Support"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Part II. Standard Contents</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library Manual"/><link rel="prev" href="debug.html" title="Debugging Support"/><link rel="next" href="support.html" title="Chapter 4. Support"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. + Standard Contents + </th></tr><tr><td align="left"><a accesskey="p" href="debug.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td align="right"> <a accesskey="n" href="support.html">Next</a></td></tr></table><hr/></div><div class="part" title="Part II. Standard Contents"><div class="titlepage"><div><div><h1 class="title"><a id="manual.std"/>Part II. + Standard Contents +- </h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="support.html">4. ++ </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="chapter"><a href="support.html">4. + Support + + </a></span></dt><dd><dl><dt><span class="section"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="section"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="section"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="section"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="section"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="diagnostics.html">5. +diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html b/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html +index df22048..6a67bef 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Concept Checking</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="diagnostics.html" title="Chapter 5. Diagnostics"/><link rel="prev" href="diagnostics.html" title="Chapter 5. Diagnostics"/><link rel="next" href="utilities.html" title="Chapter 6. Utilities"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concept Checking</th></tr><tr><td align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Chapter 5. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Concept Checking</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="diagnostics.html" title="Chapter 5. Diagnostics"/><link rel="prev" href="diagnostics.html" title="Chapter 5. Diagnostics"/><link rel="next" href="utilities.html" title="Chapter 6. Utilities"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concept Checking</th></tr><tr><td align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Chapter 5. + Diagnostics + + </th><td align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr></table><hr/></div><div class="section" title="Concept Checking"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics.concept_checking"/>Concept Checking</h2></div></div></div><p> +@@ -21,7 +21,7 @@ + The primary author of the checking code, Jeremy Siek, had already + started work on a replacement implementation. The new code was + formally reviewed and accepted into +- <a class="link" href="http://www.boost.org/libs/concept_check/concept_check.htm" target="">the ++ <a class="link" href="http://www.boost.org/libs/concept_check/concept_check.htm">the + Boost libraries</a>, and we are pleased to incorporate it into the + GNU C++ library. + </p><p> +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html +index 0c9dcdd..8fa7981 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Semantics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode"/><link rel="prev" href="debug_mode.html" title="Chapter 17. Debug Mode"/><link rel="next" href="bk01pt03ch17s03.html" title="Using"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td align="left"><a accesskey="p" href="debug_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch17s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="Semantics"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode.semantics"/>Semantics</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Semantics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode"/><link rel="prev" href="debug_mode.html" title="Chapter 17. Debug Mode"/><link rel="next" href="bk01pt03ch17s03.html" title="Using"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td align="left"><a accesskey="p" href="debug_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch17s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="Semantics"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode.semantics"/>Semantics</h2></div></div></div><p> + </p><p>A program that uses the C++ standard library correctly + will maintain the same semantics under debug mode as it had with + the normal (release) library. All functional and exception-handling +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html +index 1f6a5e0..7e017b6 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode"/><link rel="prev" href="bk01pt03ch17s02.html" title="Semantics"/><link rel="next" href="bk01pt03ch17s04.html" title="Design"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch17s02.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch17s04.html">Next</a></td></tr></table><hr/></div><div class="section" title="Using"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode.using"/>Using</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode"/><link rel="prev" href="bk01pt03ch17s02.html" title="Semantics"/><link rel="next" href="bk01pt03ch17s04.html" title="Design"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch17s02.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch17s04.html">Next</a></td></tr></table><hr/></div><div class="section" title="Using"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode.using"/>Using</h2></div></div></div><p> + </p><div class="section" title="Using the Debug Mode"><div class="titlepage"><div><div><h3 class="title"><a id="debug_mode.using.mode"/>Using the Debug Mode</h3></div></div></div><p>To use the libstdc++ debug mode, compile your application with the + compiler flag <code class="code">-D_GLIBCXX_DEBUG</code>. Note that this flag + changes the sizes and behavior of standard class templates such +@@ -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="id602987"/><p class="title"><b>Table 17.1. Debugging Containers</b></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Container</th><th style="text-align: left">Header</th><th style="text-align: left">Debug container</th><th style="text-align: left">Debug header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">std::bitset</code></td><td style="text-align: left"><code class="filename">bitset</code></td><td style="text-align: left"><code class="classname">__gnu_debug::bitset</code></td><td style="text-align: left"><code class="filename"><debug/bitset></code></td></tr><tr><td style="text-align: left"><code class="classname">std::deque</code></td><td style="text-align: left"><code class="filename">deque</code></td><td style="text-align: left"><code class="classname">__gnu_debug::deque</code></td><td style="text-align: left"><code class="filename"><debug/deque></code></td></tr><tr><td style="text-align: left"><code class="classname">std::list</code></td><td style="text-align: left"><code class="filename">list</code></td><td style="text-align: left"><code class="classname">__gnu_debug::list</code></td><td style="text-align: left"><code class="filename"><debug/list></code></td></tr><tr><td style="text-align: left"><code class="classname">std::map</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::map</code></td><td style="text-align: left"><code class="filename"><debug/map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::multimap</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::multimap</code></td><td style="text-align: left"><code class="filename"><debug/map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::multiset</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::multiset</code></td><td style="text-align: left"><code class="filename"><debug/set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::set</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::set</code></td><td style="text-align: left"><code class="filename"><debug/set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::string</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::string</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::wstring</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::wstring</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::basic_string</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::basic_string</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::vector</code></td><td style="text-align: left"><code class="filename">vector</code></td><td style="text-align: left"><code class="classname">__gnu_debug::vector</code></td><td style="text-align: left"><code class="filename"><debug/vector></code></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="id482419"/><p class="title"><strong>Table 17.1. Debugging Containers</strong></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Container</th><th style="text-align: left">Header</th><th style="text-align: left">Debug container</th><th style="text-align: left">Debug header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">std::bitset</code></td><td style="text-align: left"><code class="filename">bitset</code></td><td style="text-align: left"><code class="classname">__gnu_debug::bitset</code></td><td style="text-align: left"><code class="filename"><debug/bitset></code></td></tr><tr><td style="text-align: left"><code class="classname">std::deque</code></td><td style="text-align: left"><code class="filename">deque</code></td><td style="text-align: left"><code class="classname">__gnu_debug::deque</code></td><td style="text-align: left"><code class="filename"><debug/deque></code></td></tr><tr><td style="text-align: left"><code class="classname">std::list</code></td><td style="text-align: left"><code class="filename">list</code></td><td style="text-align: left"><code class="classname">__gnu_debug::list</code></td><td style="text-align: left"><code class="filename"><debug/list></code></td></tr><tr><td style="text-align: left"><code class="classname">std::map</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::map</code></td><td style="text-align: left"><code class="filename"><debug/map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::multimap</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::multimap</code></td><td style="text-align: left"><code class="filename"><debug/map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::multiset</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::multiset</code></td><td style="text-align: left"><code class="filename"><debug/set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::set</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::set</code></td><td style="text-align: left"><code class="filename"><debug/set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::string</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::string</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::wstring</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::wstring</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::basic_string</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::basic_string</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::vector</code></td><td style="text-align: left"><code class="filename">vector</code></td><td style="text-align: left"><code class="classname">__gnu_debug::vector</code></td><td style="text-align: left"><code class="filename"><debug/vector></code></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="id603361"/><p class="title"><b>Table 17.2. Debugging Containers C++0x</b></p><div class="table-contents"><table summary="Debugging Containers C++0x" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Container</th><th style="text-align: left">Header</th><th style="text-align: left">Debug container</th><th style="text-align: left">Debug header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">std::unordered_map</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_map</code></td><td style="text-align: left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_multimap</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td style="text-align: left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_set</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_set</code></td><td style="text-align: left"><code class="filename"><debug/unordered_set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_multiset</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td style="text-align: left"><code class="filename"><debug/unordered_set></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 align="left"><a accesskey="p" href="bk01pt03ch17s02.html">Prev</a> </td><td align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt03ch17s04.html">Next</a></td></tr><tr><td align="left" valign="top">Semantics </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Design</td></tr></table></div></body></html> ++</p><div class="table"><a id="id482793"/><p class="title"><strong>Table 17.2. Debugging Containers C++0x</strong></p><div class="table-contents"><table summary="Debugging Containers C++0x" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Container</th><th style="text-align: left">Header</th><th style="text-align: left">Debug container</th><th style="text-align: left">Debug header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">std::unordered_map</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_map</code></td><td style="text-align: left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_multimap</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td style="text-align: left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_set</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_set</code></td><td style="text-align: left"><code class="filename"><debug/unordered_set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_multiset</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td style="text-align: left"><code class="filename"><debug/unordered_set></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 align="left"><a accesskey="p" href="bk01pt03ch17s02.html">Prev</a> </td><td align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt03ch17s04.html">Next</a></td></tr><tr><td align="left" valign="top">Semantics </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Design</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html +index 12fa703..3e35af0 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode"/><link rel="prev" href="bk01pt03ch17s03.html" title="Using"/><link rel="next" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch17s03.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td align="right"> <a accesskey="n" href="parallel_mode.html">Next</a></td></tr></table><hr/></div><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode.design"/>Design</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode"/><link rel="prev" href="bk01pt03ch17s03.html" title="Using"/><link rel="next" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch17s03.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td align="right"> <a accesskey="n" href="parallel_mode.html">Next</a></td></tr></table><hr/></div><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode.design"/>Design</h2></div></div></div><p> + </p><div class="section" title="Goals"><div class="titlepage"><div><div><h3 class="title"><a id="debug_mode.design.goals"/>Goals</h3></div></div></div><p> + </p><p> The libstdc++ debug mode replaces unsafe (but efficient) standard + containers and iterators with semantically equivalent safe standard +@@ -194,7 +194,7 @@ template<typename _Tp, typename _Allocator = allocator<_Tp> + environments by minimizing dependencies.</p><p>Achieving link- and run-time coexistence is not a trivial + implementation task. To achieve this goal we required a small + extension to the GNU C++ compiler (since incorporated into the C++0x language specification, described in the GCC Manual for the C++ language as +- <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association" target="">namespace ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">namespace + association</a>), and a complex organization of debug- and + release-modes. The end result is that we have achieved per-use + recompilation but have had to give up some checking of the +@@ -353,7 +353,7 @@ test02() + declarations disallow specialization. This method fails + the <span class="emphasis"><em>correctness</em></span> criteria.</p></li><li class="listitem"><p><span class="emphasis"><em> Use implementation-specific properties of anonymous + namespaces. </em></span> +- See <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00004.html" target=""> this post ++ See <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00004.html"> this post + </a> + This method fails the <span class="emphasis"><em>correctness</em></span> criteria.</p></li><li class="listitem"><p><span class="emphasis"><em>Extension: allow reopening on namespaces</em></span>: This would + allow the debug mode to effectively alias the +@@ -376,7 +376,7 @@ test02() + functions taking no arguments in mixed-mode settings resulting in + equivalent link names, <code class="code"> vector::push_back() </code> being + one example. +- See <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00177.html" target="">link ++ See <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00177.html">link + name</a> </p></li></ul></div><p>Other options may exist for implementing the debug mode, many of + which have probably been considered and others that may still be + lurking. This list may be expanded over time to include other +@@ -392,13 +392,13 @@ test02() + </p><p> There are several existing implementations of debug modes for C++ + standard library implementations, although none of them directly + supports debugging for programs using libstdc++. The existing +- implementations include:</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p><a class="link" href="http://www.mathcs.sjsu.edu/faculty/horstman/safestl.html" target="">SafeSTL</a>: ++ implementations include:</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p><a class="link" href="http://www.mathcs.sjsu.edu/faculty/horstman/safestl.html">SafeSTL</a>: + SafeSTL was the original debugging version of the Standard Template + Library (STL), implemented by Cay S. Horstmann on top of the + Hewlett-Packard STL. Though it inspired much work in this area, it + has not been kept up-to-date for use with modern compilers or C++ +- standard library implementations.</p></li><li class="listitem"><p><a class="link" href="http://www.stlport.org/" target="">STLport</a>: STLport is a free +- implementation of the C++ standard library derived from the <a class="link" href="http://www.sgi.com/tech/stl/" target="">SGI implementation</a>, and ++ standard library implementations.</p></li><li class="listitem"><p><a class="link" href="http://www.stlport.org/">STLport</a>: STLport is a free ++ implementation of the C++ standard library derived from the <a class="link" href="http://www.sgi.com/tech/stl/">SGI implementation</a>, and + ported to many other platforms. It includes a debug mode that uses a + wrapper model (that in some ways inspired the libstdc++ debug mode + design), although at the time of this writing the debug mode is +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html +index 3398c8f..7a7419a 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Semantics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="prev" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="next" href="bk01pt03ch18s03.html" title="Using"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td align="left"><a accesskey="p" href="parallel_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch18s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="Semantics"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.semantics"/>Semantics</h2></div></div></div><p> The parallel mode STL algorithms are currently not exception-safe, ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Semantics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="prev" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="next" href="bk01pt03ch18s03.html" title="Using"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td align="left"><a accesskey="p" href="parallel_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch18s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="Semantics"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.semantics"/>Semantics</h2></div></div></div><p> The parallel mode STL algorithms are currently not exception-safe, + i.e. user-defined functors must not throw exceptions. + Also, the order of execution is not guaranteed for some functions, of course. + Therefore, user-defined functors should not have any concurrent side effects. +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html +index 7b0c49f..b3a3db9 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html +@@ -1,12 +1,12 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="prev" href="bk01pt03ch18s02.html" title="Semantics"/><link rel="next" href="bk01pt03ch18s04.html" title="Design"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch18s02.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch18s04.html">Next</a></td></tr></table><hr/></div><div class="section" title="Using"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.using"/>Using</h2></div></div></div><div class="section" title="Prerequisite Compiler Flags"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.using.prereq_flags"/>Prerequisite Compiler Flags</h3></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="prev" href="bk01pt03ch18s02.html" title="Semantics"/><link rel="next" href="bk01pt03ch18s04.html" title="Design"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch18s02.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch18s04.html">Next</a></td></tr></table><hr/></div><div class="section" title="Using"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.using"/>Using</h2></div></div></div><div class="section" title="Prerequisite Compiler Flags"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.using.prereq_flags"/>Prerequisite Compiler Flags</h3></div></div></div><p> + Any use of parallel functionality requires additional compiler + and runtime support, in particular support for OpenMP. Adding this support is + not difficult: just compile your application with the compiler + flag <code class="literal">-fopenmp</code>. This will link + in <code class="code">libgomp</code>, the GNU +- OpenMP <a class="link" href="http://gcc.gnu.org/onlinedocs/libgomp" target="">implementation</a>, ++ OpenMP <a class="link" href="http://gcc.gnu.org/onlinedocs/libgomp">implementation</a>, + whose presence is mandatory. + </p><p> + In addition, hardware that supports atomic operations and a compiler +@@ -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="id604948"/><p class="title"><b>Table 18.1. Parallel Algorithms</b></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Algorithm</th><th style="text-align: left">Header</th><th style="text-align: left">Parallel algorithm</th><th style="text-align: left">Parallel header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="function">std::accumulate</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="function">__gnu_parallel::accumulate</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr><tr><td style="text-align: left"><code class="function">std::adjacent_difference</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr><tr><td style="text-align: left"><code class="function">std::inner_product</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="function">__gnu_parallel::inner_product</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr><tr><td style="text-align: left"><code class="function">std::partial_sum</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="function">__gnu_parallel::partial_sum</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr><tr><td style="text-align: left"><code class="function">std::adjacent_find</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::adjacent_find</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::count</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::count</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::count_if</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::count_if</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::equal</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::equal</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::find</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::find</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::find_if</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::find_if</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::find_first_of</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::find_first_of</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::for_each</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::for_each</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::generate</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::generate</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::generate_n</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::generate_n</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::lexicographical_compare</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::mismatch</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::mismatch</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::search</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::search</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::search_n</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::search_n</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::transform</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::transform</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::replace</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::replace</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::replace_if</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::replace_if</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::max_element</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::max_element</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::merge</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::merge</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::min_element</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::min_element</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::nth_element</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::nth_element</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::partial_sort</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::partial_sort</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::partition</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::partition</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::random_shuffle</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::random_shuffle</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::set_union</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::set_union</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::set_intersection</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::set_intersection</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::set_symmetric_difference</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::set_difference</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::set_difference</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::sort</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::sort</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::stable_sort</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::stable_sort</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::unique_copy</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::unique_copy</code></td><td style="text-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 align="left"><a accesskey="p" href="bk01pt03ch18s02.html">Prev</a> </td><td align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt03ch18s04.html">Next</a></td></tr><tr><td align="left" valign="top">Semantics </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Design</td></tr></table></div></body></html> ++</p><div class="table"><a id="id484380"/><p class="title"><strong>Table 18.1. Parallel Algorithms</strong></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Algorithm</th><th style="text-align: left">Header</th><th style="text-align: left">Parallel algorithm</th><th style="text-align: left">Parallel header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="function">std::accumulate</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="function">__gnu_parallel::accumulate</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr><tr><td style="text-align: left"><code class="function">std::adjacent_difference</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr><tr><td style="text-align: left"><code class="function">std::inner_product</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="function">__gnu_parallel::inner_product</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr><tr><td style="text-align: left"><code class="function">std::partial_sum</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="function">__gnu_parallel::partial_sum</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr><tr><td style="text-align: left"><code class="function">std::adjacent_find</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::adjacent_find</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::count</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::count</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::count_if</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::count_if</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::equal</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::equal</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::find</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::find</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::find_if</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::find_if</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::find_first_of</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::find_first_of</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::for_each</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::for_each</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::generate</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::generate</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::generate_n</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::generate_n</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::lexicographical_compare</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::mismatch</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::mismatch</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::search</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::search</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::search_n</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::search_n</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::transform</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::transform</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::replace</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::replace</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::replace_if</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::replace_if</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::max_element</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::max_element</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::merge</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::merge</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::min_element</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::min_element</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::nth_element</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::nth_element</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::partial_sort</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::partial_sort</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::partition</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::partition</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::random_shuffle</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::random_shuffle</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::set_union</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::set_union</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::set_intersection</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::set_intersection</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::set_symmetric_difference</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::set_difference</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::set_difference</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::sort</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::sort</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::stable_sort</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::stable_sort</code></td><td style="text-align: left"><code class="filename">parallel/algorithm</code></td></tr><tr><td style="text-align: left"><code class="function">std::unique_copy</code></td><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="function">__gnu_parallel::unique_copy</code></td><td style="text-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 align="left"><a accesskey="p" href="bk01pt03ch18s02.html">Prev</a> </td><td align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt03ch18s04.html">Next</a></td></tr><tr><td align="left" valign="top">Semantics </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Design</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html +index 0ed32d3..91c951d 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="prev" href="bk01pt03ch18s03.html" title="Using"/><link rel="next" href="bk01pt03ch18s05.html" title="Testing"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch18s03.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch18s05.html">Next</a></td></tr></table><hr/></div><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.design"/>Design</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="prev" href="bk01pt03ch18s03.html" title="Using"/><link rel="next" href="bk01pt03ch18s05.html" title="Testing"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch18s03.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch18s05.html">Next</a></td></tr></table><hr/></div><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.design"/>Design</h2></div></div></div><p> + </p><div class="section" title="Interface Basics"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.design.intro"/>Interface Basics</h3></div></div></div><p> + All parallel algorithms are intended to have signatures that are + equivalent to the ISO C++ algorithms replaced. For instance, the +@@ -175,7 +175,7 @@ i. e. it is a singleton. It can be read and written by calling + <code class="code">__gnu_parallel::_Settings::set</code>, respectively. + Please note that the first call return a const object, so direct manipulation + is forbidden. +-See <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01005.html" target=""> ++See <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01005.html"> + <code class="filename">settings.h</code></a> + for complete details. + </p><p> +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html +index 52ed30c..f00a4a2 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Testing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="prev" href="bk01pt03ch18s04.html" title="Design"/><link rel="next" href="profile_mode.html" title="Chapter 19. Profile Mode"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch18s04.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td align="right"> <a accesskey="n" href="profile_mode.html">Next</a></td></tr></table><hr/></div><div class="section" title="Testing"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.test"/>Testing</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Testing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode"/><link rel="prev" href="bk01pt03ch18s04.html" title="Design"/><link rel="next" href="profile_mode.html" title="Chapter 19. Profile Mode"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch18s04.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td align="right"> <a accesskey="n" href="profile_mode.html">Next</a></td></tr></table><hr/></div><div class="section" title="Testing"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.test"/>Testing</h2></div></div></div><p> + Both the normal conformance and regression tests and the + supplemental performance tests work. + </p><p> +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html +index 25a409b..ce915dd 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html +@@ -1,7 +1,7 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="next" href="bk01pt03ch19s03.html" title="Extensions for Custom Containers"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.design"/>Design</h2></div></div></div><p> +-</p><div class="table"><a id="id607071"/><p class="title"><b>Table 19.1. Profile Code Location</b></p><div class="table-contents"><table summary="Profile Code Location" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Code Location</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/std/*</code></td><td style="text-align: left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/profile/*</code></td><td style="text-align: left">Profile extension public headers (map, vector, ...).</td></tr><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td style="text-align: left">Profile extension internals. Implementation files are ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="next" href="bk01pt03ch19s03.html" title="Extensions for Custom Containers"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.design"/>Design</h2></div></div></div><p> ++</p><div class="table"><a id="id486504"/><p class="title"><strong>Table 19.1. Profile Code Location</strong></p><div class="table-contents"><table summary="Profile Code Location" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Code Location</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/std/*</code></td><td style="text-align: left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/profile/*</code></td><td style="text-align: left">Profile extension public headers (map, vector, ...).</td></tr><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td style="text-align: left">Profile extension internals. Implementation files are + only included from <code class="code">impl/profiler.h</code>, which is the only + file included from the public headers.</td></tr></tbody></table></div></div><br class="table-break"/><p> + </p><div class="section" title="Wrapper Model"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.wrapper"/>Wrapper Model</h3></div></div></div><p> +@@ -61,7 +61,7 @@ + call stack of its constructor location. + </p><p> + For details, see +- <a class="link" href="http://dx.doi.org/10.1109/CGO.2009.36" target="">paper presented at ++ <a class="link" href="http://dx.doi.org/10.1109/CGO.2009.36">paper presented at + CGO 2009</a>. + </p></div><div class="section" title="Analysis and Diagnostics"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.analysis"/>Analysis and Diagnostics</h3></div></div></div><p> + Final analysis takes place offline, and it is based entirely on the +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html +index 64d44c3..37d1ed8 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Extensions for Custom Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s02.html" title="Design"/><link rel="next" href="bk01pt03ch19s04.html" title="Empirical Cost Model"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Extensions for Custom Containers</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s02.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s04.html">Next</a></td></tr></table><hr/></div><div class="section" title="Extensions for Custom Containers"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.api"/>Extensions for Custom Containers</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Extensions for Custom Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s02.html" title="Design"/><link rel="next" href="bk01pt03ch19s04.html" title="Empirical Cost Model"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Extensions for Custom Containers</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s02.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s04.html">Next</a></td></tr></table><hr/></div><div class="section" title="Extensions for Custom Containers"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.api"/>Extensions for Custom Containers</h2></div></div></div><p> + Many large projects use their own data structures instead of the ones in the + standard library. If these data structures are similar in functionality + to the standard library, they can be instrumented with the same hooks +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html +index 9142e73..8fc162b 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Empirical Cost Model</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s03.html" title="Extensions for Custom Containers"/><link rel="next" href="bk01pt03ch19s05.html" title="Implementation Issues"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Empirical Cost Model</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s03.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s05.html">Next</a></td></tr></table><hr/></div><div class="section" title="Empirical Cost Model"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.cost_model"/>Empirical Cost Model</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Empirical Cost Model</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s03.html" title="Extensions for Custom Containers"/><link rel="next" href="bk01pt03ch19s05.html" title="Implementation Issues"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Empirical Cost Model</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s03.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s05.html">Next</a></td></tr></table><hr/></div><div class="section" title="Empirical Cost Model"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.cost_model"/>Empirical Cost Model</h2></div></div></div><p> + Currently, the cost model uses formulas with predefined relative weights + for alternative containers or container implementations. For instance, + iterating through a vector is X times faster than iterating through a list. +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html +index 74bf0a7..2d072f0 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Implementation Issues</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s04.html" title="Empirical Cost Model"/><link rel="next" href="bk01pt03ch19s06.html" title="Developer Information"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation Issues</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s04.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s06.html">Next</a></td></tr></table><hr/></div><div class="section" title="Implementation Issues"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.implementation"/>Implementation Issues</h2></div></div></div><div class="section" title="Stack Traces"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.implementation.stack"/>Stack Traces</h3></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Implementation Issues</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s04.html" title="Empirical Cost Model"/><link rel="next" href="bk01pt03ch19s06.html" title="Developer Information"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation Issues</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s04.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s06.html">Next</a></td></tr></table><hr/></div><div class="section" title="Implementation Issues"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.implementation"/>Implementation Issues</h2></div></div></div><div class="section" title="Stack Traces"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.implementation.stack"/>Stack Traces</h3></div></div></div><p> + Accurate stack traces are needed during profiling since we group events by + call context and dynamic instance. Without accurate traces, diagnostics + may be hard to interpret. For instance, when giving advice to the user +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html +index 13f276d..ddcc7f5 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Developer Information</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s05.html" title="Implementation Issues"/><link rel="next" href="bk01pt03ch19s07.html" title="Diagnostics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Developer Information</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s05.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s07.html">Next</a></td></tr></table><hr/></div><div class="section" title="Developer Information"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.developer"/>Developer Information</h2></div></div></div><div class="section" title="Big Picture"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.developer.bigpic"/>Big Picture</h3></div></div></div><p>The profile mode headers are included with ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Developer Information</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s05.html" title="Implementation Issues"/><link rel="next" href="bk01pt03ch19s07.html" title="Diagnostics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Developer Information</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s05.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s07.html">Next</a></td></tr></table><hr/></div><div class="section" title="Developer Information"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.developer"/>Developer Information</h2></div></div></div><div class="section" title="Big Picture"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.developer.bigpic"/>Big Picture</h3></div></div></div><p>The profile mode headers are included with + <code class="code">-D_GLIBCXX_PROFILE</code> through preprocessor directives in + <code class="code">include/std/*</code>. + </p><p>Instrumented implementations are provided in +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html +index b063391..8c134e7 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Diagnostics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s06.html" title="Developer Information"/><link rel="next" href="ext_allocators.html" title="Chapter 20. Allocators"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Diagnostics</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s06.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="ext_allocators.html">Next</a></td></tr></table><hr/></div><div class="section" title="Diagnostics"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.diagnostics"/>Diagnostics</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Diagnostics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode"/><link rel="prev" href="bk01pt03ch19s06.html" title="Developer Information"/><link rel="next" href="ext_allocators.html" title="Chapter 20. Allocators"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Diagnostics</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s06.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="ext_allocators.html">Next</a></td></tr></table><hr/></div><div class="section" title="Diagnostics"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.diagnostics"/>Diagnostics</h2></div></div></div><p> + The table below presents all the diagnostics we intend to implement. + Each diagnostic has a corresponding compile time switch + <code class="code">-D_GLIBCXX_PROFILE_<diagnostic></code>. +@@ -18,7 +18,7 @@ + A high accuracy means that the diagnostic is unlikely to be wrong. + These grades are not perfect. They are just meant to guide users with + specific needs or time budgets. +- </p><div class="table"><a id="id607953"/><p class="title"><b>Table 19.2. Profile Diagnostics</b></p><div class="table-contents"><table summary="Profile Diagnostics" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Group</th><th style="text-align: left">Flag</th><th style="text-align: left">Benefit</th><th style="text-align: left">Cost</th><th style="text-align: left">Freq.</th><th style="text-align: left">Implemented</th><td class="auto-generated"> </td></tr></thead><tbody><tr><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers" title="Containers"> ++ </p><div class="table"><a id="id487386"/><p class="title"><strong>Table 19.2. Profile Diagnostics</strong></p><div class="table-contents"><table summary="Profile Diagnostics" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/><col style="text-align: left" class="c6"/><col style="text-align: left" class="c7"/></colgroup><thead><tr><th style="text-align: left">Group</th><th style="text-align: left">Flag</th><th style="text-align: left">Benefit</th><th style="text-align: left">Cost</th><th style="text-align: left">Freq.</th><th style="text-align: left">Implemented</th><td class="auto-generated"> </td></tr></thead><tbody><tr><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers" title="Containers"> + CONTAINERS</a></td><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_small" title="Hashtable Too Small"> + HASHTABLE_TOO_SMALL</a></td><td style="text-align: left">10</td><td style="text-align: left">1</td><td style="text-align: left"> </td><td style="text-align: left">10</td><td style="text-align: left">yes</td></tr><tr><td style="text-align: left"> </td><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_large" title="Hashtable Too Large"> + HASHTABLE_TOO_LARGE</a></td><td style="text-align: left">5</td><td style="text-align: left">1</td><td style="text-align: left"> </td><td style="text-align: left">10</td><td style="text-align: left">yes</td></tr><tr><td style="text-align: left"> </td><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.inefficient_hash" title="Inefficient Hash"> +@@ -375,9 +375,9 @@ foo.cc:1: advice: Change "list" to "forward_list". + Quick Sort for a particular call context. + </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> + See papers: +- <a class="link" href="http://portal.acm.org/citation.cfm?doid=1065944.1065981" target=""> ++ <a class="link" href="http://portal.acm.org/citation.cfm?doid=1065944.1065981"> + A framework for adaptive algorithm selection in STAPL</a> and +- <a class="link" href="http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=4228227" target=""> ++ <a class="link" href="http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=4228227"> + Optimizing Sorting with Machine Learning Algorithms</a>. + </p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span>60%. + </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> Change sort algorithm +@@ -442,7 +442,7 @@ foo.cc:7: advice: Insert prefetch instruction. + </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span>Allocation can be tuned + to a specific traversal pattern, to result in better data locality. + See paper: +- <a class="link" href="http://www.springerlink.com/content/8085744l00x72662/" target=""> ++ <a class="link" href="http://www.springerlink.com/content/8085744l00x72662/"> + Custom Memory Allocation for Free</a>. + </p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span>30%. + </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> +@@ -501,7 +501,7 @@ the allocation sequence or switching to a structure conscious allocator. + Keep a shadow for each container. Record iterator dereferences and + container member accesses. Issue advice for elements referenced by + multiple threads. +- See paper: <a class="link" href="http://portal.acm.org/citation.cfm?id=207110.207148" target=""> ++ See paper: <a class="link" href="http://portal.acm.org/citation.cfm?id=207110.207148"> + The LRPD test: speculative run-time parallelization of loops with + privatization and reduction parallelization</a>. + </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html +index 843e233..eba8cfb 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>HP/SGI</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_containers.html" title="Chapter 21. Containers"/><link rel="prev" href="ext_containers.html" title="Chapter 21. Containers"/><link rel="next" href="bk01pt03ch21s03.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 align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><th width="60%" align="center">Chapter 21. Containers</th><td align="right"> <a accesskey="n" href="bk01pt03ch21s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="HP/SGI"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers.sgi"/>HP/SGI</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>HP/SGI</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_containers.html" title="Chapter 21. Containers"/><link rel="prev" href="ext_containers.html" title="Chapter 21. Containers"/><link rel="next" href="bk01pt03ch21s03.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 align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><th width="60%" align="center">Chapter 21. Containers</th><td align="right"> <a accesskey="n" href="bk01pt03ch21s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="HP/SGI"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers.sgi"/>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: +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html +index 03ea182..2f75d60 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Deprecated HP/SGI</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_containers.html" title="Chapter 21. Containers"/><link rel="prev" href="bk01pt03ch21s02.html" title="HP/SGI"/><link rel="next" href="ext_utilities.html" title="Chapter 22. 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 align="left"><a accesskey="p" href="bk01pt03ch21s02.html">Prev</a> </td><th width="60%" align="center">Chapter 21. Containers</th><td align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr></table><hr/></div><div class="section" title="Deprecated HP/SGI"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers.deprecated_sgi"/>Deprecated HP/SGI</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Deprecated HP/SGI</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_containers.html" title="Chapter 21. Containers"/><link rel="prev" href="bk01pt03ch21s02.html" title="HP/SGI"/><link rel="next" href="ext_utilities.html" title="Chapter 22. 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 align="left"><a accesskey="p" href="bk01pt03ch21s02.html">Prev</a> </td><th width="60%" align="center">Chapter 21. Containers</th><td align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr></table><hr/></div><div class="section" title="Deprecated HP/SGI"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers.deprecated_sgi"/>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, +@@ -25,12 +25,12 @@ + sets. + </p><p>Each of the associative containers map, multimap, set, and multiset + have a counterpart which uses a +- <a class="link" href="http://www.sgi.com/tech/stl/HashFunction.html" target="">hashing ++ <a class="link" href="http://www.sgi.com/tech/stl/HashFunction.html">hashing + function</a> to do the arranging, instead of a strict weak ordering + function. The classes take as one of their template parameters a + function object that will return the hash value; by default, an + instantiation of +- <a class="link" href="http://www.sgi.com/tech/stl/hash.html" target="">hash</a>. ++ <a class="link" href="http://www.sgi.com/tech/stl/hash.html">hash</a>. + You should specialize this functor for your class, or define your own, + before trying to use one of the hashing classes. + </p><p>The hashing classes support all the usual associative container +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html +index b4a73d8..4350e20 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Implementation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_concurrency.html" title="Chapter 28. Concurrency"/><link rel="prev" href="ext_concurrency.html" title="Chapter 28. Concurrency"/><link rel="next" href="bk01pt03ch28s03.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 align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 28. Concurrency</th><td align="right"> <a accesskey="n" href="bk01pt03ch28s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency.impl"/>Implementation</h2></div></div></div><div class="section" title="Using Builtin Atomic Functions"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.atomic_fallbacks"/>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><title>Implementation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_concurrency.html" title="Chapter 28. Concurrency"/><link rel="prev" href="ext_concurrency.html" title="Chapter 28. Concurrency"/><link rel="next" href="bk01pt03ch28s03.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 align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 28. Concurrency</th><td align="right"> <a accesskey="n" href="bk01pt03ch28s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency.impl"/>Implementation</h2></div></div></div><div class="section" title="Using Builtin Atomic Functions"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.atomic_fallbacks"/>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, +@@ -23,7 +23,7 @@ non-ancient x86 hardware, <code class="code">-march=native</code> usually does t + trick.</p><p> For hosts without compiler intrinsics, but with capable + hardware, hand-crafted assembly is selected. This is the case for the following hosts: + </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>cris</p></li><li class="listitem"><p>hppa</p></li><li class="listitem"><p>i386</p></li><li class="listitem"><p>i486</p></li><li class="listitem"><p>m48k</p></li><li class="listitem"><p>mips</p></li><li class="listitem"><p>sparc</p></li></ul></div><p>And for the rest, a simulated atomic lock via pthreads. +-</p><p> Detailed information about compiler intrinsics for atomic operations can be found in the GCC <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html" target=""> documentation</a>. ++</p><p> Detailed information about compiler intrinsics for atomic operations can be found in the GCC <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html"> documentation</a>. + </p><p> More details on the library fallbacks from the porting <a class="link" href="internals.html#internals.thread_safety" title="Thread Safety">section</a>. + </p></div><div class="section" title="Thread Abstraction"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.thread"/>Thread Abstraction</h3></div></div></div><p>A thin layer above IEEE 1003.1 (i.e. pthreads) is used to abstract + the thread interface for GCC. This layer is called "gthread," and is +@@ -33,7 +33,7 @@ a POSIX-like interface. + the current host. In libstdc++ implementation files, + <bits/gthr.h> is used to select the proper gthreads file. + </p><p>Within libstdc++ sources, all calls to underlying thread functionality +-use this layer. More detail as to the specific interface can be found in the source <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00883_source.html" target="">documentation</a>. ++use this layer. More detail as to the specific interface can be found in the source <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00883_source.html">documentation</a>. + </p><p>By design, the gthread layer is interoperable with the types, + functions, and usage found in the usual <pthread.h> file, + including <code class="code">pthread_t</code>, <code class="code">pthread_once_t</code>, <code class="code">pthread_create</code>, +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html +index 9349d14..b70d5a6 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Use</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_concurrency.html" title="Chapter 28. Concurrency"/><link rel="prev" href="bk01pt03ch28s02.html" title="Implementation"/><link rel="next" href="bk01pt04.html" title="Part IV. Appendices"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Use</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch28s02.html">Prev</a> </td><th width="60%" align="center">Chapter 28. Concurrency</th><td align="right"> <a accesskey="n" href="bk01pt04.html">Next</a></td></tr></table><hr/></div><div class="section" title="Use"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency.use"/>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><title>Use</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="ext_concurrency.html" title="Chapter 28. Concurrency"/><link rel="prev" href="bk01pt03ch28s02.html" title="Implementation"/><link rel="next" href="bk01pt04.html" title="Part IV. Appendices"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Use</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch28s02.html">Prev</a> </td><th width="60%" align="center">Chapter 28. Concurrency</th><td align="right"> <a accesskey="n" href="bk01pt04.html">Next</a></td></tr></table><hr/></div><div class="section" title="Use"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency.use"/>Use</h2></div></div></div><p>Typical usage of the last two constructs is demonstrated as follows: + </p><pre class="programlisting"> + #include <ext/concurrence.h> + +diff --git a/libstdc++-v3/doc/html/manual/bk01pt03pr01.html b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html +index 38f9d2a..65348b7 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt03pr01.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title/><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="extensions.html" title="Part III. Extensions"/><link rel="next" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title/><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="extensions.html" title="Part III. Extensions"/><link rel="next" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr/></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="id602454"/></h1></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr/></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="id481886"/></h1></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. +diff --git a/libstdc++-v3/doc/html/manual/bk01pt04.html b/libstdc++-v3/doc/html/manual/bk01pt04.html +index 649db70..acdf72a 100644 +--- a/libstdc++-v3/doc/html/manual/bk01pt04.html ++++ b/libstdc++-v3/doc/html/manual/bk01pt04.html +@@ -1,10 +1,10 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Part IV. Appendices</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library Manual"/><link rel="prev" href="bk01pt03ch28s03.html" title="Use"/><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">Part IV. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Part IV. Appendices</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library Manual"/><link rel="prev" href="bk01pt03ch28s03.html" title="Use"/><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">Part IV. + Appendices + </th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch28s03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr></table><hr/></div><div class="part" title="Part IV. Appendices"><div class="titlepage"><div><div><h1 class="title"><a id="appendix"/>Part IV. + Appendices +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="appendix"><a href="appendix_contributing.html">A. ++</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="appendix"><a href="appendix_contributing.html">A. + Contributing + + </a></span></dt><dd><dl><dt><span class="section"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="section"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="section"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="section"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="section"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="section"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="appendix_porting.html">B. +diff --git a/libstdc++-v3/doc/html/manual/bugs.html b/libstdc++-v3/doc/html/manual/bugs.html +index 423bcb6..eb6efdc 100644 +--- a/libstdc++-v3/doc/html/manual/bugs.html ++++ b/libstdc++-v3/doc/html/manual/bugs.html +@@ -1,8 +1,8 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Bugs</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="license.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td align="right"> <a accesskey="n" href="setup.html">Next</a></td></tr></table><hr/></div><div class="section" title="Bugs"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status.bugs"/>Bugs</h2></div></div></div><div class="section" title="Implementation Bugs"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.bugs.impl"/>Implementation Bugs</h3></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Bugs</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="license.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td align="right"> <a accesskey="n" href="setup.html">Next</a></td></tr></table><hr/></div><div class="section" title="Bugs"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status.bugs"/>Bugs</h2></div></div></div><div class="section" title="Implementation Bugs"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.bugs.impl"/>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 <a class="link" href="http://gcc.gnu.org/bugs/" target="">GCC bug tracking system</a>, ++ fixed bugs are all available as part of the <a class="link" href="http://gcc.gnu.org/bugs/">GCC bug tracking system</a>, + with the category set to <code class="literal">libstdc++</code>. + </p></div><div class="section" title="Standard Bugs"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.bugs.iso"/>Standard Bugs</h3></div></div></div><p> + Everybody's got issues. Even the C++ Standard Library. +@@ -15,9 +15,9 @@ + Here are the issues which have resulted in code changes to the library. + The links are to the specific defect reports from a <span class="emphasis"><em>partial + copy</em></span> of the Issues List. You can read the full version online +- at the <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/" target="">ISO C++ ++ at the <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++ + Committee homepage</a>, linked to on the +- <a class="link" href="http://gcc.gnu.org/readings.html" target="">GCC "Readings" ++ <a class="link" href="http://gcc.gnu.org/readings.html">GCC "Readings" + page</a>. If + you spend a lot of time reading the issues, we recommend downloading + the ZIP file and reading them locally. +@@ -34,318 +34,318 @@ + and src directories for appearances of + <code class="constant">_GLIBCXX_RESOLVE_LIB_DEFECTS</code> for examples + of style. Note that we usually do not make changes to the +- code until an issue has reached <a class="link" href="../ext/lwg-active.html#DR" target="">DR</a> status. +- </p><div class="variablelist"><dl><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#5" target="">5</a>: ++ code until an issue has reached <a class="link" href="../ext/lwg-active.html#DR">DR</a> status. ++ </p><div class="variablelist"><dl><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#5">5</a>: + <span class="emphasis"><em>string::compare specification questionable</em></span> + </span></dt><dd><p>This should be two overloaded functions rather than a single function. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#17" target="">17</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#17">17</a>: + <span class="emphasis"><em>Bad bool parsing</em></span> + </span></dt><dd><p>Apparently extracting Boolean values was messed up... +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#19" target="">19</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#19">19</a>: + <span class="emphasis"><em>"Noconv" definition too vague</em></span> + </span></dt><dd><p>If <code class="code">codecvt::do_in</code> returns <code class="code">noconv</code> there are + no changes to the values in <code class="code">[to, to_limit)</code>. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#22" target="">22</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#22">22</a>: + <span class="emphasis"><em>Member open vs flags</em></span> + </span></dt><dd><p>Re-opening a file stream does <span class="emphasis"><em>not</em></span> clear the state flags. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#23" target="">23</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#23">23</a>: + <span class="emphasis"><em>Num_get overflow result</em></span> + </span></dt><dd><p>Implement the proposed resolution. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#25" target="">25</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#25">25</a>: + <span class="emphasis"><em>String operator<< uses width() value wrong</em></span> + </span></dt><dd><p>Padding issues. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#48" target="">48</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#48">48</a>: + <span class="emphasis"><em>Use of non-existent exception constructor</em></span> + </span></dt><dd><p>An instance of <code class="code">ios_base::failure</code> is constructed instead. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#49" target="">49</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#49">49</a>: + <span class="emphasis"><em>Underspecification of ios_base::sync_with_stdio</em></span> + </span></dt><dd><p>The return type is the <span class="emphasis"><em>previous</em></span> state of synchronization. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#50" target="">50</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#50">50</a>: + <span class="emphasis"><em>Copy constructor and assignment operator of ios_base</em></span> + </span></dt><dd><p>These members functions are declared <code class="code">private</code> and are + thus inaccessible. Specifying the correct semantics of + "copying stream state" was deemed too complicated. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#60" target="">60</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#60">60</a>: + <span class="emphasis"><em>What is a formatted input function?</em></span> + </span></dt><dd><p>This DR made many widespread changes to <code class="code">basic_istream</code> + and <code class="code">basic_ostream</code> all of which have been implemented. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#63" target="">63</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#63">63</a>: + <span class="emphasis"><em>Exception-handling policy for unformatted output</em></span> + </span></dt><dd><p>Make the policy consistent with that of formatted input, unformatted + input, and formatted output. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#68" target="">68</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#68">68</a>: + <span class="emphasis"><em>Extractors for char* should store null at end</em></span> + </span></dt><dd><p>And they do now. An editing glitch in the last item in the list of + [27.6.1.2.3]/7. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#74" target="">74</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#74">74</a>: + <span class="emphasis"><em>Garbled text for codecvt::do_max_length</em></span> + </span></dt><dd><p>The text of the standard was gibberish. Typos gone rampant. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#75" target="">75</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#75">75</a>: + <span class="emphasis"><em>Contradiction in codecvt::length's argument types</em></span> + </span></dt><dd><p>Change the first parameter to <code class="code">stateT&</code> and implement + the new effects paragraph. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#83" target="">83</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#83">83</a>: + <span class="emphasis"><em>string::npos vs. string::max_size()</em></span> + </span></dt><dd><p>Safety checks on the size of the string should test against + <code class="code">max_size()</code> rather than <code class="code">npos</code>. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#90" target="">90</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#90">90</a>: + <span class="emphasis"><em>Incorrect description of operator>> for strings</em></span> + </span></dt><dd><p>The effect contain <code class="code">isspace(c,getloc())</code> which must be + replaced by <code class="code">isspace(c,is.getloc())</code>. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#91" target="">91</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#91">91</a>: + <span class="emphasis"><em>Description of operator>> and getline() for string<> + might cause endless loop</em></span> + </span></dt><dd><p>They behave as a formatted input function and as an unformatted + input function, respectively (except that <code class="code">getline</code> is + not required to set <code class="code">gcount</code>). +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#103" target="">103</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#103">103</a>: + <span class="emphasis"><em>set::iterator is required to be modifiable, but this allows + modification of keys.</em></span> + </span></dt><dd><p>For associative containers where the value type is the same as + the key type, both <code class="code">iterator</code> and <code class="code">const_iterator + </code> are constant iterators. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#109" target="">109</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#109">109</a>: + <span class="emphasis"><em>Missing binders for non-const sequence elements</em></span> + </span></dt><dd><p>The <code class="code">binder1st</code> and <code class="code">binder2nd</code> didn't have an + <code class="code">operator()</code> taking a non-const parameter. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#110" target="">110</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#110">110</a>: + <span class="emphasis"><em>istreambuf_iterator::equal not const</em></span> + </span></dt><dd><p>This was not a const member function. Note that the DR says to + replace the function with a const one; we have instead provided an + overloaded version with identical contents. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#117" target="">117</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#117">117</a>: + <span class="emphasis"><em>basic_ostream uses nonexistent num_put member functions</em></span> + </span></dt><dd><p><code class="code">num_put::put()</code> was overloaded on the wrong types. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#118" target="">118</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#118">118</a>: + <span class="emphasis"><em>basic_istream uses nonexistent num_get member functions</em></span> + </span></dt><dd><p>Same as 117, but for <code class="code">num_get::get()</code>. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#129" target="">129</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#129">129</a>: + <span class="emphasis"><em>Need error indication from seekp() and seekg()</em></span> + </span></dt><dd><p>These functions set <code class="code">failbit</code> on error now. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#130" target="">130</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#130">130</a>: + <span class="emphasis"><em>Return type of container::erase(iterator) differs for associative containers</em></span> + </span></dt><dd><p>Make member <code class="code">erase</code> return iterator for <code class="code">set</code>, <code class="code">multiset</code>, <code class="code">map</code>, <code class="code">multimap</code>. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#136" target="">136</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#136">136</a>: + <span class="emphasis"><em>seekp, seekg setting wrong streams?</em></span> + </span></dt><dd><p><code class="code">seekp</code> should only set the output stream, and + <code class="code">seekg</code> should only set the input stream. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#167" target="">167</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#167">167</a>: + <span class="emphasis"><em>Improper use of traits_type::length()</em></span> + </span></dt><dd><p><code class="code">op<<</code> with a <code class="code">const char*</code> was + calculating an incorrect number of characters to write. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#169" target="">169</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#169">169</a>: + <span class="emphasis"><em>Bad efficiency of overflow() mandated</em></span> + </span></dt><dd><p>Grow efficiently the internal array object. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#171" target="">171</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#171">171</a>: + <span class="emphasis"><em>Strange seekpos() semantics due to joint position</em></span> + </span></dt><dd><p>Quite complex to summarize... +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#181" target="">181</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#181">181</a>: + <span class="emphasis"><em>make_pair() unintended behavior</em></span> + </span></dt><dd><p>This function used to take its arguments as reference-to-const, now + it copies them (pass by value). +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#195" target="">195</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#195">195</a>: + <span class="emphasis"><em>Should basic_istream::sentry's constructor ever set eofbit?</em></span> + </span></dt><dd><p>Yes, it can, specifically if EOF is reached while skipping whitespace. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#211" target="">211</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#211">211</a>: + <span class="emphasis"><em>operator>>(istream&, string&) doesn't set failbit</em></span> + </span></dt><dd><p>If nothing is extracted into the string, <code class="code">op>></code> now + sets <code class="code">failbit</code> (which can cause an exception, etc., etc.). +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#214" target="">214</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#214">214</a>: + <span class="emphasis"><em>set::find() missing const overload</em></span> + </span></dt><dd><p>Both <code class="code">set</code> and <code class="code">multiset</code> were missing + overloaded find, lower_bound, upper_bound, and equal_range functions + for const instances. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#231" target="">231</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#231">231</a>: + <span class="emphasis"><em>Precision in iostream?</em></span> + </span></dt><dd><p>For conversion from a floating-point type, <code class="code">str.precision()</code> + is specified in the conversion specification. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#233" target="">233</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#233">233</a>: + <span class="emphasis"><em>Insertion hints in associative containers</em></span> + </span></dt><dd><p>Implement N1780, first check before then check after, insert as close + to hint as possible. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#235" target="">235</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#235">235</a>: + <span class="emphasis"><em>No specification of default ctor for reverse_iterator</em></span> + </span></dt><dd><p>The declaration of <code class="code">reverse_iterator</code> lists a default constructor. + However, no specification is given what this constructor should do. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#241" target="">241</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#241">241</a>: + <span class="emphasis"><em>Does unique_copy() require CopyConstructible and Assignable?</em></span> + </span></dt><dd><p>Add a helper for forward_iterator/output_iterator, fix the existing + one for input_iterator/output_iterator to not rely on Assignability. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#243" target="">243</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#243">243</a>: + <span class="emphasis"><em>get and getline when sentry reports failure</em></span> + </span></dt><dd><p>Store a null character only if the character array has a non-zero size. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#251" target="">251</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#251">251</a>: + <span class="emphasis"><em>basic_stringbuf missing allocator_type</em></span> + </span></dt><dd><p>This nested typedef was originally not specified. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#253" target="">253</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#253">253</a>: + <span class="emphasis"><em>valarray helper functions are almost entirely useless</em></span> + </span></dt><dd><p>Make the copy constructor and copy-assignment operator declarations + public in gslice_array, indirect_array, mask_array, slice_array; provide + definitions. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#265" target="">265</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#265">265</a>: + <span class="emphasis"><em>std::pair::pair() effects overly restrictive</em></span> + </span></dt><dd><p>The default ctor would build its members from copies of temporaries; + now it simply uses their respective default ctors. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#266" target="">266</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#266">266</a>: + <span class="emphasis"><em>bad_exception::~bad_exception() missing Effects clause</em></span> + </span></dt><dd><p>The <code class="code">bad_</code>* classes no longer have destructors (they + are trivial), since no description of them was ever given. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#271" target="">271</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#271">271</a>: + <span class="emphasis"><em>basic_iostream missing typedefs</em></span> + </span></dt><dd><p>The typedefs it inherits from its base classes can't be used, since + (for example) <code class="code">basic_iostream<T>::traits_type</code> is ambiguous. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#275" target="">275</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#275">275</a>: + <span class="emphasis"><em>Wrong type in num_get::get() overloads</em></span> + </span></dt><dd><p>Similar to 118. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#280" target="">280</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#280">280</a>: + <span class="emphasis"><em>Comparison of reverse_iterator to const reverse_iterator</em></span> + </span></dt><dd><p>Add global functions with two template parameters. + (NB: not added for now a templated assignment operator) +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#292" target="">292</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#292">292</a>: + <span class="emphasis"><em>Effects of a.copyfmt (a)</em></span> + </span></dt><dd><p>If <code class="code">(this == &rhs)</code> do nothing. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#300" target="">300</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#300">300</a>: + <span class="emphasis"><em>List::merge() specification incomplete</em></span> + </span></dt><dd><p>If <code class="code">(this == &x)</code> do nothing. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#303" target="">303</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#303">303</a>: + <span class="emphasis"><em>Bitset input operator underspecified</em></span> + </span></dt><dd><p>Basically, compare the input character to + <code class="code">is.widen(0)</code> and <code class="code">is.widen(1)</code>. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#305" target="">305</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#305">305</a>: + <span class="emphasis"><em>Default behavior of codecvt<wchar_t, char, + mbstate_t>::length()</em></span> + </span></dt><dd><p>Do not specify what <code class="code">codecvt<wchar_t, char, + mbstate_t>::do_length</code> must return. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#328" target="">328</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#328">328</a>: + <span class="emphasis"><em>Bad sprintf format modifier in + money_put<>::do_put()</em></span> + </span></dt><dd><p>Change the format string to "%.0Lf". +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#365" target="">365</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#365">365</a>: + <span class="emphasis"><em>Lack of const-qualification in clause 27</em></span> + </span></dt><dd><p>Add const overloads of <code class="code">is_open</code>. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#387" target="">387</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#387">387</a>: + <span class="emphasis"><em>std::complex over-encapsulated</em></span> + </span></dt><dd><p>Add the <code class="code">real(T)</code> and <code class="code">imag(T)</code> + members; in C++0x mode, also adjust the existing + <code class="code">real()</code> and <code class="code">imag()</code> members and + free functions. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#389" target="">389</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#389">389</a>: + <span class="emphasis"><em>Const overload of valarray::operator[] returns + by value</em></span> + </span></dt><dd><p>Change it to return a <code class="code">const T&</code>. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#396" target="">396</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#396">396</a>: + <span class="emphasis"><em>what are characters zero and one</em></span> + </span></dt><dd><p>Implement the proposed resolution. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#402" target="">402</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#402">402</a>: + <span class="emphasis"><em>Wrong new expression in [some_]allocator::construct</em></span> + </span></dt><dd><p>Replace "new" with "::new". +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-closed.html#408" target="">408</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-closed.html#408">408</a>: + <span class="emphasis"><em> + Is vector<reverse_iterator<char*> > forbidden? + </em></span> + </span></dt><dd><p>Tweak the debug-mode checks in _Safe_iterator. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#409" target="">409</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#409">409</a>: + <span class="emphasis"><em>Closing an fstream should clear the error state</em></span> + </span></dt><dd><p>Have <code class="code">open</code> clear the error flags. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-closed.html#431" target="">431</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-closed.html#431">431</a>: + <span class="emphasis"><em>Swapping containers with unequal allocators</em></span> + </span></dt><dd><p>Implement Option 3, as per N1599. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#432" target="">432</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#432">432</a>: + <span class="emphasis"><em>stringbuf::overflow() makes only one write position + available</em></span> + </span></dt><dd><p>Implement the resolution, beyond DR 169. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#434" target="">434</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#434">434</a>: + <span class="emphasis"><em>bitset::to_string() hard to use</em></span> + </span></dt><dd><p>Add three overloads, taking fewer template arguments. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#438" target="">438</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#438">438</a>: + <span class="emphasis"><em>Ambiguity in the "do the right thing" clause</em></span> + </span></dt><dd><p>Implement the resolution, basically cast less. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#453" target="">453</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#453">453</a>: + <span class="emphasis"><em>basic_stringbuf::seekoff need not always fail for an empty stream</em></span> + </span></dt><dd><p>Don't fail if the next pointer is null and newoff is zero. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#455" target="">455</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#455">455</a>: + <span class="emphasis"><em>cerr::tie() and wcerr::tie() are overspecified</em></span> + </span></dt><dd><p>Initialize cerr tied to cout and wcerr tied to wcout. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#464" target="">464</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#464">464</a>: + <span class="emphasis"><em>Suggestion for new member functions in standard containers</em></span> + </span></dt><dd><p>Add <code class="code">data()</code> to <code class="code">std::vector</code> and + <code class="code">at(const key_type&)</code> to <code class="code">std::map</code>. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#508" target="">508</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#508">508</a>: + <span class="emphasis"><em>Bad parameters for ranlux64_base_01</em></span> + </span></dt><dd><p>Fix the parameters. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-closed.html#512" target="">512</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-closed.html#512">512</a>: + <span class="emphasis"><em>Seeding subtract_with_carry_01 from a single unsigned long</em></span> + </span></dt><dd><p>Construct a <code class="code">linear_congruential</code> engine and seed with it. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-closed.html#526" target="">526</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-closed.html#526">526</a>: + <span class="emphasis"><em>Is it undefined if a function in the standard changes in + parameters?</em></span> + </span></dt><dd><p>Use &value. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#538" target="">538</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#538">538</a>: + <span class="emphasis"><em>241 again: Does unique_copy() require CopyConstructible + and Assignable?</em></span> + </span></dt><dd><p>In case of input_iterator/output_iterator rely on Assignability of + input_iterator' value_type. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#539" target="">539</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#539">539</a>: + <span class="emphasis"><em>partial_sum and adjacent_difference should mention + requirements</em></span> + </span></dt><dd><p>We were almost doing the right thing, just use std::move + in adjacent_difference. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#541" target="">541</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#541">541</a>: + <span class="emphasis"><em>shared_ptr template assignment and void</em></span> + </span></dt><dd><p>Add an auto_ptr<void> specialization. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#543" target="">543</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#543">543</a>: + <span class="emphasis"><em>valarray slice default constructor</em></span> + </span></dt><dd><p>Follow the straightforward proposed resolution. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#550" target="">550</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#550">550</a>: + <span class="emphasis"><em>What should the return type of pow(float,int) be?</em></span> + </span></dt><dd><p>In C++0x mode, remove the pow(float,int), etc., signatures. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#586" target="">586</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#586">586</a>: + <span class="emphasis"><em>string inserter not a formatted function</em></span> + </span></dt><dd><p>Change it to be a formatted output function (i.e. catch exceptions). +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#596" target="">596</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#596">596</a>: + <span class="emphasis"><em>27.8.1.3 Table 112 omits "a+" and "a+b" modes</em></span> + </span></dt><dd><p>Add the missing modes to fopen_mode. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#630" target="">630</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#630">630</a>: + <span class="emphasis"><em>arrays of valarray</em></span> + </span></dt><dd><p>Implement the simple resolution. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#660" target="">660</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#660">660</a>: + <span class="emphasis"><em>Missing bitwise operations</em></span> + </span></dt><dd><p>Add the missing operations. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#691" target="">691</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#691">691</a>: + <span class="emphasis"><em>const_local_iterator cbegin, cend missing from TR1</em></span> + </span></dt><dd><p>In C++0x mode add cbegin(size_type) and cend(size_type) + to the unordered containers. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#693" target="">693</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#693">693</a>: + <span class="emphasis"><em>std::bitset::all() missing</em></span> + </span></dt><dd><p>Add it, consistently with the discussion. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#695" target="">695</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#695">695</a>: + <span class="emphasis"><em>ctype<char>::classic_table() not accessible</em></span> + </span></dt><dd><p>Make the member functions table and classic_table public. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#696" target="">696</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#696">696</a>: + <span class="emphasis"><em>istream::operator>>(int&) broken</em></span> + </span></dt><dd><p>Implement the straightforward resolution. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#761" target="">761</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#761">761</a>: + <span class="emphasis"><em>unordered_map needs an at() member function</em></span> + </span></dt><dd><p>In C++0x mode, add at() and at() const. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#775" target="">775</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#775">775</a>: + <span class="emphasis"><em>Tuple indexing should be unsigned?</em></span> + </span></dt><dd><p>Implement the int -> size_t replacements. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#776" target="">776</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#776">776</a>: + <span class="emphasis"><em>Undescribed assign function of std::array</em></span> + </span></dt><dd><p>In C++0x mode, remove assign, add fill. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#781" target="">781</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#781">781</a>: + <span class="emphasis"><em>std::complex should add missing C99 functions</em></span> + </span></dt><dd><p>In C++0x mode, add std::proj. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#809" target="">809</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#809">809</a>: + <span class="emphasis"><em>std::swap should be overloaded for array types</em></span> + </span></dt><dd><p>Add the overload. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#844" target="">844</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#844">844</a>: + <span class="emphasis"><em>complex pow return type is ambiguous</em></span> + </span></dt><dd><p>In C++0x mode, remove the pow(complex<T>, int) signature. +- </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#853" target="">853</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#853">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><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#865" target="">865</a>: ++ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#865">865</a>: + <span class="emphasis"><em>More algorithms that throw away information</em></span> + </span></dt><dd><p>The traditional HP / SGI return type and value is blessed + by the resolution of the DR. +diff --git a/libstdc++-v3/doc/html/manual/concurrency.html b/libstdc++-v3/doc/html/manual/concurrency.html +index 43b58e1..bc1b787 100644 +--- a/libstdc++-v3/doc/html/manual/concurrency.html ++++ b/libstdc++-v3/doc/html/manual/concurrency.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 15. Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library , mutex , thread , future , condition_variable "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="atomics.html" title="Chapter 14. Atomics"/><link rel="next" href="extensions.html" title="Part III. Extensions"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 15. Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library , mutex , thread , future , condition_variable "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="atomics.html" title="Chapter 14. Atomics"/><link rel="next" href="extensions.html" title="Part III. Extensions"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. + Concurrency + + </th></tr><tr><td align="left"><a accesskey="p" href="atomics.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 15. Concurrency"><div class="titlepage"><div><div><h1 class="title"><a id="std.concurrency"/> ++ </th><td align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 15. Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency"/>Chapter 15. + Concurrency +- <a id="id602270" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p> ++ <a id="id481702" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p> + Facilities for concurrent operation, and control thereof. + </p><div class="section" title="API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency.api"/>API Reference</h2></div></div></div><p> + All items are declared in one of four standard header files. +diff --git a/libstdc++-v3/doc/html/manual/configure.html b/libstdc++-v3/doc/html/manual/configure.html +index 5d56b43..70409d0 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.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Configure</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , configure , options "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="setup.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td align="right"> <a accesskey="n" href="make.html">Next</a></td></tr></table><hr/></div><div class="section" title="Configure"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup.configure"/>Configure</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Configure</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , configure , options "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="setup.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td align="right"> <a accesskey="n" href="make.html">Next</a></td></tr></table><hr/></div><div class="section" title="Configure"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup.configure"/>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 +@@ -10,7 +10,7 @@ + Here are all of the configure options specific to libstdc++. Keep + in mind that + +- <a class="link" href="http://sourceware.org/autobook/autobook/autobook_14.html" target="">they ++ <a class="link" href="http://sourceware.org/autobook/autobook/autobook_14.html">they + all have opposite forms as well</a> (enable/disable and + with/without). The defaults are for the <span class="emphasis"><em>current + development sources</em></span>, which may be different than those +@@ -53,7 +53,7 @@ + choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix + (IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets, + 'gnu' to specify a model based on functionality from the GNU C +- library (langinfo/iconv/gettext) (from <a class="link" href="http://sources.redhat.com/glibc/" target="">glibc</a>, the GNU C ++ library (langinfo/iconv/gettext) (from <a class="link" href="http://sources.redhat.com/glibc/">glibc</a>, the GNU C + library), or 'generic' to use a generic "C" + abstraction which consists of "C" locale info. + </p><p>If not explicitly specified, the configure proccess tries +@@ -80,10 +80,24 @@ + (described next). + </p></dd><dt><span class="term"><code class="code">--enable-threads=OPTION</code></span></dt><dd><p>Select a threading library. A full description is + given in the +- general <a class="link" href="http://gcc.gnu.org/install/configure.html" target="">compiler ++ general <a class="link" href="http://gcc.gnu.org/install/configure.html">compiler + configuration instructions</a>. This option can change the + library ABI. +- </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-debug</code></span></dt><dd><p>Build separate debug libraries in addition to what is normally built. ++ </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time</code></span></dt><dd><p>This is an abbreviated form of ++ <code class="code">'--enable-libstdcxx-time=yes'</code>(described next). ++ </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time=OPTION</code></span></dt><dd><p>Enables link-type checks for the availability of the ++ clock_gettime clocks, used in the implementation of [time.clock], ++ and of the nanosleep and sched_yield functions, used in the ++ implementation of [thread.thread.this] of the current C++0x draft. ++ The choice OPTION=yes checks for the availability of the facilities ++ in libc and libposix4. In case of need the latter is also linked ++ to libstdc++ as part of the build process. OPTION=rt also searches ++ (and, in case, links) librt. Note that the latter is not always ++ desirable because, in glibc, for example, in turn it triggers the ++ 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><dt><span class="term"><code class="code">--enable-libstdcxx-debug</code></span></dt><dd><p>Build separate debug libraries in addition to what is normally built. + By default, the debug libraries are compiled with + <code class="code"> CXXFLAGS='-g3 -O0 -fno-inline'</code> + , are installed in <code class="code">${libdir}/debug</code>, and have the +@@ -180,24 +194,18 @@ + In addition, this generated file is used later on (by appending <code class="code"> + --include bits/stdc++.h </code> to CXXFLAGS) when running the + testsuite. ++ </p></dd><dt><span class="term"><code class="code">--enable-extern-template</code>[default]</span></dt><dd><p>Use extern template to pre-instantiate all required ++ specializations for certain types defined in the standard libraries. ++ These types include <code class="classname">string</code> and dependents like ++ <code class="classname">char_traits</code>, the templateized io classes, ++ <code class="classname">allocator</code>, and others. ++ Disabling means that implicit ++ template generation will be used when compiling these types. By ++ default, this option is on. This option can change the library ABI. + </p></dd><dt><span class="term"><code class="code">--disable-hosted-libstdcxx</code></span></dt><dd><p> + By default, a complete <span class="emphasis"><em>hosted</em></span> C++ library is + built. The C++ Standard also describes a + <span class="emphasis"><em>freestanding</em></span> environment, in which only a + minimal set of headers are provided. This option builds such an + environment. +- </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time</code></span></dt><dd><p>This is an abbreviated form of +- <code class="code">'--enable-libstdcxx-time=yes'</code>(described next). +- </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time=OPTION</code></span></dt><dd><p>Enables link-type checks for the availability of the +- clock_gettime clocks, used in the implementation of [time.clock], +- and of the nanosleep and sched_yield functions, used in the +- implementation of [thread.thread.this] of the current C++0x draft. +- The choice OPTION=yes checks for the availability of the facilities +- in libc and libposix4. In case of need the latter is also linked +- to libstdc++ as part of the build process. OPTION=rt also searches +- (and, in case, links) librt. Note that the latter is not always +- desirable because, in glibc, for example, in turn it triggers the +- 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 align="left"><a accesskey="p" href="setup.html">Prev</a> </td><td align="center"><a accesskey="u" href="setup.html">Up</a></td><td align="right"> <a accesskey="n" href="make.html">Next</a></td></tr><tr><td align="left" valign="top">Chapter 2. Setup </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td 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 align="left"><a accesskey="p" href="setup.html">Prev</a> </td><td align="center"><a accesskey="u" href="setup.html">Up</a></td><td align="right"> <a accesskey="n" href="make.html">Next</a></td></tr><tr><td align="left" valign="top">Chapter 2. Setup </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td 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 c89c6b7..1185af6 100644 +--- a/libstdc++-v3/doc/html/manual/containers.html ++++ b/libstdc++-v3/doc/html/manual/containers.html +@@ -1,17 +1,17 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 9. Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="facets.html" title="Facets"/><link rel="next" href="associative.html" title="Associative"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 9. Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="facets.html" title="Facets"/><link rel="next" href="associative.html" title="Associative"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. + Containers + + </th></tr><tr><td align="left"><a accesskey="p" href="facets.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 9. Containers"><div class="titlepage"><div><div><h1 class="title"><a id="std.containers"/> ++ </th><td align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 9. Containers"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers"/>Chapter 9. + Containers +- <a id="id599317" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="section" title="Sequences"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers.sequences"/>Sequences</h2></div></div></div><div class="section" title="list"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"/>list</h3></div></div></div><div class="section" title="list::size() is O(n)"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"/>list::size() is O(n)</h4></div></div></div><p> ++ <a id="id478750" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="section" title="Sequences"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers.sequences"/>Sequences</h2></div></div></div><div class="section" title="list"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"/>list</h3></div></div></div><div class="section" title="list::size() is O(n)"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"/>list::size() is O(n)</h4></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="link" href="http://www.sgi.com/tech/stl/FAQ.html" target="">their FAQ</a>: ++ quoted from <a class="link" href="http://www.sgi.com/tech/stl/FAQ.html">their FAQ</a>: + </p><div class="blockquote"><blockquote class="blockquote"><p> + The size() member function, for list and slist, takes time + proportional to the number of elements in the list. This was a +@@ -44,12 +44,12 @@ + ... + </pre></blockquote></div></div></div><div class="section" title="vector"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.vector"/>vector</h3></div></div></div><p> + </p><div class="section" title="Space Overhead Management"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.vector.management"/>Space Overhead Management</h4></div></div></div><p> +- In <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html" target="">this ++ In <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html">this + message to the list</a>, Daniel Kostecky announced work on an + alternate form of <code class="code">std::vector</code> that would support + hints on the number of elements to be over-allocated. The design + was also described, along with possible implementation choices. + </p><p> +- The first two alpha releases were announced <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html" target="">here</a> +- and <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html" target="">here</a>. ++ The first two alpha releases were announced <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html">here</a> ++ and <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html">here</a>. + </p></div></div></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="facets.html">Prev</a> </td><td align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr><tr><td align="left" valign="top">Facets </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Associative</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/manual/containers_and_c.html b/libstdc++-v3/doc/html/manual/containers_and_c.html +index 0c0ef56..3e612aa 100644 +--- a/libstdc++-v3/doc/html/manual/containers_and_c.html ++++ b/libstdc++-v3/doc/html/manual/containers_and_c.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="containers.html" title="Chapter 9. Containers"/><link rel="prev" href="associative.html" title="Associative"/><link rel="next" href="iterators.html" title="Chapter 10. Iterators"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td align="left"><a accesskey="p" href="associative.html">Prev</a> </td><th width="60%" align="center">Chapter 9. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="containers.html" title="Chapter 9. Containers"/><link rel="prev" href="associative.html" title="Associative"/><link rel="next" href="iterators.html" title="Chapter 10. Iterators"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td align="left"><a accesskey="p" href="associative.html">Prev</a> </td><th width="60%" align="center">Chapter 9. + Containers + + </th><td align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr></table><hr/></div><div class="section" title="Interacting with C"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers.c"/>Interacting with C</h2></div></div></div><div class="section" title="Containers vs. Arrays"><div class="titlepage"><div><div><h3 class="title"><a id="containers.c.vs_array"/>Containers vs. Arrays</h3></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/debug.html b/libstdc++-v3/doc/html/manual/debug.html +index e33c107..55b5abf 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.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Debugging Support</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="using.html" title="Chapter 3. Using"/><link rel="prev" href="using_exceptions.html" title="Exceptions"/><link rel="next" href="bk01pt02.html" title="Part II. Standard Contents"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Debugging Support</th></tr><tr><td align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="bk01pt02.html">Next</a></td></tr></table><hr/></div><div class="section" title="Debugging Support"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.debug"/>Debugging Support</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Debugging Support</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="using.html" title="Chapter 3. Using"/><link rel="prev" href="using_exceptions.html" title="Exceptions"/><link rel="next" href="bk01pt02.html" title="Part II. Standard Contents"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Debugging Support</th></tr><tr><td align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="bk01pt02.html">Next</a></td></tr></table><hr/></div><div class="section" title="Debugging Support"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.debug"/>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. +@@ -28,7 +28,7 @@ + platform can be identified via the value set by the + PREFERRED_DEBUGGING_TYPE macro in the gcc sources. + </p><p> +- Many other options are available: please see <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging%20Options" target="">"Options ++ Many other options are available: please see <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging%20Options">"Options + for Debugging Your Program"</a> in Using the GNU Compiler + Collection (GCC) for a complete list. + </p></div><div class="section" title="Debug Versions of Library Binary Files"><div class="titlepage"><div><div><h3 class="title"><a id="debug.req"/>Debug Versions of Library Binary Files</h3></div></div></div><p> +@@ -147,11 +147,11 @@ + </p><p> + The approach described above is known to work with the following race + detection tools: +- <a class="link" href="http://valgrind.org/docs/manual/drd-manual.html" target=""> ++ <a class="link" href="http://valgrind.org/docs/manual/drd-manual.html"> + DRD</a>, +- <a class="link" href="http://valgrind.org/docs/manual/hg-manual.html" target=""> ++ <a class="link" href="http://valgrind.org/docs/manual/hg-manual.html"> + Helgrind</a>, and +- <a class="link" href="http://code.google.com/p/data-race-test" target=""> ++ <a class="link" href="http://code.google.com/p/data-race-test"> + ThreadSanitizer</a>. + </p><p> + With DRD, Helgrind and ThreadSanitizer you will need to define +@@ -163,7 +163,7 @@ + Refer to the documentation of each particular tool for details. + </p></div><div class="section" title="Using gdb"><div class="titlepage"><div><div><h3 class="title"><a id="debug.gdb"/>Using <span class="command"><strong>gdb</strong></span></h3></div></div></div><p> + </p><p> +- Many options are available for GDB itself: please see <a class="link" href="http://sources.redhat.com/gdb/current/onlinedocs/gdb/" target=""> ++ Many options are available for GDB itself: please see <a class="link" href="http://sources.redhat.com/gdb/current/onlinedocs/gdb/"> + "GDB features for C++" </a> in the GDB documentation. Also + recommended: the other parts of this manual. + </p><p> +@@ -207,12 +207,12 @@ + pretty-printers were not loaded. + </p><p> + For additional information on STL support and GDB please visit: +- <a class="link" href="http://sourceware.org/gdb/wiki/STLSupport" target=""> "GDB Support ++ <a class="link" href="http://sourceware.org/gdb/wiki/STLSupport"> "GDB Support + for STL" </a> in the GDB wiki. Additionally, in-depth + documentation and discussion of the pretty printing feature can be + found in "Pretty Printing" node in the GDB manual. You can find + on-line versions of the GDB user manual in GDB's homepage, at +- <a class="link" href="http://sourceware.org/gdb/" target=""> "GDB: The GNU Project ++ <a class="link" href="http://sourceware.org/gdb/"> "GDB: The GNU Project + Debugger" </a>. + </p></div><div class="section" title="Tracking uncaught exceptions"><div class="titlepage"><div><div><h3 class="title"><a id="debug.exceptions"/>Tracking uncaught exceptions</h3></div></div></div><p> + The <a class="link" href="termination.html#support.termination.verbose" title="Verbose Terminate Handler">verbose +diff --git a/libstdc++-v3/doc/html/manual/debug_mode.html b/libstdc++-v3/doc/html/manual/debug_mode.html +index 66a2de5..f35960b 100644 +--- a/libstdc++-v3/doc/html/manual/debug_mode.html ++++ b/libstdc++-v3/doc/html/manual/debug_mode.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 17. Debug Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks"/><link rel="next" href="bk01pt03ch17s02.html" title="Semantics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 17. Debug Mode</th></tr><tr><td align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 17. Debug Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , debug "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks"/><link rel="next" href="bk01pt03ch17s02.html" title="Semantics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 17. Debug Mode</th></tr><tr><td align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="bk01pt03ch17s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 17. Debug Mode"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.debug_mode"/>Debug Mode</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></div><div class="section" title="Intro"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode.intro"/>Intro</h2></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="bk01pt03ch17s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 17. Debug Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode"/>Chapter 17. Debug Mode</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></div><div class="section" title="Intro"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode.intro"/>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 +diff --git a/libstdc++-v3/doc/html/manual/diagnostics.html b/libstdc++-v3/doc/html/manual/diagnostics.html +index 1f86869..9c9abdf 100644 +--- a/libstdc++-v3/doc/html/manual/diagnostics.html ++++ b/libstdc++-v3/doc/html/manual/diagnostics.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 5. Diagnostics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="termination.html" title="Termination"/><link rel="next" href="bk01pt02ch05s02.html" title="Concept Checking"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 5. Diagnostics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="termination.html" title="Termination"/><link rel="next" href="bk01pt02ch05s02.html" title="Concept Checking"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. + Diagnostics + + </th></tr><tr><td align="left"><a accesskey="p" href="termination.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="bk01pt02ch05s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 5. Diagnostics"><div class="titlepage"><div><div><h1 class="title"><a id="std.diagnostics"/> ++ </th><td align="right"> <a accesskey="n" href="bk01pt02ch05s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 5. Diagnostics"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics"/>Chapter 5. + Diagnostics +- <a id="id592934" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></div><div class="section" title="Exceptions"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics.exceptions"/>Exceptions</h2></div></div></div><div class="section" title="API Reference"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"/>API Reference</h3></div></div></div><p> ++ <a id="id472366" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></div><div class="section" title="Exceptions"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics.exceptions"/>Exceptions</h2></div></div></div><div class="section" title="API Reference"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"/>API Reference</h3></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 +diff --git a/libstdc++-v3/doc/html/manual/documentation_hacking.html b/libstdc++-v3/doc/html/manual/documentation_hacking.html +index 8e80c67..fbb85b1 100644 +--- a/libstdc++-v3/doc/html/manual/documentation_hacking.html ++++ b/libstdc++-v3/doc/html/manual/documentation_hacking.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Writing and Generating Documentation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content="ISO C++, documentation, style, docbook, doxygen"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="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">Writing and Generating Documentation</th></tr><tr><td align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><th width="60%" align="center">Appendix B. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Writing and Generating Documentation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content="ISO C++, documentation, style, docbook, doxygen"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="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">Writing and Generating Documentation</th></tr><tr><td align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><th width="60%" align="center">Appendix B. + Porting and Maintenance + + </th><td align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr></table><hr/></div><div class="section" title="Writing and Generating Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting.doc"/>Writing and Generating Documentation</h2></div></div></div><div class="section" title="Introduction"><div class="titlepage"><div><div><h3 class="title"><a id="doc.intro"/>Introduction</h3></div></div></div><p> +@@ -25,7 +25,7 @@ + reference. Although divergent, this conforms to the GNU Project + recommendations as long as the output is of sufficient quality, + as per +- <a class="link" href="http://www.gnu.org/prep/standards/standards.html#Documentation" target=""> ++ <a class="link" href="http://www.gnu.org/prep/standards/standards.html#Documentation"> + GNU Manuals</a>. + </p></div><div class="section" title="Generating Documentation"><div class="titlepage"><div><div><h3 class="title"><a id="doc.generation"/>Generating Documentation</h3></div></div></div><p> + Certain Makefile rules are required by the GNU Coding +@@ -117,19 +117,19 @@ + supported, and are always aliased to dummy rules. These + unsupported formats are: <span class="emphasis"><em>info</em></span>, + <span class="emphasis"><em>ps</em></span>, and <span class="emphasis"><em>dvi</em></span>. +- </p></div><div class="section" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id615654"/><p class="title"><b>Table B.1. Doxygen Prerequisites</b></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center"/><col style="text-align: center"/><col style="text-align: center"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr></tbody></table></div></div><br class="table-break"/><p> ++ </p></div><div class="section" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id495087"/><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr></tbody></table></div></div><br class="table-break"/><p> + Prerequisite tools are Bash 2.0 or later, +- <a class="link" href="http://www.doxygen.org/" target="">Doxygen</a>, and +- the <a class="link" href="http://www.gnu.org/software/coreutils/" target="">GNU ++ <a class="link" href="http://www.doxygen.org/">Doxygen</a>, and ++ the <a class="link" href="http://www.gnu.org/software/coreutils/">GNU + coreutils</a>. (GNU versions of find, xargs, and possibly + sed and grep are used, just because the GNU versions make + things very easy.) + </p><p> + To generate the pretty pictures and hierarchy + graphs, the +- <a class="link" href="http://www.graphviz.org" target="">Graphviz</a> package ++ <a class="link" href="http://www.graphviz.org">Graphviz</a> package + will need to be installed. For PDF +- output, <a class="link" href="http://www.tug.org/applications/pdftex/" target=""> ++ output, <a class="link" href="http://www.tug.org/applications/pdftex/"> + pdflatex</a> is required. + </p></div><div class="section" title="Generating the Doxygen Files"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.rules"/>Generating the Doxygen Files</h4></div></div></div><p> + The following Makefile rules run Doxygen to generate HTML +@@ -173,7 +173,7 @@ + Adding Doxygen markup to a file (informally called + <span class="quote">“<span class="quote">doxygenating</span>”</span>) is very simple. The Doxygen manual can be + found +- <a class="link" href="http://www.stack.nl/~dimitri/doxygen/download.html#latestman" target="">here</a>. ++ <a class="link" href="http://www.stack.nl/~dimitri/doxygen/download.html#latestman">here</a>. + We try to use a very-recent version of Doxygen. + </p><p> + For classes, use +@@ -185,7 +185,7 @@ + member functions. + </p><p> + Some commentary to accompany +- the first list in the <a class="link" href="http://www.stack.nl/~dimitri/doxygen/docblocks.html" target="">Special ++ the first list in the <a class="link" href="http://www.stack.nl/~dimitri/doxygen/docblocks.html">Special + Documentation Blocks</a> section of + the Doxygen manual: + </p><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><p>For longer comments, use the Javadoc style...</p></li><li class="listitem"><p> +@@ -263,7 +263,7 @@ + writing Doxygen comments. Single and double quotes, and + separators in filenames are two common trouble spots. When in + doubt, consult the following table. +- </p><div class="table"><a id="id616157"/><p class="title"><b>Table B.2. HTML to Doxygen Markup Comparison</b></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id616319"/><p class="title"><b>Table B.3. Docbook Prerequisites</b></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center"/><col style="text-align: center"/><col style="text-align: center"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info output</td></tr></tbody></table></div></div><br class="table-break"/><p> ++ </p><div class="table"><a id="id495589"/><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id495751"/><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info output</td></tr></tbody></table></div></div><br class="table-break"/><p> + Editing the DocBook sources requires an XML editor. Many + exist: some notable options + include <span class="command"><strong>emacs</strong></span>, <span class="application">Kate</span>, +@@ -298,16 +298,16 @@ + by a vendor package like <code class="filename">libxml2</code> and <code class="filename">docbook5-schemas-5.0-4</code> + </p><p> + For PDF output, something that transforms valid Docbook XML to PDF is +- required. Possible solutions include <a class="link" href="http://dblatex.sourceforge.net" target="">dblatex</a>, ++ required. Possible solutions include <a class="link" href="http://dblatex.sourceforge.net">dblatex</a>, + <span class="command"><strong>xmlto</strong></span>, or <span class="command"><strong>prince</strong></span>. Of + these, <span class="command"><strong>dblatex</strong></span> is the default. Other +- options are listed on the DocBook web <a class="link" href="http://wiki.docbook.org/topic/DocBookPublishingTools" target="">pages</a>. Please ++ options are listed on the DocBook web <a class="link" href="http://wiki.docbook.org/topic/DocBookPublishingTools">pages</a>. Please + consult the <code class="email"><<a class="email" href="mailto:libstdc++@gcc.gnu.org">libstdc++@gcc.gnu.org</a>></code> list when + preparing printed manuals for current best practice and + suggestions. + </p><p> + For Texinfo output, something that transforms valid Docbook +- XML to Texinfo is required. The default choice is <a class="link" href="http://docbook2x.sourceforge.net/" target="">docbook2X</a>. ++ XML to Texinfo is required. The default choice is <a class="link" href="http://docbook2x.sourceforge.net/">docbook2X</a>. + </p></div><div class="section" title="Generating the DocBook Files"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.rules"/>Generating the DocBook Files</h4></div></div></div><p> + The following Makefile rules generate (in order): an HTML + version of all the DocBook documentation, a PDF version of the +@@ -347,7 +347,7 @@ make <code class="literal">XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal + </code></strong> + </pre><p> + Please note that individual sections and chapters of the +- manual can be validated by substiuting the file desired for ++ manual can be validated by substituting the file desired for + <code class="filename">xml/index.xml</code> in the command + above. Reducing scope in this manner can be helpful when + validation on the entire manual fails. +@@ -416,14 +416,14 @@ make <code class="literal">XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal + </p></div></div><div class="section" title="Markup By Example"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.markup"/>Markup By Example</h4></div></div></div><p> + Complete details on Docbook markup can be found in the DocBook + Element Reference, +- <a class="link" href="http://www.docbook.org/tdg/en/html/part2.html" target="">online</a>. ++ <a class="link" href="http://www.docbook.org/tdg/en/html/part2.html">online</a>. + An incomplete reference for HTML to Docbook conversion is + detailed in the table below. +- </p><div class="table"><a id="id616796"/><p class="title"><b>Table B.4. HTML to Docbook XML Markup Comparison</b></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>, ++ </p><div class="table"><a id="id496228"/><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>, + <literallayout></td></tr><tr><td style="text-align: left"><ul></td><td style="text-align: left"><itemizedlist></td></tr><tr><td style="text-align: left"><ol></td><td style="text-align: left"><orderedlist></td></tr><tr><td style="text-align: left"><il></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><dl></td><td style="text-align: left"><variablelist></td></tr><tr><td style="text-align: left"><dt></td><td style="text-align: left"><term></td></tr><tr><td style="text-align: left"><dd></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><a href=""></td><td style="text-align: left"><ulink url=""></td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left"><literal>, <programlisting></td></tr><tr><td style="text-align: left"><strong></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left">"</td><td style="text-align: left"><quote></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="id616997"/><p class="title"><b>Table B.5. Docbook XML Element Use</b></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left"> ++</p><div class="table"><a id="id496429"/><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left"> + <p><function>clear()</function></p> + <p><function>fs.clear()</function></p> + </td></tr><tr><td style="text-align: left"><type></td><td style="text-align: left"><type>long long</type></td></tr><tr><td style="text-align: left"><varname></td><td style="text-align: left"><varname>fs</varname></td></tr><tr><td style="text-align: left"><literal></td><td style="text-align: left"> +diff --git a/libstdc++-v3/doc/html/manual/dynamic_memory.html b/libstdc++-v3/doc/html/manual/dynamic_memory.html +index c217415..481347b 100644 +--- a/libstdc++-v3/doc/html/manual/dynamic_memory.html ++++ b/libstdc++-v3/doc/html/manual/dynamic_memory.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Dynamic Memory</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="support.html" title="Chapter 4. Support"/><link rel="prev" href="support.html" title="Chapter 4. Support"/><link rel="next" href="termination.html" title="Termination"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Dynamic Memory</th></tr><tr><td align="left"><a accesskey="p" href="support.html">Prev</a> </td><th width="60%" align="center">Chapter 4. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Dynamic Memory</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="support.html" title="Chapter 4. Support"/><link rel="prev" href="support.html" title="Chapter 4. Support"/><link rel="next" href="termination.html" title="Termination"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Dynamic Memory</th></tr><tr><td align="left"><a accesskey="p" href="support.html">Prev</a> </td><th width="60%" align="center">Chapter 4. + Support + + </th><td align="right"> <a accesskey="n" href="termination.html">Next</a></td></tr></table><hr/></div><div class="section" title="Dynamic Memory"><div class="titlepage"><div><div><h2 class="title"><a id="std.support.memory"/>Dynamic Memory</h2></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/ext_algorithms.html b/libstdc++-v3/doc/html/manual/ext_algorithms.html +index 9e956ba..354dd9b 100644 +--- a/libstdc++-v3/doc/html/manual/ext_algorithms.html ++++ b/libstdc++-v3/doc/html/manual/ext_algorithms.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 23. Algorithms</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_utilities.html" title="Chapter 22. Utilities"/><link rel="next" href="ext_numerics.html" title="Chapter 24. Numerics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 23. Algorithms</th></tr><tr><td align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 23. Algorithms</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_utilities.html" title="Chapter 22. Utilities"/><link rel="next" href="ext_numerics.html" title="Chapter 24. Numerics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 23. Algorithms</th></tr><tr><td align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="ext_numerics.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 23. Algorithms"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.algorithms"/>Algorithms</h1></div></div></div><p>25.1.6 (count, count_if) is extended with two more versions of count ++</th><td align="right"> <a accesskey="n" href="ext_numerics.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 23. Algorithms"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.algorithms"/>Chapter 23. 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., +diff --git a/libstdc++-v3/doc/html/manual/ext_allocators.html b/libstdc++-v3/doc/html/manual/ext_allocators.html +index 5aee3fb..bd283b7 100644 +--- a/libstdc++-v3/doc/html/manual/ext_allocators.html ++++ b/libstdc++-v3/doc/html/manual/ext_allocators.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 20. Allocators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03ch19s07.html" title="Diagnostics"/><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 20. Allocators</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s07.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 20. Allocators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03ch19s07.html" title="Diagnostics"/><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 20. Allocators</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch19s07.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 20. Allocators"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.allocator"/>Allocators</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="section"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></div><div class="section" title="mt_allocator"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator.mt"/>mt_allocator</h2></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 20. Allocators"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator"/>Chapter 20. Allocators</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="section"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></div><div class="section" title="mt_allocator"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator.mt"/>mt_allocator</h2></div></div></div><p> + </p><div class="section" title="Intro"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.intro"/>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 +@@ -212,7 +212,7 @@ containers, this works, as an instance of the allocator is constructed + as part of a container's constructor. However, this assumption is + implementation-specific, and subject to change. For an example of a + pool that frees memory, see the following +- <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc?view=markup" target=""> ++ <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc?view=markup"> + example.</a> + </p></div></div><div class="section" title="Single Thread Example"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.example_single"/>Single Thread Example</h3></div></div></div><p> + Let's start by describing how the data on a freelist is laid out in memory. +diff --git a/libstdc++-v3/doc/html/manual/ext_compile_checks.html b/libstdc++-v3/doc/html/manual/ext_compile_checks.html +index 2363456..c648797 100644 +--- a/libstdc++-v3/doc/html/manual/ext_compile_checks.html ++++ b/libstdc++-v3/doc/html/manual/ext_compile_checks.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 16. Compile Time Checks</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03pr01.html" title=""/><link rel="next" href="debug_mode.html" title="Chapter 17. Debug Mode"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Compile Time Checks</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03pr01.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 16. Compile Time Checks</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03pr01.html" title=""/><link rel="next" href="debug_mode.html" title="Chapter 17. Debug Mode"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Compile Time Checks</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03pr01.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 16. Compile Time Checks"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.compile_checks"/>Compile Time Checks</h1></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 16. Compile Time Checks"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.compile_checks"/>Chapter 16. 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 +@@ -19,7 +19,7 @@ + </p><p>The primary author of the checking code, Jeremy Siek, had already + started work on a replacement implementation. The new code has been + formally reviewed and accepted into +- <a class="link" href="http://www.boost.org/libs/concept_check/concept_check.htm" target="">the ++ <a class="link" href="http://www.boost.org/libs/concept_check/concept_check.htm">the + Boost libraries</a>, and we are pleased to incorporate it into the + GNU C++ library. + </p><p>The new version imposes a much smaller space overhead on the generated +diff --git a/libstdc++-v3/doc/html/manual/ext_concurrency.html b/libstdc++-v3/doc/html/manual/ext_concurrency.html +index db95269..99718e0 100644 +--- a/libstdc++-v3/doc/html/manual/ext_concurrency.html ++++ b/libstdc++-v3/doc/html/manual/ext_concurrency.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 28. Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_demangling.html" title="Chapter 27. Demangling"/><link rel="next" href="bk01pt03ch28s02.html" title="Implementation"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 28. Concurrency</th></tr><tr><td align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 28. Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_demangling.html" title="Chapter 27. Demangling"/><link rel="next" href="bk01pt03ch28s02.html" title="Implementation"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 28. Concurrency</th></tr><tr><td align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="bk01pt03ch28s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 28. Concurrency"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.concurrency"/>Concurrency</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch28s02.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="section"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch28s03.html">Use</a></span></dt></dl></div><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency.design"/>Design</h2></div></div></div><div class="section" title="Interface to Locks and Mutexes"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.threads"/>Interface to Locks and Mutexes</h3></div></div></div><p>The file <ext/concurrence.h> contains all the higher-level ++</th><td align="right"> <a accesskey="n" href="bk01pt03ch28s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 28. Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency"/>Chapter 28. Concurrency</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch28s02.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="section"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch28s03.html">Use</a></span></dt></dl></div><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency.design"/>Design</h2></div></div></div><div class="section" title="Interface to Locks and Mutexes"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.threads"/>Interface to Locks and Mutexes</h3></div></div></div><p>The file <ext/concurrence.h> 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> +diff --git a/libstdc++-v3/doc/html/manual/ext_containers.html b/libstdc++-v3/doc/html/manual/ext_containers.html +index d2a949b..d07860b 100644 +--- a/libstdc++-v3/doc/html/manual/ext_containers.html ++++ b/libstdc++-v3/doc/html/manual/ext_containers.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 21. Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bitmap_allocator.html" title="bitmap_allocator"/><link rel="next" href="bk01pt03ch21s02.html" title="HP/SGI"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 21. Containers</th></tr><tr><td align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 21. Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bitmap_allocator.html" title="bitmap_allocator"/><link rel="next" href="bk01pt03ch21s02.html" title="HP/SGI"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 21. Containers</th></tr><tr><td align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="bk01pt03ch21s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 21. Containers"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.containers"/>Containers</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html">HP/SGI</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s03.html">Deprecated HP/SGI</a></span></dt></dl></div><p> ++</th><td align="right"> <a accesskey="n" href="bk01pt03ch21s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 21. Containers"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers"/>Chapter 21. Containers</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html">HP/SGI</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s03.html">Deprecated HP/SGI</a></span></dt></dl></div><p> + </p><div class="section" title="Policy Based Data Structures"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers.pbds"/>Policy Based Data Structures</h2></div></div></div><p> +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html" target="">More details here</a>. ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html">More details here</a>. + </p></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><td align="center"><a accesskey="u" href="extensions.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt03ch21s02.html">Next</a></td></tr><tr><td align="left" valign="top">bitmap_allocator </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> HP/SGI</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/manual/ext_demangling.html b/libstdc++-v3/doc/html/manual/ext_demangling.html +index d842990..0120bc2 100644 +--- a/libstdc++-v3/doc/html/manual/ext_demangling.html ++++ b/libstdc++-v3/doc/html/manual/ext_demangling.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 27. Demangling</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_io.html" title="Chapter 26. Input and Output"/><link rel="next" href="ext_concurrency.html" title="Chapter 28. Concurrency"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 27. Demangling</th></tr><tr><td align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 27. Demangling</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_io.html" title="Chapter 26. Input and Output"/><link rel="next" href="ext_concurrency.html" title="Chapter 28. Concurrency"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 27. Demangling</th></tr><tr><td align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="ext_concurrency.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 27. Demangling"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.demangle"/>Demangling</h1></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="ext_concurrency.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 27. Demangling"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.demangle"/>Chapter 27. Demangling</h2></div></div></div><p> + Transforming C++ ABI identifiers (like RTTI symbols) into the + original C++ source identifiers is called + <span class="quote">“<span class="quote">demangling.</span>”</span> + </p><p> +- If you have read the <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01115.html" target="">source ++ If you have read the <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01115.html">source + documentation for <code class="code">namespace abi</code></a> then you are + aware of the cross-vendor C++ ABI in use by GCC. One of the + exposed functions is used for demangling, +diff --git a/libstdc++-v3/doc/html/manual/ext_io.html b/libstdc++-v3/doc/html/manual/ext_io.html +index 5447e18..aba0fe1 100644 +--- a/libstdc++-v3/doc/html/manual/ext_io.html ++++ b/libstdc++-v3/doc/html/manual/ext_io.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 26. Input and Output</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_iterators.html" title="Chapter 25. Iterators"/><link rel="next" href="ext_demangling.html" title="Chapter 27. Demangling"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 26. Input and Output</th></tr><tr><td align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 26. Input and Output</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_iterators.html" title="Chapter 25. Iterators"/><link rel="next" href="ext_demangling.html" title="Chapter 27. Demangling"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 26. Input and Output</th></tr><tr><td align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 26. Input and Output"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.io"/>Input and Output</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></div><p> ++</th><td align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 26. Input and Output"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.io"/>Chapter 26. Input and Output</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><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="section" title="Derived filebufs"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.io.filebuf_derived"/>Derived filebufs</h2></div></div></div><p>The v2 library included non-standard extensions to construct +@@ -39,7 +39,7 @@ + the <code class="code">fd()</code> function were removed from the standard + filebuf. Instead, <code class="code"><ext/stdio_filebuf.h></code> contains + a derived class called +- <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html" target=""><code class="code">__gnu_cxx::stdio_filebuf</code></a>. ++ <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code class="code">__gnu_cxx::stdio_filebuf</code></a>. + This class can be constructed from a C <code class="code">FILE*</code> or a file + descriptor, and provides the <code class="code">fd()</code> function. + </p></li></ul></div><p>If you want to access a <code class="code">filebuf</code>'s file descriptor to +diff --git a/libstdc++-v3/doc/html/manual/ext_iterators.html b/libstdc++-v3/doc/html/manual/ext_iterators.html +index 5740e66..8c00985 100644 +--- a/libstdc++-v3/doc/html/manual/ext_iterators.html ++++ b/libstdc++-v3/doc/html/manual/ext_iterators.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 25. Iterators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_numerics.html" title="Chapter 24. Numerics"/><link rel="next" href="ext_io.html" title="Chapter 26. Input and Output"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 25. Iterators</th></tr><tr><td align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 25. Iterators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_numerics.html" title="Chapter 24. Numerics"/><link rel="next" href="ext_io.html" title="Chapter 26. Input and Output"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 25. Iterators</th></tr><tr><td align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="ext_io.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 25. Iterators"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.iterators"/>Iterators</h1></div></div></div><p>24.3.2 describes <code class="code">struct iterator</code>, which didn't exist in the ++</th><td align="right"> <a accesskey="n" href="ext_io.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 25. Iterators"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.iterators"/>Chapter 25. 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: +diff --git a/libstdc++-v3/doc/html/manual/ext_numerics.html b/libstdc++-v3/doc/html/manual/ext_numerics.html +index fb15705..71d417c 100644 +--- a/libstdc++-v3/doc/html/manual/ext_numerics.html ++++ b/libstdc++-v3/doc/html/manual/ext_numerics.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 24. Numerics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_algorithms.html" title="Chapter 23. Algorithms"/><link rel="next" href="ext_iterators.html" title="Chapter 25. Iterators"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 24. Numerics</th></tr><tr><td align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 24. Numerics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="ext_algorithms.html" title="Chapter 23. Algorithms"/><link rel="next" href="ext_iterators.html" title="Chapter 25. Iterators"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 24. Numerics</th></tr><tr><td align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="ext_iterators.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 24. Numerics"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.numerics"/>Numerics</h1></div></div></div><p>26.4, the generalized numeric operations such as accumulate, are extended ++</th><td align="right"> <a accesskey="n" href="ext_iterators.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 24. Numerics"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.numerics"/>Chapter 24. 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); +diff --git a/libstdc++-v3/doc/html/manual/ext_utilities.html b/libstdc++-v3/doc/html/manual/ext_utilities.html +index b07281d..d15057c 100644 +--- a/libstdc++-v3/doc/html/manual/ext_utilities.html ++++ b/libstdc++-v3/doc/html/manual/ext_utilities.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 22. Utilities</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03ch21s03.html" title="Deprecated HP/SGI"/><link rel="next" href="ext_algorithms.html" title="Chapter 23. Algorithms"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. Utilities</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch21s03.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 22. Utilities</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03ch21s03.html" title="Deprecated HP/SGI"/><link rel="next" href="ext_algorithms.html" title="Chapter 23. Algorithms"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. Utilities</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch21s03.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="ext_algorithms.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 22. Utilities"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.util"/>Utilities</h1></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="ext_algorithms.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 22. Utilities"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.util"/>Chapter 22. Utilities</h2></div></div></div><p> + The <functional> header contains many additional functors + and helper functions, extending section 20.3. They are + implemented in the file stl_function.h: +diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html +index 5395251..7fae907 100644 +--- a/libstdc++-v3/doc/html/manual/extensions.html ++++ b/libstdc++-v3/doc/html/manual/extensions.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Part III. Extensions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library Manual"/><link rel="prev" href="io_and_c.html" title="Interacting with C"/><link rel="next" href="bk01pt03pr01.html" title=""/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Part III. Extensions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library Manual"/><link rel="prev" href="io_and_c.html" title="Interacting with C"/><link rel="next" href="bk01pt03pr01.html" title=""/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III. + Extensions + + </th></tr><tr><td align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td align="right"> <a accesskey="n" href="bk01pt03pr01.html">Next</a></td></tr></table><hr/></div><div class="part" title="Part III. Extensions"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"/>Part III. + Extensions +- <a id="id602435" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt03pr01.html"/></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s05.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="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_allocators.html">20. Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="section"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><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">21. Containers</a></span></dt><dd><dl><dt><span class="section"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html">HP/SGI</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_utilities.html">22. Utilities</a></span></dt><dt><span class="chapter"><a href="ext_algorithms.html">23. Algorithms</a></span></dt><dt><span class="chapter"><a href="ext_numerics.html">24. Numerics</a></span></dt><dt><span class="chapter"><a href="ext_iterators.html">25. Iterators</a></span></dt><dt><span class="chapter"><a href="ext_io.html">26. Input and Output</a></span></dt><dd><dl><dt><span class="section"><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">27. Demangling</a></span></dt><dt><span class="chapter"><a href="ext_concurrency.html">28. Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch28s02.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="section"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch28s03.html">Use</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><td align="center"><a accesskey="u" href="spine.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt03pr01.html">Next</a></td></tr><tr><td align="left" valign="top">Interacting with C </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> </td></tr></table></div></body></html> ++ <a id="id481867" class="indexterm"/> ++</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="preface"><a href="bk01pt03pr01.html"/></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="section"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s05.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="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_allocators.html">20. Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="section"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="section"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><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">21. Containers</a></span></dt><dd><dl><dt><span class="section"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s02.html">HP/SGI</a></span></dt><dt><span class="section"><a href="bk01pt03ch21s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_utilities.html">22. Utilities</a></span></dt><dt><span class="chapter"><a href="ext_algorithms.html">23. Algorithms</a></span></dt><dt><span class="chapter"><a href="ext_numerics.html">24. Numerics</a></span></dt><dt><span class="chapter"><a href="ext_iterators.html">25. Iterators</a></span></dt><dt><span class="chapter"><a href="ext_io.html">26. Input and Output</a></span></dt><dd><dl><dt><span class="section"><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">27. Demangling</a></span></dt><dt><span class="chapter"><a href="ext_concurrency.html">28. Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch28s02.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="section"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch28s03.html">Use</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><td align="center"><a accesskey="u" href="spine.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt03pr01.html">Next</a></td></tr><tr><td align="left" valign="top">Interacting with C </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> </td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/manual/facets.html b/libstdc++-v3/doc/html/manual/facets.html +index efd519a..cfe89bc 100644 +--- a/libstdc++-v3/doc/html/manual/facets.html ++++ b/libstdc++-v3/doc/html/manual/facets.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Facets</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="localization.html" title="Chapter 8. Localization"/><link rel="prev" href="localization.html" title="Chapter 8. Localization"/><link rel="next" href="containers.html" title="Chapter 9. Containers"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Facets</th></tr><tr><td align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Chapter 8. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Facets</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="localization.html" title="Chapter 8. Localization"/><link rel="prev" href="localization.html" title="Chapter 8. Localization"/><link rel="next" href="containers.html" title="Chapter 9. Containers"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Facets</th></tr><tr><td align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Chapter 8. + Localization + +-</th><td align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr/></div><div class="section" title="Facets"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization.facet"/>Facets</h2></div></div></div><div class="section" title="ctype"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.ctype"/>ctype</h3></div></div></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.impl"/>Implementation</h4></div></div></div><div class="section" title="Specializations"><div class="titlepage"><div><div><h5 class="title"><a id="id597127"/>Specializations</h5></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr/></div><div class="section" title="Facets"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization.facet"/>Facets</h2></div></div></div><div class="section" title="ctype"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.ctype"/>ctype</h3></div></div></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.impl"/>Implementation</h4></div></div></div><div class="section" title="Specializations"><div class="titlepage"><div><div><h5 class="title"><a id="id476560"/>Specializations</h5></div></div></div><p> + For the required specialization codecvt<wchar_t, char, mbstate_t> , + conversions are made between the internal character set (always UCS4 + on GNU/Linux) and whatever the currently selected locale for the +@@ -50,23 +50,23 @@ characters. + </p></li><li class="listitem"><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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id597252"/><p><span class="citetitle"><em class="citetitle"> ++ </p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id476684"/><p><span class="citetitle"><em class="citetitle"> + The GNU C Library +- </em>. </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="id597292"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </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="id476724"/><p><span class="citetitle"><em class="citetitle"> + Correspondence +- </em>. </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="id597318"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </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="id476750"/><p><span class="citetitle"><em class="citetitle"> + ISO/IEC 14882:1998 Programming languages - C++ +- </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id597337"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id476769"/><p><span class="citetitle"><em class="citetitle"> + ISO/IEC 9899:1999 Programming languages - C +- </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id597356"/><p><span class="biblioid"> ++ </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id476788"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) + </em>. </span><span class="copyright">Copyright © 1999 +- The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span></p></div><div class="biblioentry"><a id="id597385"/><p><span class="citetitle"><em class="citetitle"> ++ The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span></p></div><div class="biblioentry"><a id="id476817"/><p><span class="citetitle"><em class="citetitle"> + The C++ Programming Language, Special Edition + </em>. </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="id597424"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></span></p></div><div class="biblioentry"><a id="id476856"/><p><span class="citetitle"><em class="citetitle"> + Standard C++ IOStreams and Locales + </em>. </span><span class="subtitle"> + Advanced Programmer's Guide and Reference +@@ -409,39 +409,39 @@ codecvt usage. + </p></li><li class="listitem"><p> + wchar_t/char internal buffers and conversions between + internal/external buffers? +- </p></li></ul></div></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id598074"/><p><span class="citetitle"><em class="citetitle"> ++ </p></li></ul></div></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id477506"/><p><span class="citetitle"><em class="citetitle"> + The GNU C Library + </em>. </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="id598113"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></p></div><div class="biblioentry"><a id="id477546"/><p><span class="citetitle"><em class="citetitle"> + Correspondence +- </em>. </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="id598139"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </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="id477571"/><p><span class="citetitle"><em class="citetitle"> + ISO/IEC 14882:1998 Programming languages - C++ +- </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id598158"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id477590"/><p><span class="citetitle"><em class="citetitle"> + ISO/IEC 9899:1999 Programming languages - C +- </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id598177"/><p><span class="biblioid"> ++ </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id477609"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </em>. </span><span class="copyright">Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. +- . </span></p></div><div class="biblioentry"><a id="id598206"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></p></div><div class="biblioentry"><a id="id477639"/><p><span class="citetitle"><em class="citetitle"> + The C++ Programming Language, Special Edition + </em>. </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="id598245"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></span></p></div><div class="biblioentry"><a id="id477677"/><p><span class="citetitle"><em class="citetitle"> + Standard C++ IOStreams and Locales + </em>. </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="id598292"/><p><span class="biblioid"> ++ . </span></span></p></div><div class="biblioentry"><a id="id477724"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + A brief description of Normative Addendum 1 +- </em>. </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span></p></div><div class="biblioentry"><a id="id598321"/><p><span class="biblioid"> ++ </em>. </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span></p></div><div class="biblioentry"><a id="id477754"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + The Unicode HOWTO +- </em>. </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span></p></div><div class="biblioentry"><a id="id598347"/><p><span class="biblioid"> ++ </em>. </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span></p></div><div class="biblioentry"><a id="id477779"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + UTF-8 and Unicode FAQ for Unix/Linux + </em>. </span><span class="author"><span class="firstname">Markus</span> <span class="surname">Khun</span>. </span></p></div></div></div><div class="section" title="messages"><div class="titlepage"><div><div><h3 class="title"><a id="manual.localization.facet.messages"/>messages</h3></div></div></div><p> +@@ -685,37 +685,37 @@ 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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id599021"/><p><span class="citetitle"><em class="citetitle"> ++ </p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id478453"/><p><span class="citetitle"><em class="citetitle"> + The GNU C Library + </em>. </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="id599061"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></p></div><div class="biblioentry"><a id="id478493"/><p><span class="citetitle"><em class="citetitle"> + Correspondence +- </em>. </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="id599086"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </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="id478519"/><p><span class="citetitle"><em class="citetitle"> + ISO/IEC 14882:1998 Programming languages - C++ +- </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id599105"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id478538"/><p><span class="citetitle"><em class="citetitle"> + ISO/IEC 9899:1999 Programming languages - C +- </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id599124"/><p><span class="biblioid"> ++ </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id478557"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </em>. </span><span class="copyright">Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. +- . </span></p></div><div class="biblioentry"><a id="id599154"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></p></div><div class="biblioentry"><a id="id478586"/><p><span class="citetitle"><em class="citetitle"> + The C++ Programming Language, Special Edition + </em>. </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="id599192"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></span></p></div><div class="biblioentry"><a id="id478624"/><p><span class="citetitle"><em class="citetitle"> + Standard C++ IOStreams and Locales + </em>. </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="id599239"/><p><span class="biblioid"> ++ . </span></span></p></div><div class="biblioentry"><a id="id478672"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + API Specifications, Java Platform + </em>. </span><span class="pagenums">java.util.Properties, java.text.MessageFormat, + java.util.Locale, java.util.ResourceBundle +- . </span></p></div><div class="biblioentry"><a id="id599261"/><p><span class="biblioid"> ++ . </span></p></div><div class="biblioentry"><a id="id478694"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + GNU gettext tools, version 0.10.38, Native Language Support + Library and Tools. +diff --git a/libstdc++-v3/doc/html/manual/fstreams.html b/libstdc++-v3/doc/html/manual/fstreams.html +index 240443d..6c03a2b 100644 +--- a/libstdc++-v3/doc/html/manual/fstreams.html ++++ b/libstdc++-v3/doc/html/manual/fstreams.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>File Based Streams</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="io.html" title="Chapter 13. Input and Output"/><link rel="prev" href="stringstreams.html" title="Memory Based Streams"/><link rel="next" href="io_and_c.html" title="Interacting with C"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">File Based Streams</th></tr><tr><td align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>File Based Streams</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="io.html" title="Chapter 13. Input and Output"/><link rel="prev" href="stringstreams.html" title="Memory Based Streams"/><link rel="next" href="io_and_c.html" title="Interacting with C"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">File Based Streams</th></tr><tr><td align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13. + Input and Output + + </th><td align="right"> <a accesskey="n" href="io_and_c.html">Next</a></td></tr></table><hr/></div><div class="section" title="File Based Streams"><div class="titlepage"><div><div><h2 class="title"><a id="std.io.filestreams"/>File Based Streams</h2></div></div></div><div class="section" title="Copying a File"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.filestreams.copying_a_file"/>Copying a File</h3></div></div></div><p> +@@ -138,7 +138,7 @@ + </p><p> + An instructive thread from comp.lang.c++.moderated delved off into + this topic starting more or less at +- <a class="link" href="http://groups.google.com/group/comp.std.c++/browse_thread/thread/f87b4abd7954a87/946a3eb9921e382d?q=comp.std.c%2B%2B+binary+iostream#946a3eb9921e382d" target="">this</a> ++ <a class="link" href="http://groups.google.com/group/comp.std.c++/browse_thread/thread/f87b4abd7954a87/946a3eb9921e382d?q=comp.std.c%2B%2B+binary+iostream#946a3eb9921e382d">this</a> + post and continuing to the end of the thread. (The subject heading is "binary iostreams" on both comp.std.c++ + and comp.lang.c++.moderated.) Take special note of the replies by James Kanze and Dietmar Kühl. + </p><p>Briefly, the problems of byte ordering and type sizes mean that +diff --git a/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html b/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html +index 1bb3728..043cbeb 100644 +--- a/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html ++++ b/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Generalized Operations</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="numerics.html" title="Chapter 12. Numerics"/><link rel="prev" href="numerics.html" title="Chapter 12. Numerics"/><link rel="next" href="numerics_and_c.html" title="Interacting with C"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Generalized Operations</th></tr><tr><td align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><th width="60%" align="center">Chapter 12. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Generalized Operations</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="numerics.html" title="Chapter 12. Numerics"/><link rel="prev" href="numerics.html" title="Chapter 12. Numerics"/><link rel="next" href="numerics_and_c.html" title="Interacting with C"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Generalized Operations</th></tr><tr><td align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><th width="60%" align="center">Chapter 12. + Numerics + + </th><td align="right"> <a accesskey="n" href="numerics_and_c.html">Next</a></td></tr></table><hr/></div><div class="section" title="Generalized Operations"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics.generalized_ops"/>Generalized Operations</h2></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/internals.html b/libstdc++-v3/doc/html/manual/internals.html +index 3c45ab7..c6531fb 100644 +--- a/libstdc++-v3/doc/html/manual/internals.html ++++ b/libstdc++-v3/doc/html/manual/internals.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Porting to New Hardware or Operating Systems</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , internals "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance"/><link rel="prev" href="documentation_hacking.html" title="Writing and Generating Documentation"/><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">Porting to New Hardware or Operating Systems</th></tr><tr><td align="left"><a accesskey="p" href="documentation_hacking.html">Prev</a> </td><th width="60%" align="center">Appendix B. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Porting to New Hardware or Operating Systems</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , internals "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance"/><link rel="prev" href="documentation_hacking.html" title="Writing and Generating Documentation"/><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">Porting to New Hardware or Operating Systems</th></tr><tr><td align="left"><a accesskey="p" href="documentation_hacking.html">Prev</a> </td><th width="60%" align="center">Appendix B. + Porting and Maintenance + + </th><td align="right"> <a accesskey="n" href="test.html">Next</a></td></tr></table><hr/></div><div class="section" title="Porting to New Hardware or Operating Systems"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting.internals"/>Porting to New Hardware or Operating Systems</h2></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/intro.html b/libstdc++-v3/doc/html/manual/intro.html +index 3cc870e..d283df0 100644 +--- a/libstdc++-v3/doc/html/manual/intro.html ++++ b/libstdc++-v3/doc/html/manual/intro.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Part I. Introduction</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library Manual"/><link rel="prev" href="spine.html" title="The GNU C++ Library Manual"/><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. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Part I. Introduction</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="spine.html" title="The GNU C++ Library Manual"/><link rel="prev" href="spine.html" title="The GNU C++ Library Manual"/><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 align="left"><a accesskey="p" href="spine.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td align="right"> <a accesskey="n" href="status.html">Next</a></td></tr></table><hr/></div><div class="part" title="Part I. Introduction"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"/>Part I. + Introduction +- <a id="id531452" class="indexterm"/> +-</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="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="section"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><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="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="spine.html">Prev</a> </td><td align="center"><a accesskey="u" href="spine.html">Up</a></td><td align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td align="left" valign="top">The GNU C++ Library Manual </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html> ++ <a id="id400676" class="indexterm"/> ++</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="section"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><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="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="spine.html">Prev</a> </td><td align="center"><a accesskey="u" href="spine.html">Up</a></td><td align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td align="left" valign="top">The GNU C++ Library Manual </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td 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 615e5f9..01ef0ff 100644 +--- a/libstdc++-v3/doc/html/manual/io.html ++++ b/libstdc++-v3/doc/html/manual/io.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 13. Input and Output</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="numerics_and_c.html" title="Interacting with C"/><link rel="next" href="streambufs.html" title="Stream Buffers"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 13. Input and Output</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="numerics_and_c.html" title="Interacting with C"/><link rel="next" href="streambufs.html" title="Stream Buffers"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13. + Input and Output + + </th></tr><tr><td align="left"><a accesskey="p" href="numerics_and_c.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 13. Input and Output"><div class="titlepage"><div><div><h1 class="title"><a id="std.io"/> ++ </th><td align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 13. Input and Output"><div class="titlepage"><div><div><h2 class="title"><a id="std.io"/>Chapter 13. + Input and Output +- <a id="id601039" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><span class="section"><a href="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><span class="section"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="section"><a href="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><span class="section"><a href="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="section"><a href="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="section"><a href="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><span class="section"><a href="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="section"><a href="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></div><div class="section" title="Iostream Objects"><div class="titlepage"><div><div><h2 class="title"><a id="std.io.objects"/>Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to ++ <a id="id480471" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><span class="section"><a href="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><span class="section"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="section"><a href="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><span class="section"><a href="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="section"><a href="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="section"><a href="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><span class="section"><a href="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="section"><a href="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></div><div class="section" title="Iostream Objects"><div class="titlepage"><div><div><h2 class="title"><a id="std.io.objects"/>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 + <iostream> 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 +diff --git a/libstdc++-v3/doc/html/manual/io_and_c.html b/libstdc++-v3/doc/html/manual/io_and_c.html +index 9857532..6b40661 100644 +--- a/libstdc++-v3/doc/html/manual/io_and_c.html ++++ b/libstdc++-v3/doc/html/manual/io_and_c.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="io.html" title="Chapter 13. Input and Output"/><link rel="prev" href="fstreams.html" title="File Based Streams"/><link rel="next" href="atomics.html" title="Chapter 14. Atomics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="io.html" title="Chapter 13. Input and Output"/><link rel="prev" href="fstreams.html" title="File Based Streams"/><link rel="next" href="atomics.html" title="Chapter 14. Atomics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13. + Input and Output + + </th><td align="right"> <a accesskey="n" href="atomics.html">Next</a></td></tr></table><hr/></div><div class="section" title="Interacting with C"><div class="titlepage"><div><div><h2 class="title"><a id="std.io.c"/>Interacting with C</h2></div></div></div><div class="section" title="Using FILE* and file descriptors"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.c.FILE"/>Using FILE* and file descriptors</h3></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/iterators.html b/libstdc++-v3/doc/html/manual/iterators.html +index 54f76b4..8a44178 100644 +--- a/libstdc++-v3/doc/html/manual/iterators.html ++++ b/libstdc++-v3/doc/html/manual/iterators.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 10. Iterators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="containers_and_c.html" title="Interacting with C"/><link rel="next" href="algorithms.html" title="Chapter 11. Algorithms"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 10. Iterators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="containers_and_c.html" title="Interacting with C"/><link rel="next" href="algorithms.html" title="Chapter 11. Algorithms"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. + Iterators + + </th></tr><tr><td align="left"><a accesskey="p" href="containers_and_c.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 10. Iterators"><div class="titlepage"><div><div><h1 class="title"><a id="std.iterators"/> ++ </th><td align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 10. Iterators"><div class="titlepage"><div><div><h2 class="title"><a id="std.iterators"/>Chapter 10. + Iterators +- <a id="id600205" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><span class="section"><a href="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="section"><a href="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></div><div class="section" title="Predefined"><div class="titlepage"><div><div><h2 class="title"><a id="std.iterators.predefined"/>Predefined</h2></div></div></div><div class="section" title="Iterators vs. Pointers"><div class="titlepage"><div><div><h3 class="title"><a id="iterators.predefined.vs_pointers"/>Iterators vs. Pointers</h3></div></div></div><p> ++ <a id="id479637" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><span class="section"><a href="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="section"><a href="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></div><div class="section" title="Predefined"><div class="titlepage"><div><div><h2 class="title"><a id="std.iterators.predefined"/>Predefined</h2></div></div></div><div class="section" title="Iterators vs. Pointers"><div class="titlepage"><div><div><h3 class="title"><a id="iterators.predefined.vs_pointers"/>Iterators vs. Pointers</h3></div></div></div><p> + The following + FAQ <a class="link" href="../faq.html#faq.iterator_as_pod" title="7.1.">entry</a> points out that + iterators are not implemented as pointers. They are a generalization +diff --git a/libstdc++-v3/doc/html/manual/license.html b/libstdc++-v3/doc/html/manual/license.html +index 257fc5c..da021a9 100644 +--- a/libstdc++-v3/doc/html/manual/license.html ++++ b/libstdc++-v3/doc/html/manual/license.html +@@ -1,11 +1,11 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>License</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="status.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td align="right"> <a accesskey="n" href="bugs.html">Next</a></td></tr></table><hr/></div><div class="section" title="License"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status.license"/>License</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>License</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="status.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td align="right"> <a accesskey="n" href="bugs.html">Next</a></td></tr></table><hr/></div><div class="section" title="License"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status.license"/>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">questions</a>. If you have more +- questions, ask the FSF or the <a class="link" href="http://gcc.gnu.org/lists.html" target="">gcc mailing list</a>. ++ questions, ask the FSF or the <a class="link" href="http://gcc.gnu.org/lists.html">gcc mailing list</a>. + </p><div class="section" title="The Code: GPL"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.license.gpl"/>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 +@@ -16,7 +16,7 @@ GCC RUNTIME LIBRARY EXCEPTION<br/> + <br/> + Version 3.1, 31 March 2009<br/> + <br/> +-Copyright (C) 2009 <a class="link" href="http://www.fsf.org" target="">Free Software Foundation, Inc.</a><br/> ++Copyright (C) 2009 <a class="link" href="http://www.fsf.org">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/> +diff --git a/libstdc++-v3/doc/html/manual/localization.html b/libstdc++-v3/doc/html/manual/localization.html +index 80f98b5..6947a01 100644 +--- a/libstdc++-v3/doc/html/manual/localization.html ++++ b/libstdc++-v3/doc/html/manual/localization.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 8. Localization</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="strings.html" title="Chapter 7. Strings"/><link rel="next" href="facets.html" title="Facets"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 8. Localization</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="strings.html" title="Chapter 7. Strings"/><link rel="next" href="facets.html" title="Facets"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. + Localization + + </th></tr><tr><td align="left"><a accesskey="p" href="strings.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 8. Localization"><div class="titlepage"><div><div><h1 class="title"><a id="std.localization"/> ++ </th><td align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 8. Localization"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization"/>Chapter 8. + Localization +- <a id="id596473" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt></dl></dd></dl></div><div class="section" title="Locales"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization.locales"/>Locales</h2></div></div></div><div class="section" title="locale"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.locales.locale"/>locale</h3></div></div></div><p> ++ <a id="id475905" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt></dl></dd></dl></div><div class="section" title="Locales"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization.locales"/>Locales</h2></div></div></div><div class="section" title="locale"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.locales.locale"/>locale</h3></div></div></div><p> + Describes the basic locale object, including nested + classes id, facet, and the reference-counted implementation object, + class _Impl. +@@ -403,28 +403,28 @@ 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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id596835"/><p><span class="citetitle"><em class="citetitle"> ++ </p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id476268"/><p><span class="citetitle"><em class="citetitle"> + The GNU C Library + </em>. </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="id596875"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></p></div><div class="biblioentry"><a id="id476307"/><p><span class="citetitle"><em class="citetitle"> + Correspondence +- </em>. </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="id596901"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </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="id476333"/><p><span class="citetitle"><em class="citetitle"> + ISO/IEC 14882:1998 Programming languages - C++ +- </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id596920"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id476352"/><p><span class="citetitle"><em class="citetitle"> + ISO/IEC 9899:1999 Programming languages - C +- </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id596939"/><p><span class="biblioid"> ++ </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id476371"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </em>. </span><span class="copyright">Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. +- . </span></p></div><div class="biblioentry"><a id="id596968"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></p></div><div class="biblioentry"><a id="id476400"/><p><span class="citetitle"><em class="citetitle"> + The C++ Programming Language, Special Edition + </em>. </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="id597007"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></span></p></div><div class="biblioentry"><a id="id476439"/><p><span class="citetitle"><em class="citetitle"> + Standard C++ IOStreams and Locales + </em>. </span><span class="subtitle"> + Advanced Programmer's Guide and Reference +diff --git a/libstdc++-v3/doc/html/manual/make.html b/libstdc++-v3/doc/html/manual/make.html +index ed8dc67..62b1499 100644 +--- a/libstdc++-v3/doc/html/manual/make.html ++++ b/libstdc++-v3/doc/html/manual/make.html +@@ -1,7 +1,7 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Make</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="setup.html" title="Chapter 2. Setup"/><link rel="prev" href="configure.html" title="Configure"/><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">Make</th></tr><tr><td align="left"><a accesskey="p" href="configure.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr/></div><div class="section" title="Make"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup.make"/>Make</h2></div></div></div><p>If you have never done this before, you should read the basic +- <a class="link" href="http://gcc.gnu.org/install/" target="">GCC Installation ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Make</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="setup.html" title="Chapter 2. Setup"/><link rel="prev" href="configure.html" title="Configure"/><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">Make</th></tr><tr><td align="left"><a accesskey="p" href="configure.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr/></div><div class="section" title="Make"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup.make"/>Make</h2></div></div></div><p>If you have never done this before, you should read the basic ++ <a class="link" href="http://gcc.gnu.org/install/">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've +diff --git a/libstdc++-v3/doc/html/manual/memory.html b/libstdc++-v3/doc/html/manual/memory.html +index 8b52edb..5953539 100644 +--- a/libstdc++-v3/doc/html/manual/memory.html ++++ b/libstdc++-v3/doc/html/manual/memory.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Memory</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="utilities.html" title="Chapter 6. Utilities"/><link rel="prev" href="pairs.html" title="Pairs"/><link rel="next" href="traits.html" title="Traits"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory</th></tr><tr><td align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><th width="60%" align="center">Chapter 6. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Memory</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="utilities.html" title="Chapter 6. Utilities"/><link rel="prev" href="pairs.html" title="Pairs"/><link rel="next" href="traits.html" title="Traits"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory</th></tr><tr><td align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><th width="60%" align="center">Chapter 6. + Utilities + + </th><td align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr></table><hr/></div><div class="section" title="Memory"><div class="titlepage"><div><div><h2 class="title"><a id="std.util.memory"/>Memory</h2></div></div></div><p> +@@ -58,7 +58,7 @@ + The easiest way of fulfilling the requirements is to call + <code class="function">operator new</code> each time a container needs + memory, and to call <code class="function">operator delete</code> each time +- the container releases memory. This method may be <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html" target="">slower</a> ++ the container releases memory. This method may be <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html">slower</a> + than caching the allocations and re-using previously-allocated + memory, but has the advantage of working correctly across a wide + variety of hardware and operating systems, including large +@@ -93,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="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.impl"/>Implementation</h4></div></div></div><div class="section" title="Interface Design"><div class="titlepage"><div><div><h5 class="title"><a id="id593653"/>Interface Design</h5></div></div></div><p> ++ </p></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.impl"/>Implementation</h4></div></div></div><div class="section" title="Interface Design"><div class="titlepage"><div><div><h5 class="title"><a id="id473085"/>Interface Design</h5></div></div></div><p> + The only allocator interface that + is supported is the standard C++ interface. As such, all STL + containers have been adjusted, and all external allocators have +@@ -106,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="section" title="Selecting Default Allocation Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id593682"/>Selecting Default Allocation Policy</h5></div></div></div><p> ++</p></div><div class="section" title="Selecting Default Allocation Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id473115"/>Selecting Default Allocation Policy</h5></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 +@@ -120,8 +120,8 @@ + Over multiple iterations, various STL container + objects have elements inserted to some maximum amount. A variety + of allocators are tested. +- Test source for <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/sequence.cc?view=markup" target="">sequence</a> +- and <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup" target="">associative</a> ++ Test source for <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/sequence.cc?view=markup">sequence</a> ++ and <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup">associative</a> + containers. + </p></li><li class="listitem"><p> + Insertion and erasure in a multi-threaded environment. +@@ -130,20 +130,20 @@ + on a per-thread basis, as well as measuring thread contention + for memory resources. + Test source +- <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup" target="">here</a>. ++ <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup">here</a>. + </p></li><li class="listitem"><p> + A threaded producer/consumer model. + </p><p> + Test source for +- <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup" target="">sequence</a> ++ <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup">sequence</a> + and +- <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup" target="">associative</a> ++ <a class="link" href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup">associative</a> + containers. + </p></li></ol></div><p> + The current default choice for + <code class="classname">allocator</code> is + <code class="classname">__gnu_cxx::new_allocator</code>. +- </p></div><div class="section" title="Disabling Memory Caching"><div class="titlepage"><div><div><h5 class="title"><a id="id593793"/>Disabling Memory Caching</h5></div></div></div><p> ++ </p></div><div class="section" title="Disabling Memory Caching"><div class="titlepage"><div><div><h5 class="title"><a id="id473225"/>Disabling Memory Caching</h5></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 +@@ -308,29 +308,29 @@ + 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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id594244"/><p><span class="citetitle"><em class="citetitle"> ++ </p></li></ol></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id473676"/><p><span class="citetitle"><em class="citetitle"> + ISO/IEC 14882:1998 Programming languages - C++ + </em>. </span> + isoc++_1998 +- <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id594259"/><p><span class="biblioid"> ++ <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id473691"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + The Standard Librarian: What Are Allocators Good For? + </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername"> + C/C++ Users Journal +- . </span></span></p></div><div class="biblioentry"><a id="id594292"/><p><span class="biblioid"> ++ . </span></span></p></div><div class="biblioentry"><a id="id473725"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + The Hoard Memory Allocator +- </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="id594318"/><p><span class="biblioid"> ++ </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="id473750"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Reconsidering Custom Memory Allocation +- </em>. </span><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></p></div><div class="biblioentry"><a id="id594371"/><p><span class="biblioid"> ++ </em>. </span><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></p></div><div class="biblioentry"><a id="id473804"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Allocator Types + </em>. </span><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></p></div><div class="biblioentry"><a id="id594413"/><p><span class="citetitle"><em class="citetitle">The C++ Programming Language</em>. </span><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"> ++ . </span></span></p></div><div class="biblioentry"><a id="id473845"/><p><span class="citetitle"><em class="citetitle">The C++ Programming Language</em>. </span><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="id594450"/><p><span class="citetitle"><em class="citetitle">Yalloc: A Recycling C++ Allocator</em>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span></p></div></div></div><div class="section" title="auto_ptr"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.auto_ptr"/>auto_ptr</h3></div></div></div><div class="section" title="Limitations"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.limitations"/>Limitations</h4></div></div></div><p>Explaining all of the fun and delicious things that can ++ . </span></span></p></div><div class="biblioentry"><a id="id473882"/><p><span class="citetitle"><em class="citetitle">Yalloc: A Recycling C++ Allocator</em>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span></p></div></div></div><div class="section" title="auto_ptr"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.auto_ptr"/>auto_ptr</h3></div></div></div><div class="section" title="Limitations"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.limitations"/>Limitations</h4></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> +@@ -446,7 +446,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="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.impl"/>Implementation</h4></div></div></div><div class="section" title="Class Hierarchy"><div class="titlepage"><div><div><h5 class="title"><a id="id594810"/>Class Hierarchy</h5></div></div></div><p> ++ </p></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.impl"/>Implementation</h4></div></div></div><div class="section" title="Class Hierarchy"><div class="titlepage"><div><div><h5 class="title"><a id="id474243"/>Class Hierarchy</h5></div></div></div><p> + A <code class="classname">shared_ptr<T></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 +@@ -488,14 +488,14 @@ 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="section" title="Thread Safety"><div class="titlepage"><div><div><h5 class="title"><a id="id594989"/>Thread Safety</h5></div></div></div><p> ++ </p></dd></dl></div></div><div class="section" title="Thread Safety"><div class="titlepage"><div><div><h5 class="title"><a id="id474421"/>Thread Safety</h5></div></div></div><p> + C++0x-only features are: rvalue-ref/move support, allocator support, + aliasing constructor, make_shared & allocate_shared. Additionally, + the constructors taking <code class="classname">auto_ptr</code> parameters are + deprecated in C++0x mode. + </p><p> + The +-<a class="link" href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety" target="">Thread ++<a class="link" href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread + Safety</a> section of the Boost shared_ptr documentation says "shared_ptr + objects offer the same level of thread safety as built-in types." + The implementation must ensure that concurrent updates to separate shared_ptr +@@ -538,7 +538,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="section" title="Selecting Lock Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id595059"/>Selecting Lock Policy</h5></div></div></div><p> ++</p></div><div class="section" title="Selecting Lock Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id474491"/>Selecting Lock Policy</h5></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 +@@ -558,7 +558,7 @@ available policies are: + <span class="type">_S_Atomic</span> + </p><p> + Selected when GCC supports a builtin atomic compare-and-swap operation +-on the target processor (see <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html" target="">Atomic ++on the target processor (see <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html">Atomic + Builtins</a>.) The reference counts are maintained using a lock-free + algorithm and GCC's atomic builtins, which provide the required memory + synchronisation. +@@ -579,7 +579,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="section" title="Dual C++0x and TR1 Implementation"><div class="titlepage"><div><div><h5 class="title"><a id="id595181"/>Dual C++0x and TR1 Implementation</h5></div></div></div><p> ++ </p></div><div class="section" title="Dual C++0x and TR1 Implementation"><div class="titlepage"><div><div><h5 class="title"><a id="id474613"/>Dual C++0x and TR1 Implementation</h5></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. + The <code class="classname">_Sp_counted_base</code> base class is implemented in +@@ -596,7 +596,7 @@ 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 <code class="classname">_Sp_counted_base</code> and only make changes to + the C++0x version. +-</p></div><div class="section" title="Related functions and classes"><div class="titlepage"><div><div><h5 class="title"><a id="id595237"/>Related functions and classes</h5></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="section" title="Related functions and classes"><div class="titlepage"><div><div><h5 class="title"><a id="id474669"/>Related functions and classes</h5></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 +@@ -629,13 +629,13 @@ 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="section" title="Use"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.using"/>Use</h4></div></div></div><div class="section" title="Examples"><div class="titlepage"><div><div><h5 class="title"><a id="id595386"/>Examples</h5></div></div></div><p> ++ </p></dd></dl></div></div></div><div class="section" title="Use"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.using"/>Use</h4></div></div></div><div class="section" title="Examples"><div class="titlepage"><div><div><h5 class="title"><a id="id474818"/>Examples</h5></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>, + <code class="filename">testsuite/20_util/shared_ptr</code> + and + <code class="filename">testsuite/20_util/weak_ptr</code>. +- </p></div><div class="section" title="Unresolved Issues"><div class="titlepage"><div><div><h5 class="title"><a id="id595416"/>Unresolved Issues</h5></div></div></div><p> ++ </p></div><div class="section" title="Unresolved Issues"><div class="titlepage"><div><div><h5 class="title"><a id="id474848"/>Unresolved Issues</h5></div></div></div><p> + The <span class="emphasis"><em><code class="classname">shared_ptr</code> atomic access</em></span> + clause in the C++0x working draft is not implemented in GCC. + </p><p> +@@ -676,22 +676,22 @@ 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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id595509"/><p><span class="biblioid"> ++ </p></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id474942"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Improving shared_ptr for C++0x, Revision 2 + </em>. </span><span class="subtitle"> + N2351 +- . </span></p></div><div class="biblioentry"><a id="id595531"/><p><span class="biblioid"> ++ . </span></p></div><div class="biblioentry"><a id="id474963"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + C++ Standard Library Active Issues List + </em>. </span><span class="subtitle"> + N2456 +- . </span></p></div><div class="biblioentry"><a id="id595552"/><p><span class="biblioid"> ++ . </span></p></div><div class="biblioentry"><a id="id474984"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Working Draft, Standard for Programming Language C++ + </em>. </span><span class="subtitle"> + N2461 +- . </span></p></div><div class="biblioentry"><a id="id595573"/><p><span class="biblioid">shared_ptr ++ . </span></p></div><div class="biblioentry"><a id="id475006"/><p><span class="biblioid">shared_ptr + . </span><span class="citetitle"><em class="citetitle"> + Boost C++ Libraries documentation, shared_ptr + </em>. </span><span class="subtitle"> +diff --git a/libstdc++-v3/doc/html/manual/numerics.html b/libstdc++-v3/doc/html/manual/numerics.html +index 08cd13e..ccf1f26 100644 +--- a/libstdc++-v3/doc/html/manual/numerics.html ++++ b/libstdc++-v3/doc/html/manual/numerics.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 12. Numerics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="algorithms.html" title="Chapter 11. Algorithms"/><link rel="next" href="generalized_numeric_operations.html" title="Generalized Operations"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 12. Numerics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="algorithms.html" title="Chapter 11. Algorithms"/><link rel="next" href="generalized_numeric_operations.html" title="Generalized Operations"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12. + Numerics + + </th></tr><tr><td align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 12. Numerics"><div class="titlepage"><div><div><h1 class="title"><a id="std.numerics"/> ++ </th><td align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 12. Numerics"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics"/>Chapter 12. + Numerics +- <a id="id600692" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><span class="section"><a href="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="section"><a href="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><span class="section"><a href="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="section"><a href="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></div><div class="section" title="Complex"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics.complex"/>Complex</h2></div></div></div><p> ++ <a id="id480125" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><span class="section"><a href="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="section"><a href="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><span class="section"><a href="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="section"><a href="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></div><div class="section" title="Complex"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics.complex"/>Complex</h2></div></div></div><p> + </p><div class="section" title="complex Processing"><div class="titlepage"><div><div><h3 class="title"><a id="numerics.complex.processing"/>complex Processing</h3></div></div></div><p> + </p><p>Using <code class="code">complex<></code> becomes even more comple- er, sorry, + <span class="emphasis"><em>complicated</em></span>, with the not-quite-gratuitously-incompatible +@@ -16,7 +16,7 @@ + compiled a list of C++98 and C99 conflict points; his description of + C's new type versus those of C++ and how to get them playing together + nicely is +-<a class="link" href="http://david.tribble.com/text/cdiffs.htm#C99-complex" target="">here</a>. ++<a class="link" href="http://david.tribble.com/text/cdiffs.htm#C99-complex">here</a>. + </p><p><code class="code">complex<></code> is intended to be instantiated with a + floating-point type. As long as you meet that and some other basic + requirements, then the resulting instantiation has all of the usual +diff --git a/libstdc++-v3/doc/html/manual/numerics_and_c.html b/libstdc++-v3/doc/html/manual/numerics_and_c.html +index a6ad1dd..3a2fb49 100644 +--- a/libstdc++-v3/doc/html/manual/numerics_and_c.html ++++ b/libstdc++-v3/doc/html/manual/numerics_and_c.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="numerics.html" title="Chapter 12. Numerics"/><link rel="prev" href="generalized_numeric_operations.html" title="Generalized Operations"/><link rel="next" href="io.html" title="Chapter 13. Input and Output"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><th width="60%" align="center">Chapter 12. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="numerics.html" title="Chapter 12. Numerics"/><link rel="prev" href="generalized_numeric_operations.html" title="Generalized Operations"/><link rel="next" href="io.html" title="Chapter 13. Input and Output"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><th width="60%" align="center">Chapter 12. + Numerics + + </th><td align="right"> <a accesskey="n" href="io.html">Next</a></td></tr></table><hr/></div><div class="section" title="Interacting with C"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics.c"/>Interacting with C</h2></div></div></div><div class="section" title="Numerics vs. Arrays"><div class="titlepage"><div><div><h3 class="title"><a id="numerics.c.array"/>Numerics vs. Arrays</h3></div></div></div><p>One of the major reasons why FORTRAN can chew through numbers so well +diff --git a/libstdc++-v3/doc/html/manual/pairs.html b/libstdc++-v3/doc/html/manual/pairs.html +index 2409bb8..8c4dbb7 100644 +--- a/libstdc++-v3/doc/html/manual/pairs.html ++++ b/libstdc++-v3/doc/html/manual/pairs.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pairs</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="utilities.html" title="Chapter 6. Utilities"/><link rel="prev" href="utilities.html" title="Chapter 6. Utilities"/><link rel="next" href="memory.html" title="Memory"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Pairs</th></tr><tr><td align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><th width="60%" align="center">Chapter 6. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pairs</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="utilities.html" title="Chapter 6. Utilities"/><link rel="prev" href="utilities.html" title="Chapter 6. Utilities"/><link rel="next" href="memory.html" title="Memory"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Pairs</th></tr><tr><td align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><th width="60%" align="center">Chapter 6. + Utilities + + </th><td align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr></table><hr/></div><div class="section" title="Pairs"><div class="titlepage"><div><div><h2 class="title"><a id="std.util.pairs"/>Pairs</h2></div></div></div><p>The <code class="code">pair<T1,T2></code> is a simple and handy way to +diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html +index 9e186ab..9c94e26 100644 +--- a/libstdc++-v3/doc/html/manual/parallel_mode.html ++++ b/libstdc++-v3/doc/html/manual/parallel_mode.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 18. Parallel Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03ch17s04.html" title="Design"/><link rel="next" href="bk01pt03ch18s02.html" title="Semantics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 18. Parallel Mode</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch17s04.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 18. Parallel Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , parallel "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03ch17s04.html" title="Design"/><link rel="next" href="bk01pt03ch18s02.html" title="Semantics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 18. Parallel Mode</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch17s04.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="bk01pt03ch18s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 18. Parallel Mode"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.parallel_mode"/>Parallel Mode</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s05.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 ++</th><td align="right"> <a accesskey="n" href="bk01pt03ch18s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 18. Parallel Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode"/>Chapter 18. Parallel Mode</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="section"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch18s05.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 +@@ -13,11 +13,11 @@ explicit source declaration or by compiling existing sources with a + specific compiler flag. + </p><div class="section" title="Intro"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.intro"/>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 class="itemizedlist"><li class="listitem"><p><code class="function">std::accumulate</code></p></li><li class="listitem"><p><code class="function">std::adjacent_difference</code></p></li><li class="listitem"><p><code class="function">std::inner_product</code></p></li><li class="listitem"><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 class="itemizedlist"><li class="listitem"><p><code class="function">std::adjacent_find</code></p></li><li class="listitem"><p><code class="function">std::count</code></p></li><li class="listitem"><p><code class="function">std::count_if</code></p></li><li class="listitem"><p><code class="function">std::equal</code></p></li><li class="listitem"><p><code class="function">std::find</code></p></li><li class="listitem"><p><code class="function">std::find_if</code></p></li><li class="listitem"><p><code class="function">std::find_first_of</code></p></li><li class="listitem"><p><code class="function">std::for_each</code></p></li><li class="listitem"><p><code class="function">std::generate</code></p></li><li class="listitem"><p><code class="function">std::generate_n</code></p></li><li class="listitem"><p><code class="function">std::lexicographical_compare</code></p></li><li class="listitem"><p><code class="function">std::mismatch</code></p></li><li class="listitem"><p><code class="function">std::search</code></p></li><li class="listitem"><p><code class="function">std::search_n</code></p></li><li class="listitem"><p><code class="function">std::transform</code></p></li><li class="listitem"><p><code class="function">std::replace</code></p></li><li class="listitem"><p><code class="function">std::replace_if</code></p></li><li class="listitem"><p><code class="function">std::max_element</code></p></li><li class="listitem"><p><code class="function">std::merge</code></p></li><li class="listitem"><p><code class="function">std::min_element</code></p></li><li class="listitem"><p><code class="function">std::nth_element</code></p></li><li class="listitem"><p><code class="function">std::partial_sort</code></p></li><li class="listitem"><p><code class="function">std::partition</code></p></li><li class="listitem"><p><code class="function">std::random_shuffle</code></p></li><li class="listitem"><p><code class="function">std::set_union</code></p></li><li class="listitem"><p><code class="function">std::set_intersection</code></p></li><li class="listitem"><p><code class="function">std::set_symmetric_difference</code></p></li><li class="listitem"><p><code class="function">std::set_difference</code></p></li><li class="listitem"><p><code class="function">std::sort</code></p></li><li class="listitem"><p><code class="function">std::stable_sort</code></p></li><li class="listitem"><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"/>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id606616"/><p><span class="citetitle"><em class="citetitle"> ++<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p><code class="function">std::adjacent_find</code></p></li><li class="listitem"><p><code class="function">std::count</code></p></li><li class="listitem"><p><code class="function">std::count_if</code></p></li><li class="listitem"><p><code class="function">std::equal</code></p></li><li class="listitem"><p><code class="function">std::find</code></p></li><li class="listitem"><p><code class="function">std::find_if</code></p></li><li class="listitem"><p><code class="function">std::find_first_of</code></p></li><li class="listitem"><p><code class="function">std::for_each</code></p></li><li class="listitem"><p><code class="function">std::generate</code></p></li><li class="listitem"><p><code class="function">std::generate_n</code></p></li><li class="listitem"><p><code class="function">std::lexicographical_compare</code></p></li><li class="listitem"><p><code class="function">std::mismatch</code></p></li><li class="listitem"><p><code class="function">std::search</code></p></li><li class="listitem"><p><code class="function">std::search_n</code></p></li><li class="listitem"><p><code class="function">std::transform</code></p></li><li class="listitem"><p><code class="function">std::replace</code></p></li><li class="listitem"><p><code class="function">std::replace_if</code></p></li><li class="listitem"><p><code class="function">std::max_element</code></p></li><li class="listitem"><p><code class="function">std::merge</code></p></li><li class="listitem"><p><code class="function">std::min_element</code></p></li><li class="listitem"><p><code class="function">std::nth_element</code></p></li><li class="listitem"><p><code class="function">std::partial_sort</code></p></li><li class="listitem"><p><code class="function">std::partition</code></p></li><li class="listitem"><p><code class="function">std::random_shuffle</code></p></li><li class="listitem"><p><code class="function">std::set_union</code></p></li><li class="listitem"><p><code class="function">std::set_intersection</code></p></li><li class="listitem"><p><code class="function">std::set_symmetric_difference</code></p></li><li class="listitem"><p><code class="function">std::set_difference</code></p></li><li class="listitem"><p><code class="function">std::sort</code></p></li><li class="listitem"><p><code class="function">std::stable_sort</code></p></li><li class="listitem"><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"/>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id486049"/><p><span class="citetitle"><em class="citetitle"> + Parallelization of Bulk Operations for STL Dictionaries + </em>. </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="id606659"/><p><span class="citetitle"><em class="citetitle"> ++ . </span></span></p></div><div class="biblioentry"><a id="id486091"/><p><span class="citetitle"><em class="citetitle"> + The Multi-Core Standard Template Library + </em>. </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/profile_mode.html b/libstdc++-v3/doc/html/manual/profile_mode.html +index ff61b5d..3c1b2d3 100644 +--- a/libstdc++-v3/doc/html/manual/profile_mode.html ++++ b/libstdc++-v3/doc/html/manual/profile_mode.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 19. Profile Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03ch18s05.html" title="Testing"/><link rel="next" href="bk01pt03ch19s02.html" title="Design"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 19. Profile Mode</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch18s05.html">Prev</a> </td><th width="60%" align="center">Part III. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 19. Profile Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , library , profile "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="extensions.html" title="Part III. Extensions"/><link rel="prev" href="bk01pt03ch18s05.html" title="Testing"/><link rel="next" href="bk01pt03ch19s02.html" title="Design"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 19. Profile Mode</th></tr><tr><td align="left"><a accesskey="p" href="bk01pt03ch18s05.html">Prev</a> </td><th width="60%" align="center">Part III. + Extensions + +-</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 19. Profile Mode"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.profile_mode"/>Profile Mode</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></div><div class="section" title="Intro"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.intro"/>Intro</h2></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 19. Profile Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode"/>Chapter 19. Profile Mode</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="section"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></div><div class="section" title="Intro"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.intro"/>Intro</h2></div></div></div><p> + <span class="emphasis"><em>Goal: </em></span>Give performance improvement advice based on + recognition of suboptimal usage patterns of the standard library. + </p><p> +@@ -12,7 +12,7 @@ + various components at interesting entry/exit points to/from the standard + library. Process trace, recognize suboptimal patterns, give advice. + For details, see +- <a class="link" href="http://dx.doi.org/10.1109/CGO.2009.36" target="">paper presented at ++ <a class="link" href="http://dx.doi.org/10.1109/CGO.2009.36">paper presented at + CGO 2009</a>. + </p><p> + <span class="emphasis"><em>Strengths: </em></span> +@@ -138,7 +138,7 @@ vector-size: improvement = 3: call stack = 0x804842c ... + call context. + (Environment variable not supported.) + </p></li></ul></div><p> +- </p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"/>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id610508"/><p><span class="citetitle"><em class="citetitle"> ++ </p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"/>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id489940"/><p><span class="citetitle"><em class="citetitle"> + Perflint: A Context Sensitive Performance Advisor for C++ Programs + </em>. </span><span class="author"><span class="firstname">Lixia</span> <span class="surname">Liu</span>. </span><span class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span>. </span><span class="copyright">Copyright © 2009 . </span><span class="publisher"><span class="publishername"> + Proceedings of the 2009 International Symposium on Code Generation +diff --git a/libstdc++-v3/doc/html/manual/setup.html b/libstdc++-v3/doc/html/manual/setup.html +index a9ead27..e0b5cae 100644 +--- a/libstdc++-v3/doc/html/manual/setup.html ++++ b/libstdc++-v3/doc/html/manual/setup.html +@@ -1,9 +1,9 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 2. Setup</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="bugs.html">Prev</a> </td><th width="60%" align="center">Part I. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 2. Setup</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="bugs.html">Prev</a> </td><th width="60%" align="center">Part I. + Introduction + +-</th><td align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 2. Setup"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro.setup"/>Setup</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></div><p>To transform libstdc++ sources into installed include files ++</th><td align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 2. Setup"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup"/>Chapter 2. Setup</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></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. +@@ -22,9 +22,9 @@ + </p><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup.prereq"/>Prerequisites</h2></div></div></div><p> + Because libstdc++ is part of GCC, the primary source for + installation instructions is +- <a class="link" href="http://gcc.gnu.org/install/" target="">the GCC install page</a>. ++ <a class="link" href="http://gcc.gnu.org/install/">the GCC install page</a>. + In particular, list of prerequisite software needed to build the library +- <a class="link" href="http://gcc.gnu.org/install/prerequisites.html" target=""> ++ <a class="link" href="http://gcc.gnu.org/install/prerequisites.html"> + starts with those requirements.</a> The same pages also list + the tools you will need if you wish to modify the source. + </p><p> +@@ -32,7 +32,7 @@ + </p><p>As of GCC 4.0.1 the minimum version of binutils required to build + libstdc++ is <code class="code">2.15.90.0.1.1</code>. You can get snapshots + (as well as releases) of binutils from +- <a class="link" href="ftp://sources.redhat.com/pub/binutils/" target=""> ++ <a class="link" href="ftp://sources.redhat.com/pub/binutils/"> + ftp://sources.redhat.com/pub/binutils</a>. + Older releases of libstdc++ do not require such a recent version, + but to take full advantage of useful space-saving features and +diff --git a/libstdc++-v3/doc/html/manual/source_code_style.html b/libstdc++-v3/doc/html/manual/source_code_style.html +index b55ee85..ff4b4db 100644 +--- a/libstdc++-v3/doc/html/manual/source_code_style.html ++++ b/libstdc++-v3/doc/html/manual/source_code_style.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Coding Style</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="source_design_notes.html" title="Design Notes"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Coding Style</th></tr><tr><td align="left"><a accesskey="p" href="source_organization.html">Prev</a> </td><th width="60%" align="center">Appendix A. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Coding Style</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="source_design_notes.html" title="Design Notes"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Coding Style</th></tr><tr><td align="left"><a accesskey="p" href="source_organization.html">Prev</a> </td><th width="60%" align="center">Appendix A. + Contributing + + </th><td align="right"> <a accesskey="n" href="source_design_notes.html">Next</a></td></tr></table><hr/></div><div class="section" title="Coding Style"><div class="titlepage"><div><div><h2 class="title"><a id="contrib.coding_style"/>Coding Style</h2></div></div></div><p> +@@ -197,13 +197,13 @@ + it is intended to precede the recommendations of the GNU Coding<br/> + Standard, which can be referenced in full here:<br/> + <br/> +- <a class="link" href="http://www.gnu.org/prep/standards/standards.html#Formatting" target="">http://www.gnu.org/prep/standards/standards.html#Formatting</a><br/> ++ <a class="link" href="http://www.gnu.org/prep/standards/standards.html#Formatting">http://www.gnu.org/prep/standards/standards.html#Formatting</a><br/> + <br/> + The rest of this is also interesting reading, but skip the "Design<br/> + Advice" part.<br/> + <br/> + The GCC coding conventions are here, and are also useful:<br/> +- <a class="link" href="http://gcc.gnu.org/codingconventions.html" target="">http://gcc.gnu.org/codingconventions.html</a><br/> ++ <a class="link" href="http://gcc.gnu.org/codingconventions.html">http://gcc.gnu.org/codingconventions.html</a><br/> + <br/> + In addition, because it doesn't seem to be stated explicitly anywhere<br/> + else, there is an 80 column source limit.<br/> +diff --git a/libstdc++-v3/doc/html/manual/source_design_notes.html b/libstdc++-v3/doc/html/manual/source_design_notes.html +index 3d0d9f1..fab57a6 100644 +--- a/libstdc++-v3/doc/html/manual/source_design_notes.html ++++ b/libstdc++-v3/doc/html/manual/source_design_notes.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Design Notes</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="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 align="left"><a accesskey="p" href="source_code_style.html">Prev</a> </td><th width="60%" align="center">Appendix A. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Design Notes</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="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 align="left"><a accesskey="p" href="source_code_style.html">Prev</a> </td><th width="60%" align="center">Appendix A. + Contributing + + </th><td align="right"> <a accesskey="n" href="appendix_porting.html">Next</a></td></tr></table><hr/></div><div class="section" title="Design Notes"><div class="titlepage"><div><div><h2 class="title"><a id="contrib.design_notes"/>Design Notes</h2></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/source_organization.html b/libstdc++-v3/doc/html/manual/source_organization.html +index 371da57..3e17c8b 100644 +--- a/libstdc++-v3/doc/html/manual/source_organization.html ++++ b/libstdc++-v3/doc/html/manual/source_organization.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Directory Layout and Source Conventions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><th width="60%" align="center">Appendix A. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Directory Layout and Source Conventions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><th width="60%" align="center">Appendix A. + Contributing + + </th><td align="right"> <a accesskey="n" href="source_code_style.html">Next</a></td></tr></table><hr/></div><div class="section" title="Directory Layout and Source Conventions"><div class="titlepage"><div><div><h2 class="title"><a id="contrib.organization"/>Directory Layout and Source Conventions</h2></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/spine.html b/libstdc++-v3/doc/html/manual/spine.html +index 14a38c9..36225c1 100644 +--- a/libstdc++-v3/doc/html/manual/spine.html ++++ b/libstdc++-v3/doc/html/manual/spine.html +@@ -1,10 +1,10 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>The GNU C++ Library Manual</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="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 Manual</th></tr><tr><td align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr/></div><div class="book" title="The GNU C++ Library Manual"><div class="titlepage"><div><div><h1 class="title"><a id="manual-index"/>The GNU C++ Library Manual</h1></div><div><p class="copyright">Copyright © 2009, 2010 +- <a class="link" href="http://www.fsf.org" target="">FSF</a> +- </p></div><div><div class="legalnotice" title="Legal Notice"><a id="id533702"/><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>The GNU C++ Library Manual</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="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 Manual</th></tr><tr><td align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr/></div><div class="book" title="The GNU C++ Library Manual"><div class="titlepage"><div><div><h1 class="title"><a id="manual-index"/>The GNU C++ Library Manual</h1></div><div><p class="copyright">Copyright © 2009, 2010 ++ <a class="link" href="http://www.fsf.org">FSF</a> ++ </p></div><div><div class="legalnotice" title="Legal Notice"><a id="id399399"/><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. ++ </p></div></div></div><hr/></div><div class="toc"><p><strong>Table of Contents</strong></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="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="section"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><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="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="bk01pt02.html">II. +@@ -61,7 +61,7 @@ + + </a></span></dt><dt><span class="appendix"><a href="appendix_gpl.html">D. + <acronym class="acronym">GNU</acronym> 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></dl></dd></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>B.1. <a href="appendix_porting.html#id614754">Configure and Build File Dependencies</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="status.html#id533556">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#id518456">C++ 200x Implementation Status</a></dt><dt>1.3. <a href="status.html#id576790">C++ TR1 Implementation Status</a></dt><dt>1.4. <a href="status.html#id582361">C++ TR 24733 Implementation Status</a></dt><dt>3.1. <a href="using.html#id586478">C++ Command Options</a></dt><dt>3.2. <a href="using_headers.html#id586707">C++ 1998 Library Headers</a></dt><dt>3.3. <a href="using_headers.html#id587011">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.4. <a href="using_headers.html#id587217">C++ 200x Library Headers</a></dt><dt>3.5. <a href="using_headers.html#id587646">C++ 200x Library Headers for C Library Facilities</a></dt><dt>3.6. <a href="using_headers.html#id587895">C++ TR 1 Library Headers</a></dt><dt>3.7. <a href="using_headers.html#id588036">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.8. <a href="using_headers.html#id588211">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.9. <a href="using_headers.html#id588257">C++ ABI Headers</a></dt><dt>3.10. <a href="using_headers.html#id588311">Extension Headers</a></dt><dt>3.11. <a href="using_headers.html#id588608">Extension Debug Headers</a></dt><dt>3.12. <a href="using_headers.html#id588731">Extension Profile Headers</a></dt><dt>3.13. <a href="using_headers.html#id588843">Extension Parallel Headers</a></dt><dt>17.1. <a href="bk01pt03ch17s03.html#id602987">Debugging Containers</a></dt><dt>17.2. <a href="bk01pt03ch17s03.html#id603361">Debugging Containers C++0x</a></dt><dt>18.1. <a href="bk01pt03ch18s03.html#id604948">Parallel Algorithms</a></dt><dt>19.1. <a href="bk01pt03ch19s02.html#id607071">Profile Code Location</a></dt><dt>19.2. <a href="bk01pt03ch19s07.html#id607953">Profile Diagnostics</a></dt><dt>20.1. <a href="bitmap_allocator.html#id611395">Bitmap Allocator Memory Map</a></dt><dt>B.1. <a href="documentation_hacking.html#id615654">Doxygen Prerequisites</a></dt><dt>B.2. <a href="documentation_hacking.html#id616157">HTML to Doxygen Markup Comparison</a></dt><dt>B.3. <a href="documentation_hacking.html#id616319">Docbook Prerequisites</a></dt><dt>B.4. <a href="documentation_hacking.html#id616796">HTML to Docbook XML Markup Comparison</a></dt><dt>B.5. <a href="documentation_hacking.html#id616997">Docbook XML Element Use</a></dt><dt>B.6. <a href="api.html#id622712">Extension Allocators</a></dt><dt>B.7. <a href="api.html#id622942">Extension Allocators Continued</a></dt></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><td align="center"> </td><td align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td align="left" valign="top">The GNU C++ Library </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Part I. ++ </a></span></dt><dt><span class="appendix"><a href="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt></dl></dd></dl></div><div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>B.1. <a href="appendix_porting.html#id494186">Configure and Build File Dependencies</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>1.1. <a href="status.html#id410184">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#id414053">C++ 200x Implementation Status</a></dt><dt>1.3. <a href="status.html#id456195">C++ TR1 Implementation Status</a></dt><dt>1.4. <a href="status.html#id461766">C++ TR 24733 Implementation Status</a></dt><dt>3.1. <a href="using.html#id465910">C++ Command Options</a></dt><dt>3.2. <a href="using_headers.html#id466139">C++ 1998 Library Headers</a></dt><dt>3.3. <a href="using_headers.html#id466443">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.4. <a href="using_headers.html#id466649">C++ 200x Library Headers</a></dt><dt>3.5. <a href="using_headers.html#id467078">C++ 200x Library Headers for C Library Facilities</a></dt><dt>3.6. <a href="using_headers.html#id467327">C++ TR 1 Library Headers</a></dt><dt>3.7. <a href="using_headers.html#id467468">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.8. <a href="using_headers.html#id467644">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.9. <a href="using_headers.html#id467690">C++ ABI Headers</a></dt><dt>3.10. <a href="using_headers.html#id467743">Extension Headers</a></dt><dt>3.11. <a href="using_headers.html#id468041">Extension Debug Headers</a></dt><dt>3.12. <a href="using_headers.html#id468164">Extension Profile Headers</a></dt><dt>3.13. <a href="using_headers.html#id468275">Extension Parallel Headers</a></dt><dt>17.1. <a href="bk01pt03ch17s03.html#id482419">Debugging Containers</a></dt><dt>17.2. <a href="bk01pt03ch17s03.html#id482793">Debugging Containers C++0x</a></dt><dt>18.1. <a href="bk01pt03ch18s03.html#id484380">Parallel Algorithms</a></dt><dt>19.1. <a href="bk01pt03ch19s02.html#id486504">Profile Code Location</a></dt><dt>19.2. <a href="bk01pt03ch19s07.html#id487386">Profile Diagnostics</a></dt><dt>20.1. <a href="bitmap_allocator.html#id490827">Bitmap Allocator Memory Map</a></dt><dt>B.1. <a href="documentation_hacking.html#id495087">Doxygen Prerequisites</a></dt><dt>B.2. <a href="documentation_hacking.html#id495589">HTML to Doxygen Markup Comparison</a></dt><dt>B.3. <a href="documentation_hacking.html#id495751">Docbook Prerequisites</a></dt><dt>B.4. <a href="documentation_hacking.html#id496228">HTML to Docbook XML Markup Comparison</a></dt><dt>B.5. <a href="documentation_hacking.html#id496429">Docbook XML Element Use</a></dt><dt>B.6. <a href="api.html#id502145">Extension Allocators</a></dt><dt>B.7. <a href="api.html#id502375">Extension Allocators Continued</a></dt></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><td align="center"> </td><td align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td align="left" valign="top">The GNU C++ Library </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td 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 +index a9d15c9..438c1bf 100644 +--- a/libstdc++-v3/doc/html/manual/status.html ++++ b/libstdc++-v3/doc/html/manual/status.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. + Introduction + +-</th><td align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 1. Status"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro.status"/>Status</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="section"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section" title="Implementation Status"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status.iso"/>Implementation Status</h2></div></div></div><div class="section" title="C++ 1998/2003"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"/>C++ 1998/2003</h3></div></div></div><div class="section" title="Implementation Status"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"/>Implementation Status</h4></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 1. Status"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"/>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="section"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section" title="Implementation Status"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status.iso"/>Implementation Status</h2></div></div></div><div class="section" title="C++ 1998/2003"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"/>C++ 1998/2003</h3></div></div></div><div class="section" title="Implementation Status"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"/>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++ support in mainline GCC SVN, not in any + particular release. +-</p><div class="table"><a id="id533556"/><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 style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Section</th><th style="text-align: left">Description</th><th style="text-align: left">Status</th><th style="text-align: left">Comments</th></tr></thead><tbody><tr><td style="text-align: left"> ++</p><div class="table"><a id="id410184"/><p class="title"><strong>Table 1.1. C++ 1998/2003 Implementation Status</strong></p><div class="table-contents"><table summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Section</th><th style="text-align: left">Description</th><th style="text-align: left">Status</th><th style="text-align: left">Comments</th></tr></thead><tbody><tr><td style="text-align: left"> + <span class="emphasis"><em>18</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Language support</em></span> +@@ -144,8 +144,8 @@ particular release. + a get area exists will... whatever <code class="code">fflush()</code> does, I think. + </p></div></div><div class="section" title="C++ 200x"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.200x"/>C++ 200x</h3></div></div></div><p> + This table is based on the table of contents of ISO/IEC +-JTC1 SC22 WG21 Doc No: N3092 Date: 2010-03-26 +-Final Committee Draft, Standard for Programming Language C++ ++JTC1 SC22 WG21 Doc No: N3290 Date: 2011-04-11 ++Final Draft International Standard, 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 +@@ -155,13 +155,12 @@ options. 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="id518456"/><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 style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Section</th><th style="text-align: left">Description</th><th style="text-align: left">Status</th><th style="text-align: left">Comments</th></tr></thead><tbody><tr><td style="text-align: left"> ++This page describes the C++0x support in the GCC 4.6 release series. ++</p><div class="table"><a id="id414053"/><p class="title"><strong>Table 1.2. C++ 200x Implementation Status</strong></p><div class="table-contents"><table summary="C++ 200x Implementation Status" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Section</th><th style="text-align: left">Description</th><th style="text-align: left">Status</th><th style="text-align: left">Comments</th></tr></thead><tbody><tr><td style="text-align: left"> + <span class="emphasis"><em>18</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Language support</em></span> +- </td></tr><tr><td style="text-align: left">18.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">18.2</td><td style="text-align: left">Types</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing offsetof, max_align_t</td></tr><tr><td style="text-align: left">18.3</td><td style="text-align: left">Implementation properties</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.1</td><td style="text-align: left">Numeric Limits</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.1.1</td><td style="text-align: left">Class template <code class="code">numeric_limits</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.1.2</td><td style="text-align: left"><code class="code">numeric_limits</code> members</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">18.3.1.3</td><td style="text-align: left"><code class="code">float_round_style</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">18.3.1.4</td><td style="text-align: left"><code class="code">float_denorm_style</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.1.5</td><td style="text-align: left"><code class="code">numeric_limits</code> specializations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.2</td><td style="text-align: left">C Library</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.4</td><td style="text-align: left">Integer types</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.4.1</td><td style="text-align: left">Header <code class="code"><cstdint></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">18.5</td><td style="text-align: left">Start and termination</td><td style="text-align: left">Partial</td><td style="text-align: left">C library dependency for quick_exit, at_quick_exit</td></tr><tr><td style="text-align: left">18.6</td><td style="text-align: left">Dynamic memory management</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.7</td><td style="text-align: left">Type identification</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.7.1</td><td style="text-align: left">Class type_info</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.7.2</td><td style="text-align: left">Class bad_cast</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.7.3</td><td style="text-align: left">Class bad_typeid</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8</td><td style="text-align: left">Exception handling</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.1</td><td style="text-align: left">Class exception</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.2</td><td style="text-align: left">Violating exception-specifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.3</td><td style="text-align: left">Abnormal termination</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.4</td><td style="text-align: left"><code class="code">uncaught_exception</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.5</td><td style="text-align: left">Exception Propagation</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.6</td><td style="text-align: left"><code class="code">nested_exception</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.9</td><td style="text-align: left">Initializer lists</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.9.1</td><td style="text-align: left">Initializer list constructors</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.9.2</td><td style="text-align: left">Initializer list access</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">18.9.3</td><td style="text-align: left">Initializer list range access</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.10</td><td style="text-align: left">Other runtime support</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> ++ </td></tr><tr><td style="text-align: left">18.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">18.2</td><td style="text-align: left">Types</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing offsetof, max_align_t</td></tr><tr><td style="text-align: left">18.3</td><td style="text-align: left">Implementation properties</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.2</td><td style="text-align: left">Numeric Limits</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.2.3</td><td style="text-align: left">Class template <code class="code">numeric_limits</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.2.4</td><td style="text-align: left"><code class="code">numeric_limits</code> members</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">18.3.2.5</td><td style="text-align: left"><code class="code">float_round_style</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">18.3.2.6</td><td style="text-align: left"><code class="code">float_denorm_style</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.2.7</td><td style="text-align: left"><code class="code">numeric_limits</code> specializations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.3.3</td><td style="text-align: left">C Library</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.4</td><td style="text-align: left">Integer types</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.4.1</td><td style="text-align: left">Header <code class="code"><cstdint></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">18.5</td><td style="text-align: left">Start and termination</td><td style="text-align: left">Partial</td><td style="text-align: left">C library dependency for quick_exit, at_quick_exit</td></tr><tr><td style="text-align: left">18.6</td><td style="text-align: left">Dynamic memory management</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.7</td><td style="text-align: left">Type identification</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.7.1</td><td style="text-align: left">Class type_info</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.7.2</td><td style="text-align: left">Class bad_cast</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.7.3</td><td style="text-align: left">Class bad_typeid</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8</td><td style="text-align: left">Exception handling</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.1</td><td style="text-align: left">Class exception</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.2</td><td style="text-align: left">Class bad_exception</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.3</td><td style="text-align: left">Abnormal termination</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.4</td><td style="text-align: left"><code class="code">uncaught_exception</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.5</td><td style="text-align: left">Exception Propagation</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.8.6</td><td style="text-align: left"><code class="code">nested_exception</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.9</td><td style="text-align: left">Initializer lists</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.9.1</td><td style="text-align: left">Initializer list constructors</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.9.2</td><td style="text-align: left">Initializer list access</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">18.9.3</td><td style="text-align: left">Initializer list range access</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">18.10</td><td style="text-align: left">Other runtime support</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> + <span class="emphasis"><em>19</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Diagnostics</em></span> +@@ -169,12 +168,22 @@ particular release. + <span class="emphasis"><em>20</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>General utilities</em></span> +- </td></tr><tr><td style="text-align: left">20.1</td><td style="text-align: left">General</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.2</td><td style="text-align: left">Requirements</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3</td><td style="text-align: left">Utility components</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.1</td><td style="text-align: left">Operators</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.2</td><td style="text-align: left">Swap</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.3</td><td style="text-align: left"><code class="code">forward</code> and <code class="code">move</code> helpers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.4</td><td style="text-align: left">Function template <code class="code">declval</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.5</td><td style="text-align: left">Pairs</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.5.1</td><td style="text-align: left">In general</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.5.2</td><td style="text-align: left">Class template <code class="code">pair</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.5.3</td><td style="text-align: left">Tuple-like access to <code class="code">pair</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.5.5</td><td style="text-align: left">Piecewise construction</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4</td><td style="text-align: left">Tuples</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.1</td><td style="text-align: left">In general</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.2</td><td style="text-align: left">Class template <code class="code">tuple</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.5</td><td style="text-align: left">Class template <code class="code">bitset</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6</td><td style="text-align: left">Compile-time rational arithmetic</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.1</td><td style="text-align: left">Class template <code class="code">ratio</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.2</td><td style="text-align: left">Arithmetic on <code class="code">ratio</code> types</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.3</td><td style="text-align: left">Comparison of <code class="code">ratio</code> types</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.4</td><td style="text-align: left">SI types for <code class="code">ratio</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7</td><td style="text-align: left">Metaprogramming and type traits</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.1</td><td style="text-align: left">Requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.2</td><td style="text-align: left">Header <code class="code"><type_traits></code> synopsis</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.3</td><td style="text-align: left">Helper classes</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.4</td><td style="text-align: left">Unary Type Traits</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.4.1</td><td style="text-align: left">Primary type categories</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.4.2</td><td style="text-align: left">Composite type traits</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.7.4.3</td><td style="text-align: left">Type properties</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing is_trivially_copyable, is_nothrow_constructible</td></tr><tr><td style="text-align: left">20.7.5</td><td style="text-align: left">Relationships between types</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.7.6</td><td style="text-align: left">Transformations between types</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing underlying_type</td></tr><tr><td style="text-align: left">20.7.6.1</td><td style="text-align: left">Const-volatile modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.6.2</td><td style="text-align: left">Reference modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.6.3</td><td style="text-align: left">Sign modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.6.4</td><td style="text-align: left">Array modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.6.5</td><td style="text-align: left">Pointer modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.6.6</td><td style="text-align: left">Other transformations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8</td><td style="text-align: left">Function objects</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.1</td><td style="text-align: left">Definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.2</td><td style="text-align: left">Requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.3</td><td style="text-align: left">Base</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.4</td><td style="text-align: left">Class template <code class="code">reference_wrapper</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.5</td><td style="text-align: left">Arithmetic operation</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.6</td><td style="text-align: left">Comparisons</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.7</td><td style="text-align: left">Logical operations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.8</td><td style="text-align: left">Bitwise operations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.9</td><td style="text-align: left">Negators</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.10</td><td style="text-align: left">Function template <code class="code">bind</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.11</td><td style="text-align: left">Adaptors for pointers to functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.12</td><td style="text-align: left">Adaptors for pointers to members</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.8.13</td><td style="text-align: left">Function template <code class="code">mem_fn</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing overloads for reference-qualified member functions</td></tr><tr><td style="text-align: left">20.8.14</td><td style="text-align: left">Polymorphic function wrappers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.14.1</td><td style="text-align: left">Class <code class="code">bad_function_call</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.8.14.2</td><td style="text-align: left">Class template <code class="code">function</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing allocator support</td></tr><tr><td style="text-align: left">20.8.15</td><td style="text-align: left">Class template <code class="code">hash</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9</td><td style="text-align: left">Memory</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.1</td><td style="text-align: left">Allocator argument tag</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.2</td><td style="text-align: left"><code class="code">uses_allocator</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.9.3</td><td style="text-align: left">Pointer traits</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.9.4</td><td style="text-align: left">Allocator traits</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.5</td><td style="text-align: left">The default allocator</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.9.6</td><td style="text-align: left">Scoped allocator adaptor</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.9.6.1</td><td style="text-align: left">Scoped allocator adaptor member types</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.9.6.2</td><td style="text-align: left">Scoped allocator adaptor constructors</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.9.6.3</td><td style="text-align: left">Scoped allocator adaptor members</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.7</td><td style="text-align: left">Raw storage iterator</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.8</td><td style="text-align: left">Temporary buffers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.9</td><td style="text-align: left">Specialized algorithms</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.9.1</td><td style="text-align: left"><code class="code">addressof</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.9.2</td><td style="text-align: left"><code class="code">uninitialized_copy</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.9.3</td><td style="text-align: left"><code class="code">uninitialized_fill</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.9.4</td><td style="text-align: left"><code class="code">uninitialized_fill_n</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.10</td><td style="text-align: left">Class template <code class="code">unique_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.11</td><td style="text-align: left">Smart pointers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.11.1</td><td style="text-align: left">Class <code class="code">bad_weak_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.11.2</td><td style="text-align: left">Class template <code class="code">shared_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> ++ </td></tr><tr><td style="text-align: left">20.1</td><td style="text-align: left">General</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.2</td><td style="text-align: left">Utility components</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.2.1</td><td style="text-align: left">Operators</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.2.2</td><td style="text-align: left">Swap</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.2.3</td><td style="text-align: left"><code class="code">forward</code> and <code class="code">move</code> helpers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.2.4</td><td style="text-align: left">Function template <code class="code">declval</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3</td><td style="text-align: left">Pairs</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.1</td><td style="text-align: left">In general</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.2</td><td style="text-align: left">Class template <code class="code">pair</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.3</td><td style="text-align: left">Specialized algorithms</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.4</td><td style="text-align: left">Tuple-like access to <code class="code">pair</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.3.5</td><td style="text-align: left">Piecewise construction</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4</td><td style="text-align: left">Tuples</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.1</td><td style="text-align: left">In general</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.2</td><td style="text-align: left">Class template <code class="code">tuple</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.2.1</td><td style="text-align: left">Construction</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.2.2</td><td style="text-align: left">Assignment</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.2.3</td><td style="text-align: left">Swap</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.4.2.4</td><td style="text-align: left">Tuple creation functions</td><td style="text-align: left">Partial</td><td style="text-align: left"><code class="code">tuple_cat</code> should be a single variadic signature (DR 1385)</td></tr><tr><td style="text-align: left">20.4.2.5</td><td style="text-align: left">Tuple helper classes</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.2.6</td><td style="text-align: left">Element access</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.2.7</td><td style="text-align: left">Relational operators</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.4.2.8</td><td style="text-align: left">Tuple traits</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.4.2.9</td><td style="text-align: left">Tuple specialized algorithms</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.5</td><td style="text-align: left">Class template <code class="code">bitset</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.5.1</td><td style="text-align: left"><code class="code">bitset</code> constructors</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.5.2</td><td style="text-align: left"><code class="code">bitset</code> members</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.5.3</td><td style="text-align: left"><code class="code">bitset</code> hash support</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.5.4</td><td style="text-align: left"><code class="code">bitset</code> operators</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6</td><td style="text-align: left">Memory</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.1</td><td style="text-align: left">In general</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.2</td><td style="text-align: left">Header <code class="code"><memory></code> synopsis</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.6.3</td><td style="text-align: left">Pointer traits</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.6.4</td><td style="text-align: left">Pointer safety</td><td style="text-align: left">Partial</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.6.5</td><td style="text-align: left">Align</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.6</td><td style="text-align: left">Allocator argument tag</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.7</td><td style="text-align: left"><code class="code">uses_allocator</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.6.8</td><td style="text-align: left">Allocator traits</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.9</td><td style="text-align: left">The default allocator</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.10</td><td style="text-align: left">Raw storage iterator</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.11</td><td style="text-align: left">Temporary buffers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.12</td><td style="text-align: left">Specialized algorithms</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.12.1</td><td style="text-align: left"><code class="code">addressof</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.12.2</td><td style="text-align: left"><code class="code">uninitialized_copy</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.12.3</td><td style="text-align: left"><code class="code">uninitialized_fill</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.12.4</td><td style="text-align: left"><code class="code">uninitialized_fill_n</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.6.13</td><td style="text-align: left">C library</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7</td><td style="text-align: left">Smart pointers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.1</td><td style="text-align: left">Class template <code class="code">unique_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.2</td><td style="text-align: left">Shared-ownership pointers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.2.1</td><td style="text-align: left">Class <code class="code">bad_weak_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.2.2</td><td style="text-align: left">Class template <code class="code">shared_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> + <p> + Uses code from +- <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="">boost::shared_ptr</a>. ++ <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</a>. + </p> +- </td></tr><tr><td style="text-align: left">20.9.11.3</td><td style="text-align: left">Class template <code class="code">weak_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.11.4</td><td style="text-align: left">Class template <code class="code">emable_shared_from_this</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.9.11.5</td><td style="text-align: left"><code class="code">shared_ptr</code> atomic access</td><td style="text-align: left">Partial</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.11.6</td><td style="text-align: left">Hash support</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.9.12</td><td style="text-align: left">Pointer safety</td><td style="text-align: left">Partial</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.9.13</td><td style="text-align: left">Align</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.16</td><td style="text-align: left">C library</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10</td><td style="text-align: left">Time utilities</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.1</td><td style="text-align: left">Clock requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.2</td><td style="text-align: left">Time-related traits</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.2.1</td><td style="text-align: left"><code class="code">treat_as_floating_point</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.2.2</td><td style="text-align: left"><code class="code">duration_values</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.2.3</td><td style="text-align: left">Specializations of <code class="code">common_type</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.3</td><td style="text-align: left">Class template <code class="code">duration</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.4</td><td style="text-align: left">Class template <code class="code">time_point</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.5</td><td style="text-align: left">Clocks</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.5.1</td><td style="text-align: left">Class <code class="code">system_clock</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.5.2</td><td style="text-align: left">Class <code class="code">monotonic_clock</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.5.3</td><td style="text-align: left">Class <code class="code">high_resolution_clock</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11</td><td style="text-align: left">Date and time functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.12</td><td style="text-align: left">Class <code class="code">type_index</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> ++ </td></tr><tr><td style="text-align: left">20.7.2.3</td><td style="text-align: left">Class template <code class="code">weak_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.2.4</td><td style="text-align: left">Class template <code class="code">emable_shared_from_this</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.7.2.5</td><td style="text-align: left"><code class="code">shared_ptr</code> atomic access</td><td style="text-align: left">Partial</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.7.2.6</td><td style="text-align: left">Smart pointer hash support</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8</td><td style="text-align: left">Function objects</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.1</td><td style="text-align: left">Definitions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.2</td><td style="text-align: left">Requirements</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.3</td><td style="text-align: left">Class template <code class="code">reference_wrapper</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.4</td><td style="text-align: left">Arithmetic operation</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.5</td><td style="text-align: left">Comparisons</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.6</td><td style="text-align: left">Logical operations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.7</td><td style="text-align: left">Bitwise operations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.8</td><td style="text-align: left">Negators</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.9</td><td style="text-align: left">Function template <code class="code">bind</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.8.10</td><td style="text-align: left">Function template <code class="code">mem_fn</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing overloads for reference-qualified member functions</td></tr><tr><td style="text-align: left">20.8.11</td><td style="text-align: left">Polymorphic function wrappers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.8.11.1</td><td style="text-align: left">Class <code class="code">bad_function_call</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.8.11.2</td><td style="text-align: left">Class template <code class="code">function</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing allocator support</td></tr><tr><td style="text-align: left">20.8.12</td><td style="text-align: left">Class template <code class="code">hash</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9</td><td style="text-align: left">Metaprogramming and type traits</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.1</td><td style="text-align: left">Requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.2</td><td style="text-align: left">Header <code class="code"><type_traits></code> synopsis</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.3</td><td style="text-align: left">Helper classes</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.4</td><td style="text-align: left">Unary Type Traits</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.4.1</td><td style="text-align: left">Primary type categories</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.4.2</td><td style="text-align: left">Composite type traits</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.9.4.3</td><td style="text-align: left">Type properties</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing is_trivially_copyable, ++ is_assignable, is_copy_assignable, is_move_assignable, ++ is_trivially_constructible, is_trivially_default_constructible, ++ is_trivially_copy_constructible, is_trivially_move_constructible, ++ is_trivially_assignable, is_trivially_default_assignable, ++ is_trivially_copy_assignable, is_trivially_move_assignable, ++ is_trivially_destructible, ++ is_nothrow_assignable, ++ is_nothrow_copy_assignable, is_nothrow_move_assignable, ++ is_nothrow_destructible ++ </td></tr><tr><td style="text-align: left">20.9.5</td><td style="text-align: left">Type property queries</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.6</td><td style="text-align: left">Relationships between types</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.7</td><td style="text-align: left">Transformations between types</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.7.1</td><td style="text-align: left">Const-volatile modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.7.2</td><td style="text-align: left">Reference modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.7.3</td><td style="text-align: left">Sign modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.7.4</td><td style="text-align: left">Array modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.7.5</td><td style="text-align: left">Pointer modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.9.7.6</td><td style="text-align: left">Other transformations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10</td><td style="text-align: left">Compile-time rational arithmetic</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.1</td><td style="text-align: left">In general</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.2</td><td style="text-align: left">Header <code class="code"><ratio></code> synopsis</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.3</td><td style="text-align: left">Class template <code class="code">ratio</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.4</td><td style="text-align: left">Arithmetic on <code class="code">ratio</code>s</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.5</td><td style="text-align: left">Comparison of <code class="code">ratio</code>s</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.10.6</td><td style="text-align: left">SI types for <code class="code">ratio</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11</td><td style="text-align: left">Time utilities</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11.3</td><td style="text-align: left">Clock requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11.4</td><td style="text-align: left">Time-related traits</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11.4.1</td><td style="text-align: left"><code class="code">treat_as_floating_point</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11.4.2</td><td style="text-align: left"><code class="code">duration_values</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11.4.3</td><td style="text-align: left">Specializations of <code class="code">common_type</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">20.11.5</td><td style="text-align: left">Class template <code class="code">duration</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing constexpr for non-member arithmetic operations</td></tr><tr><td style="text-align: left">20.11.6</td><td style="text-align: left">Class template <code class="code">time_point</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11.7</td><td style="text-align: left">Clocks</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11.7.1</td><td style="text-align: left">Class <code class="code">system_clock</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.11.7.2</td><td style="text-align: left">Class <code class="code">steady_clock</code></td><td style="text-align: left">N</td><td style="text-align: left">Support old <code class="code">monotonic_clock</code> spec instead</td></tr><tr><td style="text-align: left">20.11.7.3</td><td style="text-align: left">Class <code class="code">high_resolution_clock</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">20.11.8</td><td style="text-align: left">Date and time functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.12</td><td style="text-align: left">Scoped allocator adaptor</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.12.1</td><td style="text-align: left">Header <code class="code"><scoped_allocator></code> synopsis</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.12.2</td><td style="text-align: left">Scoped allocator adaptor member types</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.12.3</td><td style="text-align: left">Scoped allocator adaptor constructors</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.12.4</td><td style="text-align: left">Scoped allocator adaptor members</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.12.5</td><td style="text-align: left">Scoped allocator operators</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">20.13</td><td style="text-align: left">Class <code class="code">type_index</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> + <span class="emphasis"><em>21</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Strings</em></span> +@@ -186,7 +195,7 @@ particular release. + <span class="emphasis"><em>23</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Containers</em></span> +- </td></tr><tr><td style="text-align: left">23.1</td><td style="text-align: left">General</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2</td><td style="text-align: left">Container requirements</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.1</td><td style="text-align: left">General container requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.2</td><td style="text-align: left">Data races</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.3</td><td style="text-align: left">Sequence containers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.4</td><td style="text-align: left">Associative containers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.5</td><td style="text-align: left">Unordered associative containers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3</td><td style="text-align: left">Sequence containers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.1</td><td style="text-align: left">Class template <code class="code">array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.2</td><td style="text-align: left">Class template <code class="code">deque</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.3</td><td style="text-align: left">Class template <code class="code">forward_list</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.4</td><td style="text-align: left">Class template <code class="code">list</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.5</td><td style="text-align: left">Container adaptors</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.5.1</td><td style="text-align: left">Class template <code class="code">queue</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.5.2</td><td style="text-align: left">Class template <code class="code">priority_queue</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.5.3</td><td style="text-align: left">Class template <code class="code">stack</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.6</td><td style="text-align: left">Class template <code class="code">vector</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.7</td><td style="text-align: left">Class <code class="code">vector<bool></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4</td><td style="text-align: left">Associative containers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4.1</td><td style="text-align: left">Class template <code class="code">map</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4.2</td><td style="text-align: left">Class template <code class="code">multimap</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4.3</td><td style="text-align: left">Class template <code class="code">set</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4.4</td><td style="text-align: left">Class template <code class="code">multiset</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5</td><td style="text-align: left">Unordered associative containers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5.1</td><td style="text-align: left">Class template <code class="code">unordered_map</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5.2</td><td style="text-align: left">Class template <code class="code">unordered_multimap</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5.3</td><td style="text-align: left">Class template <code class="code">unordered_set</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5.4</td><td style="text-align: left">Class template <code class="code">unordered_multiset</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> ++ </td></tr><tr><td style="text-align: left">23.1</td><td style="text-align: left">General</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2</td><td style="text-align: left">Container requirements</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.1</td><td style="text-align: left">General container requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.2</td><td style="text-align: left">Container data races</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.3</td><td style="text-align: left">Sequence containers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.4</td><td style="text-align: left">Associative containers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.2.5</td><td style="text-align: left">Unordered associative containers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3</td><td style="text-align: left">Sequence containers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.2</td><td style="text-align: left">Class template <code class="code">array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.3</td><td style="text-align: left">Class template <code class="code">deque</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.4</td><td style="text-align: left">Class template <code class="code">forward_list</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.5</td><td style="text-align: left">Class template <code class="code">list</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.6</td><td style="text-align: left">Class template <code class="code">vector</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.3.7</td><td style="text-align: left">Class <code class="code">vector<bool></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4</td><td style="text-align: left">Associative containers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4.4</td><td style="text-align: left">Class template <code class="code">map</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4.5</td><td style="text-align: left">Class template <code class="code">multimap</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4.6</td><td style="text-align: left">Class template <code class="code">set</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.4.7</td><td style="text-align: left">Class template <code class="code">multiset</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5</td><td style="text-align: left">Unordered associative containers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5.4</td><td style="text-align: left">Class template <code class="code">unordered_map</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5.5</td><td style="text-align: left">Class template <code class="code">unordered_multimap</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5.6</td><td style="text-align: left">Class template <code class="code">unordered_set</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.5.7</td><td style="text-align: left">Class template <code class="code">unordered_multiset</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.6</td><td style="text-align: left">Container adaptors</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.6.1</td><td style="text-align: left">Class template <code class="code">queue</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.6.2</td><td style="text-align: left">Class template <code class="code">priority_queue</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">23.6.3</td><td style="text-align: left">Class template <code class="code">stack</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> + <span class="emphasis"><em>24</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Iterators</em></span> +@@ -198,11 +207,14 @@ particular release. + <span class="emphasis"><em>26</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Numerics</em></span> +- </td></tr><tr><td style="text-align: left">26.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.2</td><td style="text-align: left">Numeric type requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.3</td><td style="text-align: left">The floating-point environment</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.4</td><td style="text-align: left">Complex numbers</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5</td><td style="text-align: left">Random number generation</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.1</td><td style="text-align: left">Requirements</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.2</td><td style="text-align: left">Header <code class="code"><random></code> synopsis</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.3</td><td style="text-align: left">Random number engine class templates</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.3.1</td><td style="text-align: left">Class template <code class="code">linear_congruential_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.3.2</td><td style="text-align: left">Class template <code class="code">mersenne_twister_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.3.3</td><td style="text-align: left">Class template <code class="code">subtract_with_carry_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.4</td><td style="text-align: left">Random number engine adaptor class templates</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.4.1</td><td style="text-align: left">Class template <code class="code">discard_block_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.4.2</td><td style="text-align: left">Class template <code class="code">independent_bits_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.4.3</td><td style="text-align: left">Class template <code class="code">shuffle_order_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.5</td><td style="text-align: left">Engines and engine adaptors with predefined parameters</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.6</td><td style="text-align: left">Class <code class="code">random_device</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.7</td><td style="text-align: left">Utilities</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.7.1</td><td style="text-align: left">Class <code class="code">seed_seq</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.7.2</td><td style="text-align: left">Function template <code class="code">generate_canonical</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8</td><td style="text-align: left">Random number distribution class templates</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.1</td><td style="text-align: left">Uniform distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.1.1</td><td style="text-align: left">Class template <code class="code">uniform_int_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.1.2</td><td style="text-align: left">Class template <code class="code">uniform_real_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.2</td><td style="text-align: left">Bernoulli distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.2.1</td><td style="text-align: left">Class <code class="code">bernoulli_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.2.2</td><td style="text-align: left">Class template <code class="code">binomial_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.2.3</td><td style="text-align: left">Class template <code class="code">geometric_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.2.4</td><td style="text-align: left">Class template <code class="code">negative_binomial_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3</td><td style="text-align: left">Poisson distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3.1</td><td style="text-align: left">Class template <code class="code">poisson_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3.2</td><td style="text-align: left">Class template <code class="code">exponential_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3.3</td><td style="text-align: left">Class template <code class="code">gamma_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3.4</td><td style="text-align: left">Class template <code class="code">weibull_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3.5</td><td style="text-align: left">Class template <code class="code">extreme_value_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4</td><td style="text-align: left">Normal distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.1</td><td style="text-align: left">Class template <code class="code">normal_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.2</td><td style="text-align: left">Class template <code class="code">lognormal_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.3</td><td style="text-align: left">Class template <code class="code">chi_squared_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.4</td><td style="text-align: left">Class template <code class="code">cauchy_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.5</td><td style="text-align: left">Class template <code class="code">fisher_f_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.6</td><td style="text-align: left">Class template <code class="code">student_t_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5</td><td style="text-align: left">Sampling distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5.1</td><td style="text-align: left">Class template <code class="code">discrete_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5.2</td><td style="text-align: left">Class template <code class="code">piecewise_constant_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5.3</td><td style="text-align: left">Class template <code class="code">piecewise_linear_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6</td><td style="text-align: left">Numeric arrays</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.1</td><td style="text-align: left">Header <code class="code"><valarray></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.2</td><td style="text-align: left">Class template <code class="code">valarray</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.3</td><td style="text-align: left"><code class="code">valarray</code> non-member operations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.4</td><td style="text-align: left">Class <code class="code">slice</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.5</td><td style="text-align: left">Class template <code class="code">slice_array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.6</td><td style="text-align: left">The <code class="code">gslice</code> class</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.7</td><td style="text-align: left">Class template <code class="code">gslice_array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.8</td><td style="text-align: left">Class template <code class="code">mask_array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.9</td><td style="text-align: left">Class template <code class="code">indirect_array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">26.6.10</td><td style="text-align: left"><code class="code">valarray</code> range access</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7</td><td style="text-align: left">Generalized numeric operations</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.1</td><td style="text-align: left"><code class="code">accumulate</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.2</td><td style="text-align: left"><code class="code">inner_product</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.3</td><td style="text-align: left"><code class="code">partial_sum</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.4</td><td style="text-align: left"><code class="code">adjacent_difference</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.5</td><td style="text-align: left">iota</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.8</td><td style="text-align: left">C Library</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> ++ </td></tr><tr><td style="text-align: left">26.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.2</td><td style="text-align: left">Numeric type requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.3</td><td style="text-align: left">The floating-point environment</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.4</td><td style="text-align: left">Complex numbers</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5</td><td style="text-align: left">Random number generation</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.1</td><td style="text-align: left">Requirements</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.2</td><td style="text-align: left">Header <code class="code"><random></code> synopsis</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.3</td><td style="text-align: left">Random number engine class templates</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.3.1</td><td style="text-align: left">Class template <code class="code">linear_congruential_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.3.2</td><td style="text-align: left">Class template <code class="code">mersenne_twister_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.3.3</td><td style="text-align: left">Class template <code class="code">subtract_with_carry_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.4</td><td style="text-align: left">Random number engine adaptor class templates</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.4.2</td><td style="text-align: left">Class template <code class="code">discard_block_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.4.3</td><td style="text-align: left">Class template <code class="code">independent_bits_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.4.4</td><td style="text-align: left">Class template <code class="code">shuffle_order_engine</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.5</td><td style="text-align: left">Engines and engine adaptors with predefined parameters</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.6</td><td style="text-align: left">Class <code class="code">random_device</code></td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">26.5.7</td><td style="text-align: left">Utilities</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.7.1</td><td style="text-align: left">Class <code class="code">seed_seq</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.7.2</td><td style="text-align: left">Function template <code class="code">generate_canonical</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8</td><td style="text-align: left">Random number distribution class templates</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.2</td><td style="text-align: left">Uniform distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.2.1</td><td style="text-align: left">Class template <code class="code">uniform_int_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.2.2</td><td style="text-align: left">Class template <code class="code">uniform_real_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3</td><td style="text-align: left">Bernoulli distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3.1</td><td style="text-align: left">Class <code class="code">bernoulli_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3.2</td><td style="text-align: left">Class template <code class="code">binomial_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3.3</td><td style="text-align: left">Class template <code class="code">geometric_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.3.4</td><td style="text-align: left">Class template <code class="code">negative_binomial_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4</td><td style="text-align: left">Poisson distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.1</td><td style="text-align: left">Class template <code class="code">poisson_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.2</td><td style="text-align: left">Class template <code class="code">exponential_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.3</td><td style="text-align: left">Class template <code class="code">gamma_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.4</td><td style="text-align: left">Class template <code class="code">weibull_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.4.5</td><td style="text-align: left">Class template <code class="code">extreme_value_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5</td><td style="text-align: left">Normal distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5.1</td><td style="text-align: left">Class template <code class="code">normal_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5.2</td><td style="text-align: left">Class template <code class="code">lognormal_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5.3</td><td style="text-align: left">Class template <code class="code">chi_squared_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5.4</td><td style="text-align: left">Class template <code class="code">cauchy_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5.5</td><td style="text-align: left">Class template <code class="code">fisher_f_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.5.6</td><td style="text-align: left">Class template <code class="code">student_t_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.6</td><td style="text-align: left">Sampling distributions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.6.1</td><td style="text-align: left">Class template <code class="code">discrete_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.6.2</td><td style="text-align: left">Class template <code class="code">piecewise_constant_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.5.8.6.3</td><td style="text-align: left">Class template <code class="code">piecewise_linear_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6</td><td style="text-align: left">Numeric arrays</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.1</td><td style="text-align: left">Header <code class="code"><valarray></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">26.6.2</td><td style="text-align: left">Class template <code class="code">valarray</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing move and swap operations</td></tr><tr><td style="text-align: left">26.6.3</td><td style="text-align: left"><code class="code">valarray</code> non-member operations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.4</td><td style="text-align: left">Class <code class="code">slice</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.5</td><td style="text-align: left">Class template <code class="code">slice_array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.6</td><td style="text-align: left">The <code class="code">gslice</code> class</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.7</td><td style="text-align: left">Class template <code class="code">gslice_array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.8</td><td style="text-align: left">Class template <code class="code">mask_array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.9</td><td style="text-align: left">Class template <code class="code">indirect_array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.6.10</td><td style="text-align: left"><code class="code">valarray</code> range access</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7</td><td style="text-align: left">Generalized numeric operations</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.1</td><td style="text-align: left">Header <code class="code"><numeric></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.2</td><td style="text-align: left"><code class="code">accumulate</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.3</td><td style="text-align: left"><code class="code">inner_product</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.4</td><td style="text-align: left"><code class="code">partial_sum</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.5</td><td style="text-align: left"><code class="code">adjacent_difference</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.7.6</td><td style="text-align: left">iota</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">26.8</td><td style="text-align: left">C Library</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> + <span class="emphasis"><em>27</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Input/output library</em></span> +- </td></tr><tr><td style="text-align: left">27.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.2</td><td style="text-align: left">Iostreams requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.2.1</td><td style="text-align: left">Imbue Limitations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.2.2</td><td style="text-align: left">Positioning Type Limitations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.2.3</td><td style="text-align: left">Thread safety</td><td style="text-align: left">Partial</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.3</td><td style="text-align: left">Forward declarations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.4</td><td style="text-align: left">Standard iostream objects</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.4.1</td><td style="text-align: left">Narrow stream objects</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.4.2</td><td style="text-align: left">Wide stream objects</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.5</td><td style="text-align: left">Iostreams base classes</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing move and swap operations</td></tr><tr><td style="text-align: left">27.6</td><td style="text-align: left">Stream buffers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.7</td><td style="text-align: left">Formatting and manipulators</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing move and swap operations</td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.8</td><td style="text-align: left">String-based streams</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing move and swap operations</td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.9</td><td style="text-align: left">File-based streams</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing move and swap operations</td></tr><tr><td style="text-align: left"> ++ </td></tr><tr><td style="text-align: left">27.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.2</td><td style="text-align: left">Iostreams requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.2.1</td><td style="text-align: left">Imbue Limitations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.2.2</td><td style="text-align: left">Positioning Type Limitations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.2.3</td><td style="text-align: left">Thread safety</td><td style="text-align: left">Partial</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.3</td><td style="text-align: left">Forward declarations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.4</td><td style="text-align: left">Standard iostream objects</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.4.1</td><td style="text-align: left">Overview</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.4.2</td><td style="text-align: left">Narrow stream objects</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">27.4.3</td><td style="text-align: left">Wide stream objects</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.5</td><td style="text-align: left">Iostreams base classes</td><td style="text-align: left">Partial</td><td style="text-align: left"> ++ Missing move and swap operations on <code class="code">basic_ios</code>. Missing ++ <code class="code">make_error_code</code> and <code class="code">make_error_condition</code>. ++ </td></tr><tr><td style="text-align: left">27.6</td><td style="text-align: left">Stream buffers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.7</td><td style="text-align: left">Formatting and manipulators</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing move and swap operations</td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.8</td><td style="text-align: left">String-based streams</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing move and swap operations</td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">27.9</td><td style="text-align: left">File-based streams</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing move and swap operations</td></tr><tr><td style="text-align: left"> + <span class="emphasis"><em>28</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Regular expressions</em></span> +@@ -210,15 +222,18 @@ particular release. + <span class="emphasis"><em>29</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Atomic operations</em></span> +- </td></tr><tr><td style="text-align: left">29.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">29.2</td><td style="text-align: left">Header <code class="code"><atomic></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">29.3</td><td style="text-align: left">Order and consistency</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">29.4</td><td style="text-align: left">Lock-free property</td><td style="text-align: left">Y</td><td style="text-align: left">Based on _GLIBCXX_ATOMIC_PROPERTY</td></tr><tr><td style="text-align: left">29.5</td><td style="text-align: left">Atomic types</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">29.5.1</td><td style="text-align: left">Integral types</td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">29.5.2</td><td style="text-align: left">Address types</td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">29.5.3</td><td style="text-align: left">Generic types</td><td style="text-align: left">Y</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">29.6</td><td style="text-align: left">Operations on atomic types</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">29.7</td><td style="text-align: left">Flag Type and operations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">29.8</td><td style="text-align: left">Fences</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> ++ </td></tr><tr><td style="text-align: left">29.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">29.2</td><td style="text-align: left">Header <code class="code"><atomic></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">29.3</td><td style="text-align: left">Order and consistency</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">29.4</td><td style="text-align: left">Lock-free property</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing <code class="code">ATOMIC_BOOL_LOCK_FREE</code> and ++ <code class="code">ATOMIC_POINTER_LOCK_FREE</code>. ++ Based on _GLIBCXX_ATOMIC_PROPERTY ++ </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">29.5</td><td style="text-align: left">Atomic types</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing constexpr</td></tr><tr><td style="text-align: left">29.6</td><td style="text-align: left">Operations on atomic types</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">29.7</td><td style="text-align: left">Flag Type and operations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">29.8</td><td style="text-align: left">Fences</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"> + <span class="emphasis"><em>30</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Thread support</em></span> +- </td></tr><tr><td style="text-align: left">30.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.2</td><td style="text-align: left">Requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.3</td><td style="text-align: left">Threads</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.3.1</td><td style="text-align: left">Class <code class="code">thread</code></td><td style="text-align: left">Partial</td><td style="text-align: left"><code class="code">thread::id</code> is not trivially copyable</td></tr><tr><td style="text-align: left">30.3.2</td><td style="text-align: left">Namespace <code class="code">this_thread</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4</td><td style="text-align: left">Mutual exclusion</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1</td><td style="text-align: left">Mutex requirements</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1.1</td><td style="text-align: left">Class <code class="code">mutex</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1.2</td><td style="text-align: left">Class <code class="code">recursive_mutex</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.2</td><td style="text-align: left">Timed mutex requirements</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.2.1</td><td style="text-align: left">Class <code class="code">timed_mutex</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.2.2</td><td style="text-align: left">Class <code class="code">recursive_timed_mutex</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.3</td><td style="text-align: left">Locks</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.3.1</td><td style="text-align: left">Class template <code class="code">lock_guard</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.3.2</td><td style="text-align: left">Class template <code class="code">unique_lock</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.4</td><td style="text-align: left">Generic locking algorithms</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.5</td><td style="text-align: left">Call once</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.5.1</td><td style="text-align: left"><code class="code">once_flag</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.5.2</td><td style="text-align: left"><code class="code">call_once</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.5</td><td style="text-align: left">Condition variables</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing notify_all_at_thread_exit</td></tr><tr><td style="text-align: left">30.5.1</td><td style="text-align: left">Class <code class="code">condition_variable</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.5.2</td><td style="text-align: left">Class <code class="code">condition_variable_any</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6</td><td style="text-align: left">Futures</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6.1</td><td style="text-align: left">Overview</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6.2</td><td style="text-align: left">Error handling</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6.3</td><td style="text-align: left">Class <code class="code">future_error</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6.4</td><td style="text-align: left">Associated asynchronous state</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.6.5</td><td style="text-align: left">Class template <code class="code">promise</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing set_*_at_thread_exit</td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.6.6</td><td style="text-align: left">Class template <code class="code">future</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing future_status and future::share()</td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.6.7</td><td style="text-align: left">Class template <code class="code">shared_future</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing future_status</td></tr><tr><td style="text-align: left">30.6.9</td><td style="text-align: left">Function template <code class="code">async</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.6.10</td><td style="text-align: left">Class template <code class="code">packaged_task</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing make_ready_at_thread_exit</td></tr><tr><td style="text-align: left"> ++ </td></tr><tr><td style="text-align: left">30.1</td><td style="text-align: left">General</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.2</td><td style="text-align: left">Requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.3</td><td style="text-align: left">Threads</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.3.1</td><td style="text-align: left">Class <code class="code">thread</code></td><td style="text-align: left">Partial</td><td style="text-align: left"><code class="code">thread::id</code> comparisons not well-defined</td></tr><tr><td style="text-align: left">30.3.2</td><td style="text-align: left">Namespace <code class="code">this_thread</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4</td><td style="text-align: left">Mutual exclusion</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1</td><td style="text-align: left">Mutex requirements</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1.1</td><td style="text-align: left">In general</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1.2</td><td style="text-align: left">Mutex types</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1.2.1</td><td style="text-align: left">Class <code class="code">mutex</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1.2.2</td><td style="text-align: left">Class <code class="code">recursive_mutex</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1.3</td><td style="text-align: left">Timed mutex types</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1.3.1</td><td style="text-align: left">Class <code class="code">timed_mutex</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.1.3.2</td><td style="text-align: left">Class <code class="code">recursive_timed_mutex</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.2</td><td style="text-align: left">Locks</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.2.1</td><td style="text-align: left">Class template <code class="code">lock_guard</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.2.2</td><td style="text-align: left">Class template <code class="code">unique_lock</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.3</td><td style="text-align: left">Generic locking algorithms</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.4</td><td style="text-align: left">Call once</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.4.1</td><td style="text-align: left">Struct <code class="code">once_flag</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.4.4.2</td><td style="text-align: left">Function <code class="code">call_once</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.5</td><td style="text-align: left">Condition variables</td><td style="text-align: left">Partial</td><td style="text-align: left">Missing notify_all_at_thread_exit</td></tr><tr><td style="text-align: left">30.5.1</td><td style="text-align: left">Class <code class="code">condition_variable</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.5.2</td><td style="text-align: left">Class <code class="code">condition_variable_any</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6</td><td style="text-align: left">Futures</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6.1</td><td style="text-align: left">Overview</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6.2</td><td style="text-align: left">Error handling</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6.3</td><td style="text-align: left">Class <code class="code">future_error</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">30.6.4</td><td style="text-align: left">Shared state</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.6.5</td><td style="text-align: left">Class template <code class="code">promise</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing set_*_at_thread_exit</td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.6.6</td><td style="text-align: left">Class template <code class="code">future</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing future_status and future::share()</td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.6.7</td><td style="text-align: left">Class template <code class="code">shared_future</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing future_status</td></tr><tr><td style="text-align: left">30.6.8</td><td style="text-align: left">Function template <code class="code">async</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #B0B0B0"><td style="text-align: left">30.6.9</td><td style="text-align: left">Class template <code class="code">packaged_task</code></td><td style="text-align: left">Partial</td><td style="text-align: left">Missing make_ready_at_thread_exit</td></tr><tr><td style="text-align: left"> + <span class="emphasis"><em>Appendix D</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Compatibility features</em></span> +- </td></tr><tr><td style="text-align: left">D.1</td><td style="text-align: left">Increment operator with <code class="code">bool</code> operand</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.2</td><td style="text-align: left"><code class="code">static</code> keyword</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.3</td><td style="text-align: left">Access declarations</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.4</td><td style="text-align: left"><code class="code">register</code> keyword</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.5</td><td style="text-align: left">Dynamic exception specifications</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.6</td><td style="text-align: left">C standard library headers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.7</td><td style="text-align: left">Old iostreams members</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.8</td><td style="text-align: left">char* streams</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.9</td><td style="text-align: left">Binders</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.10</td><td style="text-align: left"><code class="code">auto_ptr</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr></tbody></table></div></div><br class="table-break"/></div><div class="section" title="C++ TR1"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"/>C++ TR1</h3></div></div></div><p> ++ </td></tr><tr><td style="text-align: left">D.1</td><td style="text-align: left">Increment operator with <code class="code">bool</code> operand</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.2</td><td style="text-align: left"><code class="code">register</code> keyword</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.3</td><td style="text-align: left">Implicit declaration of copy functions</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.4</td><td style="text-align: left">Dynamic exception specifications</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.5</td><td style="text-align: left">C standard library headers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.6</td><td style="text-align: left">Old iostreams members</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.7</td><td style="text-align: left"><code class="code">char*</code> streams</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.8</td><td style="text-align: left">Function objects</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.9</td><td style="text-align: left">Binders</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.10</td><td style="text-align: left"><code class="code">auto_ptr</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">D.11</td><td style="text-align: left">Violating exception-specifications</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr></tbody></table></div></div><br class="table-break"/></div><div class="section" title="C++ TR1"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"/>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 +@@ -229,10 +244,10 @@ In this implementation the header names are prefixed by + </p><p> + This page describes the TR1 support in mainline GCC SVN, not in any particular + release. +-</p><div class="table"><a id="id576790"/><p class="title"><b>Table 1.3. C++ TR1 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Section</th><th style="text-align: left">Description</th><th style="text-align: left">Status</th><th style="text-align: left">Comments</th></tr></thead><tbody><tr><td style="text-align: left"><span class="emphasis"><em>2</em></span></td><td colspan="3" style="text-align: left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td style="text-align: left">2.1</td><td style="text-align: left">Reference wrappers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.1</td><td style="text-align: left">Additions to header <code class="code"><functional></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2</td><td style="text-align: left">Class template <code class="code">reference_wrapper</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.1</td><td style="text-align: left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.2</td><td style="text-align: left"><code class="code">reference_wrapper</code> assignment</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.3</td><td style="text-align: left"><code class="code">reference_wrapper</code> access</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.4</td><td style="text-align: left"><code class="code">reference_wrapper</code> invocation</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.5</td><td style="text-align: left"><code class="code">reference_wrapper</code> helper functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2</td><td style="text-align: left">Smart pointers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.1</td><td style="text-align: left">Additions to header <code class="code"><memory></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.2</td><td style="text-align: left">Class <code class="code">bad_weak_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3</td><td style="text-align: left">Class template <code class="code">shared_ptr</code></td><td style="text-align: left"> </td><td style="text-align: left"> ++</p><div class="table"><a id="id456195"/><p class="title"><strong>Table 1.3. C++ TR1 Implementation Status</strong></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Section</th><th style="text-align: left">Description</th><th style="text-align: left">Status</th><th style="text-align: left">Comments</th></tr></thead><tbody><tr><td style="text-align: left"><span class="emphasis"><em>2</em></span></td><td colspan="3" style="text-align: left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td style="text-align: left">2.1</td><td style="text-align: left">Reference wrappers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.1</td><td style="text-align: left">Additions to header <code class="code"><functional></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2</td><td style="text-align: left">Class template <code class="code">reference_wrapper</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.1</td><td style="text-align: left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.2</td><td style="text-align: left"><code class="code">reference_wrapper</code> assignment</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.3</td><td style="text-align: left"><code class="code">reference_wrapper</code> access</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.4</td><td style="text-align: left"><code class="code">reference_wrapper</code> invocation</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.1.2.5</td><td style="text-align: left"><code class="code">reference_wrapper</code> helper functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2</td><td style="text-align: left">Smart pointers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.1</td><td style="text-align: left">Additions to header <code class="code"><memory></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.2</td><td style="text-align: left">Class <code class="code">bad_weak_ptr</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3</td><td style="text-align: left">Class template <code class="code">shared_ptr</code></td><td style="text-align: left"> </td><td style="text-align: left"> + <p> + Uses code from +- <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="">boost::shared_ptr</a>. ++ <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</a>. + </p> + </td></tr><tr><td style="text-align: left">2.2.3.1</td><td style="text-align: left"><code class="code">shared_ptr</code> constructors</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3.2</td><td style="text-align: left"><code class="code">shared_ptr</code> destructor</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3.3</td><td style="text-align: left"><code class="code">shared_ptr</code> assignment</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3.4</td><td style="text-align: left"><code class="code">shared_ptr</code> modifiers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3.5</td><td style="text-align: left"><code class="code">shared_ptr</code> observers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3.6</td><td style="text-align: left"><code class="code">shared_ptr</code> comparison</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3.7</td><td style="text-align: left"><code class="code">shared_ptr</code> I/O</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3.8</td><td style="text-align: left"><code class="code">shared_ptr</code> specialized algorithms</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3.9</td><td style="text-align: left"><code class="code">shared_ptr</code> casts</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.3.10</td><td style="text-align: left"><code class="code">get_deleter</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.4</td><td style="text-align: left">Class template <code class="code">weak_ptr</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.4.1</td><td style="text-align: left"><code class="code">weak_ptr</code> constructors</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.4.2</td><td style="text-align: left"><code class="code">weak_ptr</code> destructor</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.4.3</td><td style="text-align: left"><code class="code">weak_ptr</code> assignment</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.4.4</td><td style="text-align: left"><code class="code">weak_ptr</code> modifiers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.4.5</td><td style="text-align: left"><code class="code">weak_ptr</code> observers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.4.6</td><td style="text-align: left"><code class="code">weak_ptr</code> comparison</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.4.7</td><td style="text-align: left"><code class="code">weak_ptr</code> specialized algorithms</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">2.2.5</td><td style="text-align: left">Class template <code class="code">enable_shared_from_this</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><span class="emphasis"><em>3</em></span></td><td colspan="3" style="text-align: left"><span class="emphasis"><em>Function Objects</em></span></td></tr><tr><td style="text-align: left">3.1</td><td style="text-align: left">Definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.2</td><td style="text-align: left">Additions to <code class="code"><functional> synopsis</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.3</td><td style="text-align: left">Requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.4</td><td style="text-align: left">Function return types</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.5</td><td style="text-align: left">Function template <code class="code">mem_fn</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.6</td><td style="text-align: left">Function object binders</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.6.1</td><td style="text-align: left">Class template <code class="code">is_bind_expression</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.6.2</td><td style="text-align: left">Class template <code class="code">is_placeholder</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.6.3</td><td style="text-align: left">Function template <code class="code">bind</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.6.4</td><td style="text-align: left">Placeholders</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7</td><td style="text-align: left">Polymorphic function wrappers</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.1</td><td style="text-align: left">Class <code class="code">bad_function_call</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.1.1</td><td style="text-align: left"><code class="code">bad_function_call</code> constructor</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.2</td><td style="text-align: left">Class template <code class="code">function</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.2.1</td><td style="text-align: left"><code class="code">function</code> construct/copy/destroy</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.2.2</td><td style="text-align: left"><code class="code">function</code> modifiers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.2.3</td><td style="text-align: left"><code class="code">function</code> capacity</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.2.4</td><td style="text-align: left"><code class="code">function</code> invocation</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.2.5</td><td style="text-align: left"><code class="code">function</code> target access</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.2.6</td><td style="text-align: left">undefined operators</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.2.7</td><td style="text-align: left">null pointer comparison operators</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">3.7.2.8</td><td style="text-align: left">specialized algorithms</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><span class="emphasis"><em>4</em></span></td><td colspan="3" style="text-align: left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td style="text-align: left">4.1</td><td style="text-align: left">Requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.2</td><td style="text-align: left">Header <code class="code"><type_traits></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.3</td><td style="text-align: left">Helper classes</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.4</td><td style="text-align: left">General Requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.5</td><td style="text-align: left">Unary Type Traits</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.5.1</td><td style="text-align: left">Primary Type Categories</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.5.2</td><td style="text-align: left">Composite type traits</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.5.3</td><td style="text-align: left">Type properties</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.6</td><td style="text-align: left">Relationships between types</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.7</td><td style="text-align: left">Transformations between types</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.7.1</td><td style="text-align: left">Const-volatile modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.7.2</td><td style="text-align: left">Reference modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.7.3</td><td style="text-align: left">Array modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.7.4</td><td style="text-align: left">Pointer modifications</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.8</td><td style="text-align: left">Other transformations</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">4.9</td><td style="text-align: left">Implementation requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><span class="emphasis"><em>5</em></span></td><td colspan="3" style="text-align: left"><span class="emphasis"><em>Numerical Facilities</em></span></td></tr><tr><td style="text-align: left">5.1</td><td style="text-align: left">Random number generation</td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.1</td><td style="text-align: left">Requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.2</td><td style="text-align: left">Header <code class="code"><random></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.3</td><td style="text-align: left">Class template <code class="code">variate_generator</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.4</td><td style="text-align: left">Random number engine class templates</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.4.1</td><td style="text-align: left">Class template <code class="code">linear_congruential</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.4.2</td><td style="text-align: left">Class template <code class="code">mersenne_twister</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.4.3</td><td style="text-align: left">Class template <code class="code">subtract_with_carry</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.4.4</td><td style="text-align: left">Class template <code class="code">subtract_with_carry_01</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.4.5</td><td style="text-align: left">Class template <code class="code">discard_block</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.4.6</td><td style="text-align: left">Class template <code class="code">xor_combine</code></td><td style="text-align: left">Y</td><td style="text-align: left">operator()() per N2079</td></tr><tr><td style="text-align: left">5.1.5</td><td style="text-align: left">Engines with predefined parameters</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.6</td><td style="text-align: left">Class <code class="code">random_device</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7</td><td style="text-align: left">Random distribution class templates</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7.1</td><td style="text-align: left">Class template <code class="code">uniform_int</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7.2</td><td style="text-align: left">Class <code class="code">bernoulli_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7.3</td><td style="text-align: left">Class template <code class="code">geometric_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7.4</td><td style="text-align: left">Class template <code class="code">poisson_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7.5</td><td style="text-align: left">Class template <code class="code">binomial_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7.6</td><td style="text-align: left">Class template <code class="code">uniform_real</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7.7</td><td style="text-align: left">Class template <code class="code">exponential_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7.8</td><td style="text-align: left">Class template <code class="code">normal_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.1.7.9</td><td style="text-align: left">Class template <code class="code">gamma_distribution</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2</td><td style="text-align: left">Mathematical special functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1</td><td style="text-align: left">Additions to header <code class="code"><cmath></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.1</td><td style="text-align: left">associated Laguerre polynomials</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.2</td><td style="text-align: left">associated Legendre functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.3</td><td style="text-align: left">beta function</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.4</td><td style="text-align: left">(complete) elliptic integral of the first kind</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.5</td><td style="text-align: left">(complete) elliptic integral of the second kind</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.6</td><td style="text-align: left">(complete) elliptic integral of the third kind</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.7</td><td style="text-align: left">confluent hypergeometric functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.8</td><td style="text-align: left">regular modified cylindrical Bessel functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.9</td><td style="text-align: left">cylindrical Bessel functions (of the first kind)</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.10</td><td style="text-align: left">irregular modified cylindrical Bessel functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.11</td><td style="text-align: left">cylindrical Neumann functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.12</td><td style="text-align: left">(incomplete) elliptic integral of the first kind</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.13</td><td style="text-align: left">(incomplete) elliptic integral of the second kind</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.14</td><td style="text-align: left">(incomplete) elliptic integral of the third kind</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.15</td><td style="text-align: left">exponential integral</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.16</td><td style="text-align: left">Hermite polynomials</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.17</td><td style="text-align: left">hypergeometric functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.18</td><td style="text-align: left">Laguerre polynomials</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.19</td><td style="text-align: left">Legendre polynomials</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.20</td><td style="text-align: left">Riemann zeta function</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.21</td><td style="text-align: left">spherical Bessel functions (of the first kind)</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.22</td><td style="text-align: left">spherical associated Legendre functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.1.23</td><td style="text-align: left">spherical Neumann functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">5.2.2</td><td style="text-align: left">Additions to header <code class="code"><math.h></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><span class="emphasis"><em>6</em></span></td><td colspan="3" style="text-align: left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td style="text-align: left">6.1</td><td style="text-align: left">Tuple types</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.1.1</td><td style="text-align: left">Header <code class="code"><tuple></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.1.2</td><td style="text-align: left">Additions to header <code class="code"><utility></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.1.3</td><td style="text-align: left">Class template <code class="code">tuple</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.1.3.1</td><td style="text-align: left">Construction</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.1.3.2</td><td style="text-align: left">Tuple creation functions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.1.3.3</td><td style="text-align: left">Tuple helper classes</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.1.3.4</td><td style="text-align: left">Element access</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.1.3.5</td><td style="text-align: left">Relational operators</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.1.4</td><td style="text-align: left">Pairs</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.2</td><td style="text-align: left">Fixed size array</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.2.1</td><td style="text-align: left">Header <code class="code"><array></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.2.2</td><td style="text-align: left">Class template <code class="code">array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.2.2.1</td><td style="text-align: left"><code class="code">array</code> constructors, copy, and assignment</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.2.2.2</td><td style="text-align: left"><code class="code">array</code> specialized algorithms</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.2.2.3</td><td style="text-align: left"><code class="code">array</code> size</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.2.2.4</td><td style="text-align: left">Zero sized <code class="code">array</code>s</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.2.2.5</td><td style="text-align: left">Tuple interface to class template <code class="code">array</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3</td><td style="text-align: left">Unordered associative containers</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.1</td><td style="text-align: left">Unordered associative container requirements</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.1.1</td><td style="text-align: left">Exception safety guarantees</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.2</td><td style="text-align: left">Additions to header <code class="code"><functional></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.3</td><td style="text-align: left">Class template <code class="code">hash</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4</td><td style="text-align: left">Unordered associative container classes</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.1</td><td style="text-align: left">Header <code class="code"><unordered_set></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.2</td><td style="text-align: left">Header <code class="code"><unordered_map></code> synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.3</td><td style="text-align: left">Class template <code class="code">unordered_set</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.3.1</td><td style="text-align: left"><code class="code">unordered_set</code> constructors</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.3.2</td><td style="text-align: left"><code class="code">unordered_set</code> swap</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.4</td><td style="text-align: left">Class template <code class="code">unordered_map</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.4.1</td><td style="text-align: left"><code class="code">unordered_map</code> constructors</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.4.2</td><td style="text-align: left"><code class="code">unordered_map</code> element access</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.4.3</td><td style="text-align: left"><code class="code">unordered_map</code> swap</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.5</td><td style="text-align: left">Class template <code class="code">unordered_multiset</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.5.1</td><td style="text-align: left"><code class="code">unordered_multiset</code> constructors</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.5.2</td><td style="text-align: left"><code class="code">unordered_multiset</code> swap</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.6</td><td style="text-align: left">Class template <code class="code">unordered_multimap</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.6.1</td><td style="text-align: left"><code class="code">unordered_multimap</code> constructors</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">6.3.4.6.2</td><td style="text-align: left"><code class="code">unordered_multimap</code> swap</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><span class="emphasis"><em>7</em></span></td><td colspan="3" style="text-align: left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.1</td><td style="text-align: left">Definitions</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.2</td><td style="text-align: left">Requirements</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.3</td><td style="text-align: left">Regular expressions summary</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.4</td><td style="text-align: left">Header <code class="code"><regex></code> synopsis</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.5</td><td style="text-align: left">Namespace <code class="code">tr1::regex_constants</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.5.1</td><td style="text-align: left">Bitmask Type <code class="code">syntax_option_type</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.5.2</td><td style="text-align: left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.5.3</td><td style="text-align: left">Implementation defined <code class="code">error_type</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.6</td><td style="text-align: left">Class <code class="code">regex_error</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.7</td><td style="text-align: left">Class template <code class="code">regex_traits</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.8</td><td style="text-align: left">Class template <code class="code">basic_regex</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.8.1</td><td style="text-align: left"><code class="code">basic_regex</code> constants</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.8.2</td><td style="text-align: left"><code class="code">basic_regex</code> constructors</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.8.3</td><td style="text-align: left"><code class="code">basic_regex</code> assign</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.8.4</td><td style="text-align: left"><code class="code">basic_regex</code> constant operations</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.8.5</td><td style="text-align: left"><code class="code">basic_regex</code> locale</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.8.6</td><td style="text-align: left"><code class="code">basic_regex</code> swap</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.8.7</td><td style="text-align: left"><code class="code">basic_regex</code> non-member functions</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.8.7.1</td><td style="text-align: left"><code class="code">basic_regex</code> non-member swap</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.9</td><td style="text-align: left">Class template <code class="code">sub_match</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.9.1</td><td style="text-align: left"><code class="code">sub_match</code> members</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.9.2</td><td style="text-align: left"><code class="code">sub_match</code> non-member operators</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.10</td><td style="text-align: left">Class template <code class="code">match_results</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.10.1</td><td style="text-align: left"><code class="code">match_results</code> constructors</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.10.2</td><td style="text-align: left"><code class="code">match_results</code> size</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.10.3</td><td style="text-align: left"><code class="code">match_results</code> element access</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.10.4</td><td style="text-align: left"><code class="code">match_results</code> formatting</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.10.5</td><td style="text-align: left"><code class="code">match_results</code> allocator</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.10.6</td><td style="text-align: left"><code class="code">match_results</code> swap</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.11</td><td style="text-align: left">Regular expression algorithms</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.11.1</td><td style="text-align: left">exceptions</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.11.2</td><td style="text-align: left"><code class="code">regex_match</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.11.3</td><td style="text-align: left"><code class="code">regex_search</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.11.4</td><td style="text-align: left"><code class="code">regex_replace</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12</td><td style="text-align: left">Regular expression Iterators</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.1</td><td style="text-align: left">Class template <code class="code">regex_iterator</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.1.1</td><td style="text-align: left"><code class="code">regex_iterator</code> constructors</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.1.2</td><td style="text-align: left"><code class="code">regex_iterator</code> comparisons</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.1.3</td><td style="text-align: left"><code class="code">regex_iterator</code> dereference</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.1.4</td><td style="text-align: left"><code class="code">regex_iterator</code> increment</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.2</td><td style="text-align: left">Class template <code class="code">regex_token_iterator</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.2.1</td><td style="text-align: left"><code class="code">regex_token_iterator</code> constructors</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.2.2</td><td style="text-align: left"><code class="code">regex_token_iterator</code> comparisons</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.2.3</td><td style="text-align: left"><code class="code">regex_token_iterator</code> dereference</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.12.2.4</td><td style="text-align: left"><code class="code">regex_token_iterator</code> increment</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">7.13</td><td style="text-align: left">Modified ECMAScript regular expression grammar</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><span class="emphasis"><em>8</em></span></td><td colspan="3" style="text-align: left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td style="text-align: left">8.1</td><td style="text-align: left">Additions to header <code class="code"><complex></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.1.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.1.2</td><td style="text-align: left">Function <code class="code">acos</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.1.3</td><td style="text-align: left">Function <code class="code">asin</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.1.4</td><td style="text-align: left">Function <code class="code">atan</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.1.5</td><td style="text-align: left">Function <code class="code">acosh</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.1.6</td><td style="text-align: left">Function <code class="code">asinh</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.1.7</td><td style="text-align: left">Function <code class="code">atanh</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.1.8</td><td style="text-align: left">Function <code class="code">fabs</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.1.9</td><td style="text-align: left">Additional Overloads</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">8.2</td><td style="text-align: left">Header <code class="code"><ccomplex></code></td><td style="text-align: left">N</td><td style="text-align: left">DR 551</td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">8.3</td><td style="text-align: left">Header <code class="code"><complex.h></code></td><td style="text-align: left">N</td><td style="text-align: left">DR 551</td></tr><tr><td style="text-align: left">8.4</td><td style="text-align: left">Additions to header <code class="code"><cctype></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.4.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.4.2</td><td style="text-align: left">Function <code class="code">isblank</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.5</td><td style="text-align: left">Additions to header <code class="code"><ctype.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.6</td><td style="text-align: left">Header <code class="code"><cfenv></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.6.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.6.2</td><td style="text-align: left">Definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.7</td><td style="text-align: left">Header <code class="code"><fenv.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.8</td><td style="text-align: left">Additions to header <code class="code"><cfloat></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.9</td><td style="text-align: left">Additions to header <code class="code"><float.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">8.10</td><td style="text-align: left">Additions to header <code class="code"><ios></code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">8.10.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">8.10.2</td><td style="text-align: left">Function <code class="code">hexfloat</code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.11</td><td style="text-align: left">Header <code class="code"><cinttypes></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.11.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left">DR 557</td></tr><tr><td style="text-align: left">8.11.2</td><td style="text-align: left">Definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.12</td><td style="text-align: left">Header <code class="code"><inttypes.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.13</td><td style="text-align: left">Additions to header <code class="code"><climits></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.14</td><td style="text-align: left">Additions to header <code class="code"><limits.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr style="background-color: #C8B0B0"><td style="text-align: left">8.15</td><td style="text-align: left">Additions to header <code class="code"><locale></code></td><td style="text-align: left">N</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.16</td><td style="text-align: left">Additions to header <code class="code"><cmath></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.16.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.16.2</td><td style="text-align: left">Definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.16.3</td><td style="text-align: left">Function template definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.16.4</td><td style="text-align: left">Additional overloads</td><td style="text-align: left">Y</td><td style="text-align: left">DR 568; DR 550</td></tr><tr><td style="text-align: left">8.17</td><td style="text-align: left">Additions to header <code class="code"><math.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.18</td><td style="text-align: left">Additions to header <code class="code"><cstdarg></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.19</td><td style="text-align: left">Additions to header <code class="code"><stdarg.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.20</td><td style="text-align: left">The header <code class="code"><cstdbool></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.21</td><td style="text-align: left">The header <code class="code"><stdbool.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.22</td><td style="text-align: left">The header <code class="code"><cstdint></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.22.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.22.2</td><td style="text-align: left">Definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.23</td><td style="text-align: left">The header <code class="code"><stdint.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.24</td><td style="text-align: left">Additions to header <code class="code"><cstdio></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.24.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.24.2</td><td style="text-align: left">Definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.24.3</td><td style="text-align: left">Additional format specifiers</td><td style="text-align: left">Y</td><td style="text-align: left">C library dependency</td></tr><tr><td style="text-align: left">8.24.4</td><td style="text-align: left">Additions to header <code class="code"><stdio.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.25</td><td style="text-align: left">Additions to header <code class="code"><cstdlib></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.25.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.25.2</td><td style="text-align: left">Definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.25.3</td><td style="text-align: left">Function <code class="code">abs</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.25.4</td><td style="text-align: left">Function <code class="code">div</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.26</td><td style="text-align: left">Additions to header <code class="code"><stdlib.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.27</td><td style="text-align: left">Header <code class="code"><ctgmath></code></td><td style="text-align: left">Y</td><td style="text-align: left">DR 551</td></tr><tr><td style="text-align: left">8.28</td><td style="text-align: left">Header <code class="code"><tgmath.h></code></td><td style="text-align: left">Y</td><td style="text-align: left">DR 551</td></tr><tr><td style="text-align: left">8.29</td><td style="text-align: left">Additions to header <code class="code"><ctime></code></td><td style="text-align: left">Y</td><td style="text-align: left">C library dependency</td></tr><tr><td style="text-align: left">8.30</td><td style="text-align: left">Additions to header <code class="code"><cwchar></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.30.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.30.2</td><td style="text-align: left">Definitions</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.30.3</td><td style="text-align: left">Additional wide format specifiers</td><td style="text-align: left">Y</td><td style="text-align: left">C library dependency</td></tr><tr><td style="text-align: left">8.31</td><td style="text-align: left">Additions to header <code class="code"><wchar.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.32</td><td style="text-align: left">Additions to header <code class="code"><cwctype></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.32.1</td><td style="text-align: left">Synopsis</td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.32.2</td><td style="text-align: left">Function <code class="code">iswblank</code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr><tr><td style="text-align: left">8.33</td><td style="text-align: left">Additions to header <code class="code"><wctype.h></code></td><td style="text-align: left">Y</td><td style="text-align: left"> </td></tr></tbody></table></div></div><br class="table-break"/></div><div class="section" title="C++ TR 24733"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr24733"/>C++ TR 24733</h3></div></div></div><p> + This table is based on the table of contents of +@@ -242,7 +257,7 @@ decimal floating-point arithmetic + </p><p> + This page describes the TR 24733 support in mainline GCC SVN, not in any + particular release. +-</p><div class="table"><a id="id582361"/><p class="title"><b>Table 1.4. C++ TR 24733 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Section</th><th style="text-align: left">Description</th><th style="text-align: left">Status</th><th style="text-align: left">Comments</th></tr></thead><tbody><tr><td style="text-align: left"> ++</p><div class="table"><a id="id461766"/><p class="title"><strong>Table 1.4. C++ TR 24733 Implementation Status</strong></p><div class="table-contents"><table summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Section</th><th style="text-align: left">Description</th><th style="text-align: left">Status</th><th style="text-align: left">Comments</th></tr></thead><tbody><tr><td style="text-align: left"> + <span class="emphasis"><em>0</em></span> + </td><td colspan="3" style="text-align: left"> + <span class="emphasis"><em>Introduction</em></span> +diff --git a/libstdc++-v3/doc/html/manual/streambufs.html b/libstdc++-v3/doc/html/manual/streambufs.html +index 17aaddb..92c148d 100644 +--- a/libstdc++-v3/doc/html/manual/streambufs.html ++++ b/libstdc++-v3/doc/html/manual/streambufs.html +@@ -1,15 +1,15 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Stream Buffers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="io.html" title="Chapter 13. Input and Output"/><link rel="prev" href="io.html" title="Chapter 13. Input and Output"/><link rel="next" href="stringstreams.html" title="Memory Based Streams"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Stream Buffers</th></tr><tr><td align="left"><a accesskey="p" href="io.html">Prev</a> </td><th width="60%" align="center">Chapter 13. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Stream Buffers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="io.html" title="Chapter 13. Input and Output"/><link rel="prev" href="io.html" title="Chapter 13. Input and Output"/><link rel="next" href="stringstreams.html" title="Memory Based Streams"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Stream Buffers</th></tr><tr><td align="left"><a accesskey="p" href="io.html">Prev</a> </td><th width="60%" align="center">Chapter 13. + Input and Output + + </th><td align="right"> <a accesskey="n" href="stringstreams.html">Next</a></td></tr></table><hr/></div><div class="section" title="Stream Buffers"><div class="titlepage"><div><div><h2 class="title"><a id="std.io.streambufs"/>Stream Buffers</h2></div></div></div><div class="section" title="Derived streambuf Classes"><div class="titlepage"><div><div><h3 class="title"><a id="io.streambuf.derived"/>Derived streambuf Classes</h3></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: +- <a class="link" href="http://www.angelikalanger.com/iostreams.html" target="">Standard C++ ++ <a class="link" href="http://www.angelikalanger.com/iostreams.html">Standard C++ + IOStreams and Locales</a> by Langer and Kreft, ISBN 0-201-18395-1, and +- <a class="link" href="http://www.josuttis.com/libbook/" target="">The C++ Standard Library</a> ++ <a class="link" href="http://www.josuttis.com/libbook/">The C++ Standard Library</a> + by Nicolai Josuttis, ISBN 0-201-37926-0. Both are published by + Addison-Wesley, who isn't paying us a cent for saying that, honest. + </p><p>Here is a simple example, io/outbuf1, from the Josuttis text. It +@@ -55,7 +55,7 @@ + } + </pre><p>Try it yourself! More examples can be found in 3.1.x code, in + <code class="code">include/ext/*_filebuf.h</code>, and in this article by James Kanze: +- <a class="link" href="http://kanze.james.neuf.fr/articles/fltrsbf1.html" target="">Filtering ++ <a class="link" href="http://kanze.james.neuf.fr/articles/fltrsbf1.html">Filtering + Streambufs</a>. + </p></div><div class="section" title="Buffering"><div class="titlepage"><div><div><h3 class="title"><a id="io.streambuf.buffering"/>Buffering</h3></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? +diff --git a/libstdc++-v3/doc/html/manual/strings.html b/libstdc++-v3/doc/html/manual/strings.html +index 5a5c96f..a70edcd 100644 +--- a/libstdc++-v3/doc/html/manual/strings.html ++++ b/libstdc++-v3/doc/html/manual/strings.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 7. Strings</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="traits.html" title="Traits"/><link rel="next" href="localization.html" title="Chapter 8. Localization"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 7. Strings</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="traits.html" title="Traits"/><link rel="next" href="localization.html" title="Chapter 8. Localization"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. + Strings + + </th></tr><tr><td align="left"><a accesskey="p" href="traits.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 7. Strings"><div class="titlepage"><div><div><h1 class="title"><a id="std.strings"/> ++ </th><td align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 7. Strings"><div class="titlepage"><div><div><h2 class="title"><a id="std.strings"/>Chapter 7. + Strings +- <a id="id595652" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></div><div class="section" title="String Classes"><div class="titlepage"><div><div><h2 class="title"><a id="std.strings.string"/>String Classes</h2></div></div></div><div class="section" title="Simple Transformations"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.simple"/>Simple Transformations</h3></div></div></div><p> ++ <a id="id475084" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></div><div class="section" title="String Classes"><div class="titlepage"><div><div><h2 class="title"><a id="std.strings.string"/>String Classes</h2></div></div></div><div class="section" title="Simple Transformations"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.simple"/>Simple Transformations</h3></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 +@@ -64,7 +64,7 @@ + are overloaded names (declared in <code class="code"><cctype></code> and + <code class="code"><locale></code>) so the template-arguments for + <code class="code">transform<></code> cannot be deduced, as explained in +- <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html" target="">this ++ <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html">this + message</a>. + + At minimum, you can write short wrappers like +@@ -91,7 +91,7 @@ + optimize named temporaries out of existence. + </p></div><div class="section" title="Case Sensitivity"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.case"/>Case Sensitivity</h3></div></div></div><p> + </p><p>The well-known-and-if-it-isn't-well-known-it-ought-to-be +- <a class="link" href="http://www.gotw.ca/gotw/" target="">Guru of the Week</a> ++ <a class="link" href="http://www.gotw.ca/gotw/">Guru of the Week</a> + discussions held on Usenet covered this topic in January of 1998. + Briefly, the challenge was, <span class="quote">“<span class="quote">write a 'ci_string' class which + is identical to the standard 'string' class, but is +@@ -108,10 +108,10 @@ + assert( strcmp( s.c_str(), "AbCdE" ) == 0 ); + assert( strcmp( s.c_str(), "abcde" ) != 0 ); </pre><p>The solution is surprisingly easy. The original answer was + posted on Usenet, and a revised version appears in Herb Sutter's +- book <span class="emphasis"><em>Exceptional C++</em></span> and on his website as <a class="link" href="http://www.gotw.ca/gotw/029.htm" target="">GotW 29</a>. ++ book <span class="emphasis"><em>Exceptional C++</em></span> and on his website as <a class="link" href="http://www.gotw.ca/gotw/029.htm">GotW 29</a>. + </p><p>See? Told you it was easy!</p><p> + <span class="emphasis"><em>Added June 2000:</em></span> The May 2000 issue of C++ +- Report contains a fascinating <a class="link" href="http://lafstern.org/matt/col2_new.pdf" target=""> article</a> by ++ Report contains a fascinating <a class="link" href="http://lafstern.org/matt/col2_new.pdf"> article</a> by + Matt Austern (yes, <span class="emphasis"><em>the</em></span> Matt Austern) on why + case-insensitive comparisons are not as easy as they seem, and + why creating a class is the <span class="emphasis"><em>wrong</em></span> way to go +@@ -123,7 +123,7 @@ + that nobody ever called me on it...) The GotW question and answer + remain useful instructional tools, however. + </p><p><span class="emphasis"><em>Added September 2000:</em></span> James Kanze provided a link to a +- <a class="link" href="http://www.unicode.org/reports/tr21/tr21-5.html" target="">Unicode ++ <a class="link" href="http://www.unicode.org/reports/tr21/tr21-5.html">Unicode + Technical Report discussing case handling</a>, which provides some + very good information. + </p></div><div class="section" title="Arbitrary Character Types"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.character_types"/>Arbitrary Character Types</h3></div></div></div><p> +@@ -169,15 +169,15 @@ + works and can be specialized even for <code class="code">int</code> and other + built-in types. + </p><p>If you want to use your own special character class, then you have +- <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html" target="">a lot ++ <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html">a lot + of work to do</a>, especially if you with to use i18n features + (facets require traits information but don't have a traits argument). +- </p><p>Another example of how to specialize char_traits was given <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html" target="">on the ++ </p><p>Another example of how to specialize char_traits was given <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html">on the + mailing list</a> and at a later date was put into the file <code class="code"> + include/ext/pod_char_traits.h</code>. We agree + that the way it's used with basic_string (scroll down to main()) +- doesn't look nice, but that's because <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00236.html" target="">the +- nice-looking first attempt</a> turned out to <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00242.html" target="">not ++ doesn't look nice, but that's because <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00236.html">the ++ nice-looking first attempt</a> turned out to <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00242.html">not + be conforming C++</a>, due to the rule that CharT must be a POD. + (See how tricky this is?) + </p></div><div class="section" title="Tokenizing"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.token"/>Tokenizing</h3></div></div></div><p> +@@ -280,7 +280,7 @@ stringtok(Container &container, string const &in, + their application from a Win32 platform, they discover that they + are relying on special functions offered by the CString class. + </p><p>Things are not as bad as they seem. In +- <a class="link" href="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html" target="">this ++ <a class="link" href="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html">this + message</a>, Joe Buck points out a few very important things: + </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>The Standard <code class="code">string</code> supports all the operations + that CString does, with three exceptions. +diff --git a/libstdc++-v3/doc/html/manual/stringstreams.html b/libstdc++-v3/doc/html/manual/stringstreams.html +index be4683d..1107d61 100644 +--- a/libstdc++-v3/doc/html/manual/stringstreams.html ++++ b/libstdc++-v3/doc/html/manual/stringstreams.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Memory Based Streams</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="io.html" title="Chapter 13. Input and Output"/><link rel="prev" href="streambufs.html" title="Stream Buffers"/><link rel="next" href="fstreams.html" title="File Based Streams"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory Based Streams</th></tr><tr><td align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><th width="60%" align="center">Chapter 13. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Memory Based Streams</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="io.html" title="Chapter 13. Input and Output"/><link rel="prev" href="streambufs.html" title="Stream Buffers"/><link rel="next" href="fstreams.html" title="File Based Streams"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory Based Streams</th></tr><tr><td align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><th width="60%" align="center">Chapter 13. + Input and Output + + </th><td align="right"> <a accesskey="n" href="fstreams.html">Next</a></td></tr></table><hr/></div><div class="section" title="Memory Based Streams"><div class="titlepage"><div><div><h2 class="title"><a id="std.io.memstreams"/>Memory Based Streams</h2></div></div></div><div class="section" title="Compatibility With strstream"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.memstreams.compat"/>Compatibility With strstream</h3></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/support.html b/libstdc++-v3/doc/html/manual/support.html +index b5f2d11..39c8185 100644 +--- a/libstdc++-v3/doc/html/manual/support.html ++++ b/libstdc++-v3/doc/html/manual/support.html +@@ -1,14 +1,14 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 4. Support</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="next" href="dynamic_memory.html" title="Dynamic Memory"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 4. Support</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="next" href="dynamic_memory.html" title="Dynamic Memory"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. + Support + + </th></tr><tr><td align="left"><a accesskey="p" href="bk01pt02.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 4. Support"><div class="titlepage"><div><div><h1 class="title"><a id="std.support"/> ++ </th><td align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 4. Support"><div class="titlepage"><div><div><h2 class="title"><a id="std.support"/>Chapter 4. + Support +- <a id="id592185" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="section"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="section"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="section"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="section"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div><p> ++ <a id="id471617" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="section"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="section"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="section"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="section"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div><p> + This part deals with the functions called and objects created + automatically during the course of a program's existence. + </p><p> +@@ -58,7 +58,7 @@ + traits classes to give access to various implementation + defined-aspects of the fundamental types. The traits classes -- + fourteen in total -- are all specializations of the template class +- <code class="classname">numeric_limits</code>, documented <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00593.html" target="">here</a> ++ <code class="classname">numeric_limits</code>, documented <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00593.html">here</a> + and defined as follows: + </p><pre class="programlisting"> + template<typename T> +@@ -116,14 +116,14 @@ + overloading won't do what you expect. (This is why + <span class="command"><strong>g++</strong></span> has a magic extension, so that + <code class="constant">NULL</code> is always a pointer.) +- </p><p>In his book <a class="link" href="http://www.awprofessional.com/titles/0-201-92488-9/" target=""><span class="emphasis"><em>Effective ++ </p><p>In his book <a class="link" href="http://www.awprofessional.com/titles/0-201-92488-9/"><span class="emphasis"><em>Effective + C++</em></span></a>, Scott Meyers points out that the best way + to solve this problem is to not overload on pointer-vs-integer + types to begin with. He also offers a way to make your own magic + <code class="constant">NULL</code> that will match pointers before it + matches integers. + </p><p>See +- <a class="link" href="http://www.awprofessional.com/titles/0-201-31015-5/" target="">the ++ <a class="link" href="http://www.awprofessional.com/titles/0-201-31015-5/">the + Effective C++ CD example</a> + </p></div></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="bk01pt02.html">Prev</a> </td><td align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr><tr><td align="left" valign="top">Part II. + Standard Contents +diff --git a/libstdc++-v3/doc/html/manual/termination.html b/libstdc++-v3/doc/html/manual/termination.html +index c0c78a5..cc52359 100644 +--- a/libstdc++-v3/doc/html/manual/termination.html ++++ b/libstdc++-v3/doc/html/manual/termination.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Termination</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="support.html" title="Chapter 4. Support"/><link rel="prev" href="dynamic_memory.html" title="Dynamic Memory"/><link rel="next" href="diagnostics.html" title="Chapter 5. Diagnostics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Termination</th></tr><tr><td align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><th width="60%" align="center">Chapter 4. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Termination</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="support.html" title="Chapter 4. Support"/><link rel="prev" href="dynamic_memory.html" title="Dynamic Memory"/><link rel="next" href="diagnostics.html" title="Chapter 5. Diagnostics"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Termination</th></tr><tr><td align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><th width="60%" align="center">Chapter 4. + Support + + </th><td align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr></table><hr/></div><div class="section" title="Termination"><div class="titlepage"><div><div><h2 class="title"><a id="std.support.termination"/>Termination</h2></div></div></div><div class="section" title="Termination Handlers"><div class="titlepage"><div><div><h3 class="title"><a id="support.termination.handlers"/>Termination Handlers</h3></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html +index 09943f8..b346c42 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.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Test</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , test , testsuite , performance , conformance , ABI , exception safety "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="abi.html" title="ABI Policy and Guidelines"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Test</th></tr><tr><td align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Appendix B. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Test</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , test , testsuite , performance , conformance , ABI , exception safety "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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="abi.html" title="ABI Policy and Guidelines"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Test</th></tr><tr><td align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Appendix B. + Porting and Maintenance + + </th><td align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr></table><hr/></div><div class="section" title="Test"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup.test"/>Test</h2></div></div></div><p> +@@ -146,9 +146,9 @@ cat 27_io/objects/char/3_xin.in | a.out + output, and the executable output (if any). + </p><p> + Archives of test results for various versions and platforms are +- available on the GCC website in the <a class="link" href="http://gcc.gnu.org/gcc-4.3/buildstat.html" target="">build ++ available on the GCC website in the <a class="link" href="http://gcc.gnu.org/gcc-4.3/buildstat.html">build + status</a> section of each individual release, and are also +- archived on a daily basis on the <a class="link" href="http://gcc.gnu.org/ml/gcc-testresults/current" target="">gcc-testresults</a> ++ archived on a daily basis on the <a class="link" href="http://gcc.gnu.org/ml/gcc-testresults/current">gcc-testresults</a> + mailing list. Please check either of these places for a similar + combination of source version, operating system, and host CPU. + </p></div><div class="section" title="Variations"><div class="titlepage"><div><div><h4 class="title"><a id="test.run.variations"/>Variations</h4></div></div></div><p> +@@ -493,7 +493,7 @@ only default variables. + reporting functions including: + </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>time_counter</p></li><li class="listitem"><p>resource_counter</p></li><li class="listitem"><p>report_performance</p></li></ul></div></li></ul></div></div></div><div class="section" title="Special Topics"><div class="titlepage"><div><div><h3 class="title"><a id="test.special"/>Special Topics</h3></div></div></div><div class="section" title="Qualifying Exception Safety Guarantees"><div class="titlepage"><div><div><h4 class="title"><a id="test.exception.safety"/> + Qualifying Exception Safety Guarantees +- <a id="id619257" class="indexterm"/> ++ <a id="id498690" class="indexterm"/> + </h4></div></div></div><div class="section" title="Overview"><div class="titlepage"><div><div><h5 class="title"><a id="test.exception.safety.overview"/>Overview</h5></div></div></div><p> + Testing is composed of running a particular test sequence, + and looking at what happens to the surrounding code when +diff --git a/libstdc++-v3/doc/html/manual/traits.html b/libstdc++-v3/doc/html/manual/traits.html +index 56f3758..4c04c7b 100644 +--- a/libstdc++-v3/doc/html/manual/traits.html ++++ b/libstdc++-v3/doc/html/manual/traits.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Traits</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="utilities.html" title="Chapter 6. Utilities"/><link rel="prev" href="memory.html" title="Memory"/><link rel="next" href="strings.html" title="Chapter 7. Strings"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Traits</th></tr><tr><td align="left"><a accesskey="p" href="memory.html">Prev</a> </td><th width="60%" align="center">Chapter 6. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Traits</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="utilities.html" title="Chapter 6. Utilities"/><link rel="prev" href="memory.html" title="Memory"/><link rel="next" href="strings.html" title="Chapter 7. Strings"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Traits</th></tr><tr><td align="left"><a accesskey="p" href="memory.html">Prev</a> </td><th width="60%" align="center">Chapter 6. + Utilities + + </th><td align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr></table><hr/></div><div class="section" title="Traits"><div class="titlepage"><div><div><h2 class="title"><a id="std.util.traits"/>Traits</h2></div></div></div><p> +diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html +index 93d9ebc..f9eeb59 100644 +--- a/libstdc++-v3/doc/html/manual/using.html ++++ b/libstdc++-v3/doc/html/manual/using.html +@@ -1,15 +1,15 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="intro.html" title="Part I. Introduction"/><link rel="prev" href="make.html" title="Make"/><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 align="left"><a accesskey="p" href="make.html">Prev</a> </td><th width="60%" align="center">Part I. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="intro.html" title="Part I. Introduction"/><link rel="prev" href="make.html" title="Make"/><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 align="left"><a accesskey="p" href="make.html">Prev</a> </td><th width="60%" align="center">Part I. + Introduction + +-</th><td align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 3. Using"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro.using"/>Using</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></div><div class="section" title="Command Options"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.flags"/>Command Options</h2></div></div></div><p> ++</th><td align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 3. Using"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using"/>Chapter 3. Using</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></div><div class="section" title="Command Options"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.flags"/>Command Options</h2></div></div></div><p> + The set of features available in the GNU C++ library is shaped + by +- several <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2//gcc/Invoking-GCC.html" target="">GCC ++ several <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2//gcc/Invoking-GCC.html">GCC + Command Options</a>. Options that impact libstdc++ are + enumerated and detailed in the table below. + </p><p> + By default, <span class="command"><strong>g++</strong></span> is equivalent to <span class="command"><strong>g++ -std=gnu++98</strong></span>. The standard library also defaults to this dialect. +- </p><div class="table"><a id="id586478"/><p class="title"><b>Table 3.1. C++ Command Options</b></p><div class="table-contents"><table summary="C++ Command Options" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/></colgroup><thead><tr><th style="text-align: left">Option Flags</th><th style="text-align: left">Description</th></tr></thead><tbody><tr><td style="text-align: left"><code class="literal">-std=c++98</code></td><td style="text-align: left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><td style="text-align: left"><code class="literal">-std=gnu++98</code></td><td style="text-align: left">As directly above, with GNU extensions.</td></tr><tr><td style="text-align: left"><code class="literal">-std=c++0x</code></td><td style="text-align: left">Use the working draft of the upcoming ISO C++0x standard.</td></tr><tr><td style="text-align: left"><code class="literal">-std=gnu++0x</code></td><td style="text-align: left">As directly above, with GNU extensions.</td></tr><tr><td style="text-align: left"><code class="literal">-fexceptions</code></td><td style="text-align: left">See <a class="link" href="using_exceptions.html#intro.using.exception.no" title="Doing without">exception-free dialect</a></td></tr><tr><td style="text-align: left"><code class="literal">-frtti</code></td><td style="text-align: left">As above, but RTTI-free dialect.</td></tr><tr><td style="text-align: left"><code class="literal">-pthread</code> or <code class="literal">-pthreads</code></td><td style="text-align: left">For ISO C++0x <thread>, <future>, ++ </p><div class="table"><a id="id465910"/><p class="title"><strong>Table 3.1. C++ Command Options</strong></p><div class="table-contents"><table summary="C++ Command Options" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Option Flags</th><th style="text-align: left">Description</th></tr></thead><tbody><tr><td style="text-align: left"><code class="literal">-std=c++98</code></td><td style="text-align: left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><td style="text-align: left"><code class="literal">-std=gnu++98</code></td><td style="text-align: left">As directly above, with GNU extensions.</td></tr><tr><td style="text-align: left"><code class="literal">-std=c++0x</code></td><td style="text-align: left">Use the working draft of the upcoming ISO C++0x standard.</td></tr><tr><td style="text-align: left"><code class="literal">-std=gnu++0x</code></td><td style="text-align: left">As directly above, with GNU extensions.</td></tr><tr><td style="text-align: left"><code class="literal">-fexceptions</code></td><td style="text-align: left">See <a class="link" href="using_exceptions.html#intro.using.exception.no" title="Doing without">exception-free dialect</a></td></tr><tr><td style="text-align: left"><code class="literal">-frtti</code></td><td style="text-align: left">As above, but RTTI-free dialect.</td></tr><tr><td style="text-align: left"><code class="literal">-pthread</code> or <code class="literal">-pthreads</code></td><td style="text-align: left">For ISO C++0x <thread>, <future>, + <mutex>, or <condition_variable>.</td></tr><tr><td style="text-align: left"><code class="literal">-fopenmp</code></td><td style="text-align: left">For <a class="link" href="parallel_mode.html" title="Chapter 18. Parallel Mode">parallel</a> mode.</td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="make.html">Prev</a> </td><td align="center"><a accesskey="u" href="intro.html">Up</a></td><td align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr><tr><td align="left" valign="top">Make </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Headers</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/manual/using_concurrency.html b/libstdc++-v3/doc/html/manual/using_concurrency.html +index 072adcb..a0ca2a6 100644 +--- a/libstdc++-v3/doc/html/manual/using_concurrency.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.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="using.html" title="Chapter 3. Using"/><link rel="prev" href="using_dynamic_or_shared.html" title="Linking"/><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 align="left"><a accesskey="p" href="using_dynamic_or_shared.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_exceptions.html">Next</a></td></tr></table><hr/></div><div class="section" title="Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.concurrency"/>Concurrency</h2></div></div></div><p>This section discusses issues surrounding the proper compilation ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="using.html" title="Chapter 3. Using"/><link rel="prev" href="using_dynamic_or_shared.html" title="Linking"/><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 align="left"><a accesskey="p" href="using_dynamic_or_shared.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_exceptions.html">Next</a></td></tr></table><hr/></div><div class="section" title="Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.concurrency"/>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. +@@ -34,7 +34,7 @@ + AFAIK, none of this is properly documented anywhere other than + in ``gcc -dumpspecs'' (look at lib and cpp entries). + </p></div><div class="section" title="Thread Safety"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.concurrency.thread_safety"/>Thread Safety</h3></div></div></div><p> +-We currently use the <a class="link" href="http://www.sgi.com/tech/stl/thread_safety.html" target="">SGI STL</a> definition of thread safety. ++We currently use the <a class="link" href="http://www.sgi.com/tech/stl/thread_safety.html">SGI STL</a> definition of thread safety. + </p><p>The library strives to be thread-safe when all of the following + conditions are met: + </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>The system's libc is itself thread-safe, +@@ -53,7 +53,7 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) + Requisite command-line flags are used for atomic operations + and threading. Examples of this include <code class="code">-pthread</code> + and <code class="code">-march=native</code>, although specifics vary +- depending on the host environment. See <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html" target="">Machine ++ depending on the host environment. See <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html">Machine + Dependent Options</a>. + </p></li><li class="listitem"><p> + An implementation of atomicity.h functions +@@ -161,9 +161,9 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) + threaded and non-threaded code), see Chapter 17. + </p><p>Two excellent pages to read when working with the Standard C++ + containers and threads are +- <a class="link" href="http://www.sgi.com/tech/stl/thread_safety.html" target="">SGI's ++ <a class="link" href="http://www.sgi.com/tech/stl/thread_safety.html">SGI's + http://www.sgi.com/tech/stl/thread_safety.html</a> and +- <a class="link" href="http://www.sgi.com/tech/stl/Allocators.html" target="">SGI's ++ <a class="link" href="http://www.sgi.com/tech/stl/Allocators.html">SGI's + http://www.sgi.com/tech/stl/Allocators.html</a>. + </p><p><span class="emphasis"><em>However, please ignore all discussions about the user-level + configuration of the lock implementation inside the STL +diff --git a/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html b/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html +index fc4c51d..6ca06ca 100644 +--- a/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html ++++ b/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Linking</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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">Linking</th></tr><tr><td align="left"><a accesskey="p" href="using_namespaces.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_concurrency.html">Next</a></td></tr></table><hr/></div><div class="section" title="Linking"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.linkage"/>Linking</h2></div></div></div><div class="section" title="Almost Nothing"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.linkage.freestanding"/>Almost Nothing</h3></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Linking</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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">Linking</th></tr><tr><td align="left"><a accesskey="p" href="using_namespaces.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_concurrency.html">Next</a></td></tr></table><hr/></div><div class="section" title="Linking"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.linkage"/>Linking</h2></div></div></div><div class="section" title="Almost Nothing"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.linkage.freestanding"/>Almost Nothing</h3></div></div></div><p> + Or as close as it gets: freestanding. This is a minimal + configuration, with only partial support for the standard + library. Assume only the following header files can be used: +@@ -51,10 +51,10 @@ + But how? + </p><p> + A quick read of the relevant part of the GCC +- manual, <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b" target="">Compiling ++ manual, <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b">Compiling + C++ Programs</a>, specifies linking against a C++ + library. More details from the +- GCC <a class="link" href="http://gcc.gnu.org/faq.html#rpath" target="">FAQ</a>, ++ GCC <a class="link" href="http://gcc.gnu.org/faq.html#rpath">FAQ</a>, + which states <span class="emphasis"><em>GCC does not, by default, specify a + location so that the dynamic linker can find dynamic libraries at + runtime.</em></span> +diff --git a/libstdc++-v3/doc/html/manual/using_exceptions.html b/libstdc++-v3/doc/html/manual/using_exceptions.html +index 711f885..d1e2693 100644 +--- a/libstdc++-v3/doc/html/manual/using_exceptions.html ++++ b/libstdc++-v3/doc/html/manual/using_exceptions.html +@@ -1,6 +1,6 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Exceptions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" C++ , exception , error , exception neutrality , exception safety , exception propagation , -fno-exceptions "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr/></div><div class="section" title="Exceptions"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.exceptions"/>Exceptions</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Exceptions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" C++ , exception , error , exception neutrality , exception safety , exception propagation , -fno-exceptions "/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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 align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr/></div><div class="section" title="Exceptions"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.exceptions"/>Exceptions</h2></div></div></div><p> + The C++ language provides language support for stack unwinding + with <code class="literal">try</code> and <code class="literal">catch</code> blocks and + the <code class="literal">throw</code> keyword. +@@ -113,7 +113,7 @@ exception neutrality and exception safety. + support <code class="literal">try</code> and <code class="literal">catch</code> blocks + and thrown objects. (Language support + for <code class="literal">-fno-exceptions</code> is documented in the GNU +- GCC <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options" target="">manual</a>.) ++ GCC <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options">manual</a>.) + </p><p>Before detailing the library support + for <code class="literal">-fno-exceptions</code>, first a passing note on + the things lost when this flag is used: it will break exceptions +@@ -266,7 +266,7 @@ is called. + } + catch(...) + { this->_M_setstate(ios_base::badbit); } +-</pre></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id591326"/><p><span class="biblioid"> ++</pre></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id470759"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </em>. </span><span class="pagenums"> +@@ -274,34 +274,34 @@ is called. + . </span><span class="copyright">Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. +- . </span></p></div><div class="biblioentry"><a id="id591359"/><p><span class="biblioid"> ++ . </span></p></div><div class="biblioentry"><a id="id470792"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Error and Exception Handling + </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername"> + Boost +- . </span></span></p></div><div class="biblioentry"><a id="id591392"/><p><span class="biblioid"> ++ . </span></span></p></div><div class="biblioentry"><a id="id470825"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Exception-Safety in Generic Components + </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams</span>. </span><span class="publisher"><span class="publishername"> + Boost +- . </span></span></p></div><div class="biblioentry"><a id="id591426"/><p><span class="biblioid"> ++ . </span></span></p></div><div class="biblioentry"><a id="id470858"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Standard Library Exception Policy + </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername"> + WG21 N1077 +- . </span></span></p></div><div class="biblioentry"><a id="id591459"/><p><span class="biblioid"> ++ . </span></span></p></div><div class="biblioentry"><a id="id470891"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + ia64 c++ abi exception handling + </em>. </span><span class="author"><span class="firstname">Richard</span> <span class="surname">Henderson</span>. </span><span class="publisher"><span class="publishername"> + GNU +- . </span></span></p></div><div class="biblioentry"><a id="id591492"/><p><span class="biblioid"> ++ . </span></span></p></div><div class="biblioentry"><a id="id470924"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + Appendix E: Standard-Library Exception Safety +- </em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span></p></div><div class="biblioentry"><a id="id591518"/><p><span class="citetitle"><em class="citetitle"> ++ </em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span></p></div><div class="biblioentry"><a id="id470950"/><p><span class="citetitle"><em class="citetitle"> + Exceptional C++ + </em>. </span><span class="pagenums"> + Exception-Safety Issues and Techniques +- . </span><span class="author"><span class="firstname">Herb</span> <span class="surname">Sutter</span>. </span></p></div><div class="biblioentry"><a id="id591538"/><p><span class="biblioid"> ++ . </span><span class="author"><span class="firstname">Herb</span> <span class="surname">Sutter</span>. </span></p></div><div class="biblioentry"><a id="id470970"/><p><span class="biblioid"> + . </span><span class="citetitle"><em class="citetitle"> + GCC Bug 25191: exception_defines.h #defines try/catch + </em>. </span></p></div></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><td align="center"><a accesskey="u" href="using.html">Up</a></td><td align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td align="left" valign="top">Concurrency </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Debugging Support</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/manual/using_headers.html b/libstdc++-v3/doc/html/manual/using_headers.html +index b62e09c..fde253e 100644 +--- a/libstdc++-v3/doc/html/manual/using_headers.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.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Headers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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_macros.html" title="Macros"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Headers</th></tr><tr><td align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_macros.html">Next</a></td></tr></table><hr/></div><div class="section" title="Headers"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.headers"/>Headers</h2></div></div></div><div class="section" title="Header Files"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.all"/>Header Files</h3></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Headers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><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_macros.html" title="Macros"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Headers</th></tr><tr><td align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_macros.html">Next</a></td></tr></table><hr/></div><div class="section" title="Headers"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.headers"/>Headers</h2></div></div></div><div class="section" title="Header Files"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.all"/>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,19 +20,19 @@ + 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="id586707"/><p class="title"><b>Table 3.2. C++ 1998 Library Headers</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="filename">bitset</code></td><td style="text-align: left"><code class="filename">complex</code></td><td style="text-align: left"><code class="filename">deque</code></td><td style="text-align: left"><code class="filename">exception</code></td></tr><tr><td style="text-align: left"><code class="filename">fstream</code></td><td style="text-align: left"><code class="filename">functional</code></td><td style="text-align: left"><code class="filename">iomanip</code></td><td style="text-align: left"><code class="filename">ios</code></td><td style="text-align: left"><code class="filename">iosfwd</code></td></tr><tr><td style="text-align: left"><code class="filename">iostream</code></td><td style="text-align: left"><code class="filename">istream</code></td><td style="text-align: left"><code class="filename">iterator</code></td><td style="text-align: left"><code class="filename">limits</code></td><td style="text-align: left"><code class="filename">list</code></td></tr><tr><td style="text-align: left"><code class="filename">locale</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="filename">memory</code></td><td style="text-align: left"><code class="filename">new</code></td><td style="text-align: left"><code class="filename">numeric</code></td></tr><tr><td style="text-align: left"><code class="filename">ostream</code></td><td style="text-align: left"><code class="filename">queue</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="filename">sstream</code></td><td style="text-align: left"><code class="filename">stack</code></td></tr><tr><td style="text-align: left"><code class="filename">stdexcept</code></td><td style="text-align: left"><code class="filename">streambuf</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="filename">utility</code></td><td style="text-align: left"><code class="filename">typeinfo</code></td></tr><tr><td style="text-align: left"><code class="filename">valarray</code></td><td style="text-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/><div class="table"><a id="id587011"/><p class="title"><b>Table 3.3. 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 style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">cassert</code></td><td style="text-align: left"><code class="filename">cerrno</code></td><td style="text-align: left"><code class="filename">cctype</code></td><td style="text-align: left"><code class="filename">cfloat</code></td><td style="text-align: left"><code class="filename">ciso646</code></td></tr><tr><td style="text-align: left"><code class="filename">climits</code></td><td style="text-align: left"><code class="filename">clocale</code></td><td style="text-align: left"><code class="filename">cmath</code></td><td style="text-align: left"><code class="filename">csetjmp</code></td><td style="text-align: left"><code class="filename">csignal</code></td></tr><tr><td style="text-align: left"><code class="filename">cstdarg</code></td><td style="text-align: left"><code class="filename">cstddef</code></td><td style="text-align: left"><code class="filename">cstdio</code></td><td style="text-align: left"><code class="filename">cstdlib</code></td><td style="text-align: left"><code class="filename">cstring</code></td></tr><tr><td style="text-align: left"><code class="filename">ctime</code></td><td style="text-align: left"><code class="filename">cwchar</code></td><td style="text-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="id466139"/><p class="title"><strong>Table 3.2. C++ 1998 Library Headers</strong></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="filename">bitset</code></td><td style="text-align: left"><code class="filename">complex</code></td><td style="text-align: left"><code class="filename">deque</code></td><td style="text-align: left"><code class="filename">exception</code></td></tr><tr><td style="text-align: left"><code class="filename">fstream</code></td><td style="text-align: left"><code class="filename">functional</code></td><td style="text-align: left"><code class="filename">iomanip</code></td><td style="text-align: left"><code class="filename">ios</code></td><td style="text-align: left"><code class="filename">iosfwd</code></td></tr><tr><td style="text-align: left"><code class="filename">iostream</code></td><td style="text-align: left"><code class="filename">istream</code></td><td style="text-align: left"><code class="filename">iterator</code></td><td style="text-align: left"><code class="filename">limits</code></td><td style="text-align: left"><code class="filename">list</code></td></tr><tr><td style="text-align: left"><code class="filename">locale</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="filename">memory</code></td><td style="text-align: left"><code class="filename">new</code></td><td style="text-align: left"><code class="filename">numeric</code></td></tr><tr><td style="text-align: left"><code class="filename">ostream</code></td><td style="text-align: left"><code class="filename">queue</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="filename">sstream</code></td><td style="text-align: left"><code class="filename">stack</code></td></tr><tr><td style="text-align: left"><code class="filename">stdexcept</code></td><td style="text-align: left"><code class="filename">streambuf</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="filename">utility</code></td><td style="text-align: left"><code class="filename">typeinfo</code></td></tr><tr><td style="text-align: left"><code class="filename">valarray</code></td><td style="text-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/><div class="table"><a id="id466443"/><p class="title"><strong>Table 3.3. C++ 1998 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">cassert</code></td><td style="text-align: left"><code class="filename">cerrno</code></td><td style="text-align: left"><code class="filename">cctype</code></td><td style="text-align: left"><code class="filename">cfloat</code></td><td style="text-align: left"><code class="filename">ciso646</code></td></tr><tr><td style="text-align: left"><code class="filename">climits</code></td><td style="text-align: left"><code class="filename">clocale</code></td><td style="text-align: left"><code class="filename">cmath</code></td><td style="text-align: left"><code class="filename">csetjmp</code></td><td style="text-align: left"><code class="filename">csignal</code></td></tr><tr><td style="text-align: left"><code class="filename">cstdarg</code></td><td style="text-align: left"><code class="filename">cstddef</code></td><td style="text-align: left"><code class="filename">cstdio</code></td><td style="text-align: left"><code class="filename">cstdlib</code></td><td style="text-align: left"><code class="filename">cstring</code></td></tr><tr><td style="text-align: left"><code class="filename">ctime</code></td><td style="text-align: left"><code class="filename">cwchar</code></td><td style="text-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/><div class="table"><a id="id587217"/><p class="title"><b>Table 3.4. C++ 200x Library Headers</b></p><div class="table-contents"><table summary="C++ 200x Library Headers" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="filename">array</code></td><td style="text-align: left"><code class="filename">bitset</code></td><td style="text-align: left"><code class="filename">chrono</code></td><td style="text-align: left"><code class="filename">complex</code></td></tr><tr><td style="text-align: left"><code class="filename">condition_variable</code></td><td style="text-align: left"><code class="filename">deque</code></td><td style="text-align: left"><code class="filename">exception</code></td><td style="text-align: left"><code class="filename">forward_list</code></td><td style="text-align: left"><code class="filename">fstream</code></td></tr><tr><td style="text-align: left"><code class="filename">functional</code></td><td style="text-align: left"><code class="filename">future</code></td><td style="text-align: left"><code class="filename">initalizer_list</code></td><td style="text-align: left"><code class="filename">iomanip</code></td><td style="text-align: left"><code class="filename">ios</code></td></tr><tr><td style="text-align: left"><code class="filename">iosfwd</code></td><td style="text-align: left"><code class="filename">iostream</code></td><td style="text-align: left"><code class="filename">istream</code></td><td style="text-align: left"><code class="filename">iterator</code></td><td style="text-align: left"><code class="filename">limits</code></td></tr><tr><td style="text-align: left"><code class="filename">list</code></td><td style="text-align: left"><code class="filename">locale</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="filename">memory</code></td><td style="text-align: left"><code class="filename">mutex</code></td></tr><tr><td style="text-align: left"><code class="filename">new</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="filename">ostream</code></td><td style="text-align: left"><code class="filename">queue</code></td><td style="text-align: left"><code class="filename">random</code></td></tr><tr><td style="text-align: left"><code class="filename">ratio</code></td><td style="text-align: left"><code class="filename">regex</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="filename">sstream</code></td><td style="text-align: left"><code class="filename">stack</code></td></tr><tr><td style="text-align: left"><code class="filename">stdexcept</code></td><td style="text-align: left"><code class="filename">streambuf</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="filename">system_error</code></td><td style="text-align: left"><code class="filename">thread</code></td></tr><tr><td style="text-align: left"><code class="filename">tuple</code></td><td style="text-align: left"><code class="filename">type_traits</code></td><td style="text-align: left"><code class="filename">typeinfo</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td></tr><tr><td style="text-align: left"><code class="filename">utility</code></td><td style="text-align: left"><code class="filename">valarray</code></td><td style="text-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/><div class="table"><a id="id587646"/><p class="title"><b>Table 3.5. 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 style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">cassert</code></td><td style="text-align: left"><code class="filename">ccomplex</code></td><td style="text-align: left"><code class="filename">cctype</code></td><td style="text-align: left"><code class="filename">cerrno</code></td><td style="text-align: left"><code class="filename">cfenv</code></td></tr><tr><td style="text-align: left"><code class="filename">cfloat</code></td><td style="text-align: left"><code class="filename">cinttypes</code></td><td style="text-align: left"><code class="filename">ciso646</code></td><td style="text-align: left"><code class="filename">climits</code></td><td style="text-align: left"><code class="filename">clocale</code></td></tr><tr><td style="text-align: left"><code class="filename">cmath</code></td><td style="text-align: left"><code class="filename">csetjmp</code></td><td style="text-align: left"><code class="filename">csignal</code></td><td style="text-align: left"><code class="filename">cstdarg</code></td><td style="text-align: left"><code class="filename">cstdbool</code></td></tr><tr><td style="text-align: left"><code class="filename">cstddef</code></td><td style="text-align: left"><code class="filename">cstdint</code></td><td style="text-align: left"><code class="filename">cstdlib</code></td><td style="text-align: left"><code class="filename">cstdio</code></td><td style="text-align: left"><code class="filename">cstring</code></td></tr><tr><td style="text-align: left"><code class="filename">ctgmath</code></td><td style="text-align: left"><code class="filename">ctime</code></td><td style="text-align: left"><code class="filename">cuchar</code></td><td style="text-align: left"><code class="filename">cwchar</code></td><td style="text-align: left"><code class="filename">cwctype</code></td></tr></tbody></table></div></div><br class="table-break"/><p> ++</p><p/><div class="table"><a id="id466649"/><p class="title"><strong>Table 3.4. C++ 200x Library Headers</strong></p><div class="table-contents"><table summary="C++ 200x Library Headers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">algorithm</code></td><td style="text-align: left"><code class="filename">array</code></td><td style="text-align: left"><code class="filename">bitset</code></td><td style="text-align: left"><code class="filename">chrono</code></td><td style="text-align: left"><code class="filename">complex</code></td></tr><tr><td style="text-align: left"><code class="filename">condition_variable</code></td><td style="text-align: left"><code class="filename">deque</code></td><td style="text-align: left"><code class="filename">exception</code></td><td style="text-align: left"><code class="filename">forward_list</code></td><td style="text-align: left"><code class="filename">fstream</code></td></tr><tr><td style="text-align: left"><code class="filename">functional</code></td><td style="text-align: left"><code class="filename">future</code></td><td style="text-align: left"><code class="filename">initalizer_list</code></td><td style="text-align: left"><code class="filename">iomanip</code></td><td style="text-align: left"><code class="filename">ios</code></td></tr><tr><td style="text-align: left"><code class="filename">iosfwd</code></td><td style="text-align: left"><code class="filename">iostream</code></td><td style="text-align: left"><code class="filename">istream</code></td><td style="text-align: left"><code class="filename">iterator</code></td><td style="text-align: left"><code class="filename">limits</code></td></tr><tr><td style="text-align: left"><code class="filename">list</code></td><td style="text-align: left"><code class="filename">locale</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="filename">memory</code></td><td style="text-align: left"><code class="filename">mutex</code></td></tr><tr><td style="text-align: left"><code class="filename">new</code></td><td style="text-align: left"><code class="filename">numeric</code></td><td style="text-align: left"><code class="filename">ostream</code></td><td style="text-align: left"><code class="filename">queue</code></td><td style="text-align: left"><code class="filename">random</code></td></tr><tr><td style="text-align: left"><code class="filename">ratio</code></td><td style="text-align: left"><code class="filename">regex</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="filename">sstream</code></td><td style="text-align: left"><code class="filename">stack</code></td></tr><tr><td style="text-align: left"><code class="filename">stdexcept</code></td><td style="text-align: left"><code class="filename">streambuf</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="filename">system_error</code></td><td style="text-align: left"><code class="filename">thread</code></td></tr><tr><td style="text-align: left"><code class="filename">tuple</code></td><td style="text-align: left"><code class="filename">type_traits</code></td><td style="text-align: left"><code class="filename">typeinfo</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td></tr><tr><td style="text-align: left"><code class="filename">utility</code></td><td style="text-align: left"><code class="filename">valarray</code></td><td style="text-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/><div class="table"><a id="id467078"/><p class="title"><strong>Table 3.5. C++ 200x Library Headers for C Library Facilities</strong></p><div class="table-contents"><table summary="C++ 200x Library Headers for C Library Facilities" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">cassert</code></td><td style="text-align: left"><code class="filename">ccomplex</code></td><td style="text-align: left"><code class="filename">cctype</code></td><td style="text-align: left"><code class="filename">cerrno</code></td><td style="text-align: left"><code class="filename">cfenv</code></td></tr><tr><td style="text-align: left"><code class="filename">cfloat</code></td><td style="text-align: left"><code class="filename">cinttypes</code></td><td style="text-align: left"><code class="filename">ciso646</code></td><td style="text-align: left"><code class="filename">climits</code></td><td style="text-align: left"><code class="filename">clocale</code></td></tr><tr><td style="text-align: left"><code class="filename">cmath</code></td><td style="text-align: left"><code class="filename">csetjmp</code></td><td style="text-align: left"><code class="filename">csignal</code></td><td style="text-align: left"><code class="filename">cstdarg</code></td><td style="text-align: left"><code class="filename">cstdbool</code></td></tr><tr><td style="text-align: left"><code class="filename">cstddef</code></td><td style="text-align: left"><code class="filename">cstdint</code></td><td style="text-align: left"><code class="filename">cstdlib</code></td><td style="text-align: left"><code class="filename">cstdio</code></td><td style="text-align: left"><code class="filename">cstring</code></td></tr><tr><td style="text-align: left"><code class="filename">ctgmath</code></td><td style="text-align: left"><code class="filename">ctime</code></td><td style="text-align: left"><code class="filename">cuchar</code></td><td style="text-align: left"><code class="filename">cwchar</code></td><td style="text-align: left"><code class="filename">cwctype</code></td></tr></tbody></table></div></div><br class="table-break"/><p> + In addition, TR1 includes as: +-</p><div class="table"><a id="id587895"/><p class="title"><b>Table 3.6. C++ TR 1 Library Headers</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">tr1/array</code></td><td style="text-align: left"><code class="filename">tr1/complex</code></td><td style="text-align: left"><code class="filename">tr1/memory</code></td><td style="text-align: left"><code class="filename">tr1/functional</code></td><td style="text-align: left"><code class="filename">tr1/random</code></td></tr><tr><td style="text-align: left"><code class="filename">tr1/regex</code></td><td style="text-align: left"><code class="filename">tr1/tuple</code></td><td style="text-align: left"><code class="filename">tr1/type_traits</code></td><td style="text-align: left"><code class="filename">tr1/unordered_map</code></td><td style="text-align: left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td style="text-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/><div class="table"><a id="id588036"/><p class="title"><b>Table 3.7. C++ TR 1 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">tr1/ccomplex</code></td><td style="text-align: left"><code class="filename">tr1/cfenv</code></td><td style="text-align: left"><code class="filename">tr1/cfloat</code></td><td style="text-align: left"><code class="filename">tr1/cmath</code></td><td style="text-align: left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td style="text-align: left"><code class="filename">tr1/climits</code></td><td style="text-align: left"><code class="filename">tr1/cstdarg</code></td><td style="text-align: left"><code class="filename">tr1/cstdbool</code></td><td style="text-align: left"><code class="filename">tr1/cstdint</code></td><td style="text-align: left"><code class="filename">tr1/cstdio</code></td></tr><tr><td style="text-align: left"><code class="filename">tr1/cstdlib</code></td><td style="text-align: left"><code class="filename">tr1/ctgmath</code></td><td style="text-align: left"><code class="filename">tr1/ctime</code></td><td style="text-align: left"><code class="filename">tr1/cwchar</code></td><td style="text-align: left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break"/><p>Decimal floating-point arithmetic is available if the C++ ++</p><div class="table"><a id="id467327"/><p class="title"><strong>Table 3.6. C++ TR 1 Library Headers</strong></p><div class="table-contents"><table summary="C++ TR 1 Library Headers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">tr1/array</code></td><td style="text-align: left"><code class="filename">tr1/complex</code></td><td style="text-align: left"><code class="filename">tr1/memory</code></td><td style="text-align: left"><code class="filename">tr1/functional</code></td><td style="text-align: left"><code class="filename">tr1/random</code></td></tr><tr><td style="text-align: left"><code class="filename">tr1/regex</code></td><td style="text-align: left"><code class="filename">tr1/tuple</code></td><td style="text-align: left"><code class="filename">tr1/type_traits</code></td><td style="text-align: left"><code class="filename">tr1/unordered_map</code></td><td style="text-align: left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td style="text-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/><div class="table"><a id="id467468"/><p class="title"><strong>Table 3.7. C++ TR 1 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">tr1/ccomplex</code></td><td style="text-align: left"><code class="filename">tr1/cfenv</code></td><td style="text-align: left"><code class="filename">tr1/cfloat</code></td><td style="text-align: left"><code class="filename">tr1/cmath</code></td><td style="text-align: left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td style="text-align: left"><code class="filename">tr1/climits</code></td><td style="text-align: left"><code class="filename">tr1/cstdarg</code></td><td style="text-align: left"><code class="filename">tr1/cstdbool</code></td><td style="text-align: left"><code class="filename">tr1/cstdint</code></td><td style="text-align: left"><code class="filename">tr1/cstdio</code></td></tr><tr><td style="text-align: left"><code class="filename">tr1/cstdlib</code></td><td style="text-align: left"><code class="filename">tr1/ctgmath</code></td><td style="text-align: left"><code class="filename">tr1/ctime</code></td><td style="text-align: left"><code class="filename">tr1/cwchar</code></td><td style="text-align: left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break"/><p>Decimal floating-point arithmetic is available if the C++ + compiler supports scalar decimal floating-point types defined via + <code class="code">__attribute__((mode(SD|DD|LD)))</code>. +-</p><div class="table"><a id="id588211"/><p class="title"><b>Table 3.8. C++ TR 24733 Decimal Floating-Point Header</b></p><div class="table-contents"><table summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">decimal/decimal</code></td></tr></tbody></table></div></div><br class="table-break"/><p> ++</p><div class="table"><a id="id467644"/><p class="title"><strong>Table 3.8. C++ TR 24733 Decimal Floating-Point Header</strong></p><div class="table-contents"><table summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col style="text-align: left" class="c1"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">decimal/decimal</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="id588257"/><p class="title"><b>Table 3.9. C++ ABI Headers</b></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">cxxabi.h</code></td><td style="text-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="id467690"/><p class="title"><strong>Table 3.9. C++ ABI Headers</strong></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">cxxabi.h</code></td><td style="text-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="id588311"/><p class="title"><b>Table 3.10. Extension Headers</b></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">ext/algorithm</code></td><td style="text-align: left"><code class="filename">ext/atomicity.h</code></td><td style="text-align: left"><code class="filename">ext/array_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/bitmap_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/cast.h</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/codecvt_specializations.h</code></td><td style="text-align: left"><code class="filename">ext/concurrence.h</code></td><td style="text-align: left"><code class="filename">ext/debug_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/enc_filebuf.h</code></td><td style="text-align: left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/functional</code></td><td style="text-align: left"><code class="filename">ext/iterator</code></td><td style="text-align: left"><code class="filename">ext/malloc_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/memory</code></td><td style="text-align: left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/new_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/numeric</code></td><td style="text-align: left"><code class="filename">ext/numeric_traits.h</code></td><td style="text-align: left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td style="text-align: left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/pod_char_traits.h</code></td><td style="text-align: left"><code class="filename">ext/pool_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/rb_tree</code></td><td style="text-align: left"><code class="filename">ext/rope</code></td><td style="text-align: left"><code class="filename">ext/slist</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/stdio_filebuf.h</code></td><td style="text-align: left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td style="text-align: left"><code class="filename">ext/throw_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/typelist.h</code></td><td style="text-align: left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td style="text-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/><div class="table"><a id="id588608"/><p class="title"><b>Table 3.11. Extension Debug Headers</b></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">debug/bitset</code></td><td style="text-align: left"><code class="filename">debug/deque</code></td><td style="text-align: left"><code class="filename">debug/list</code></td><td style="text-align: left"><code class="filename">debug/map</code></td><td style="text-align: left"><code class="filename">debug/set</code></td></tr><tr><td style="text-align: left"><code class="filename">debug/string</code></td><td style="text-align: left"><code class="filename">debug/unordered_map</code></td><td style="text-align: left"><code class="filename">debug/unordered_set</code></td><td style="text-align: left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"/><p/><div class="table"><a id="id588731"/><p class="title"><b>Table 3.12. Extension Profile Headers</b></p><div class="table-contents"><table summary="Extension Profile Headers" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">profile/bitset</code></td><td style="text-align: left"><code class="filename">profile/deque</code></td><td style="text-align: left"><code class="filename">profile/list</code></td><td style="text-align: left"><code class="filename">profile/map</code></td></tr><tr><td style="text-align: left"><code class="filename">profile/set</code></td><td style="text-align: left"><code class="filename">profile/unordered_map</code></td><td style="text-align: left"><code class="filename">profile/unordered_set</code></td><td style="text-align: left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break"/><p/><div class="table"><a id="id588843"/><p class="title"><b>Table 3.13. Extension Parallel Headers</b></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col style="text-align: left"/><col style="text-align: left"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">parallel/algorithm</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break"/></div><div class="section" title="Mixing Headers"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"/>Mixing Headers</h3></div></div></div><p> A few simple rules. ++</p><div class="table"><a id="id467743"/><p class="title"><strong>Table 3.10. Extension Headers</strong></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">ext/algorithm</code></td><td style="text-align: left"><code class="filename">ext/atomicity.h</code></td><td style="text-align: left"><code class="filename">ext/array_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/bitmap_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/cast.h</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/codecvt_specializations.h</code></td><td style="text-align: left"><code class="filename">ext/concurrence.h</code></td><td style="text-align: left"><code class="filename">ext/debug_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/enc_filebuf.h</code></td><td style="text-align: left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/functional</code></td><td style="text-align: left"><code class="filename">ext/iterator</code></td><td style="text-align: left"><code class="filename">ext/malloc_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/memory</code></td><td style="text-align: left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/new_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/numeric</code></td><td style="text-align: left"><code class="filename">ext/numeric_traits.h</code></td><td style="text-align: left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td style="text-align: left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/pod_char_traits.h</code></td><td style="text-align: left"><code class="filename">ext/pool_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/rb_tree</code></td><td style="text-align: left"><code class="filename">ext/rope</code></td><td style="text-align: left"><code class="filename">ext/slist</code></td></tr><tr><td style="text-align: left"><code class="filename">ext/stdio_filebuf.h</code></td><td style="text-align: left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td style="text-align: left"><code class="filename">ext/throw_allocator.h</code></td><td style="text-align: left"><code class="filename">ext/typelist.h</code></td><td style="text-align: left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td style="text-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/><div class="table"><a id="id468041"/><p class="title"><strong>Table 3.11. Extension Debug Headers</strong></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">debug/bitset</code></td><td style="text-align: left"><code class="filename">debug/deque</code></td><td style="text-align: left"><code class="filename">debug/list</code></td><td style="text-align: left"><code class="filename">debug/map</code></td><td style="text-align: left"><code class="filename">debug/set</code></td></tr><tr><td style="text-align: left"><code class="filename">debug/string</code></td><td style="text-align: left"><code class="filename">debug/unordered_map</code></td><td style="text-align: left"><code class="filename">debug/unordered_set</code></td><td style="text-align: left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"/><p/><div class="table"><a id="id468164"/><p class="title"><strong>Table 3.12. Extension Profile Headers</strong></p><div class="table-contents"><table summary="Extension Profile Headers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">profile/bitset</code></td><td style="text-align: left"><code class="filename">profile/deque</code></td><td style="text-align: left"><code class="filename">profile/list</code></td><td style="text-align: left"><code class="filename">profile/map</code></td></tr><tr><td style="text-align: left"><code class="filename">profile/set</code></td><td style="text-align: left"><code class="filename">profile/unordered_map</code></td><td style="text-align: left"><code class="filename">profile/unordered_set</code></td><td style="text-align: left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break"/><p/><div class="table"><a id="id468275"/><p class="title"><strong>Table 3.13. Extension Parallel Headers</strong></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><tbody><tr><td style="text-align: left"><code class="filename">parallel/algorithm</code></td><td style="text-align: left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break"/></div><div class="section" title="Mixing Headers"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"/>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"> +@@ -100,5 +100,5 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe + ! ./stdc++.h.gch + . /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> Detailed information about creating precompiled header files can be found in the GCC <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html" target="">documentation</a>. ++</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> Detailed information about creating precompiled header files can be found in the GCC <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html">documentation</a>. + </p></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="using.html">Prev</a> </td><td align="center"><a accesskey="u" href="using.html">Up</a></td><td align="right"> <a accesskey="n" href="using_macros.html">Next</a></td></tr><tr><td align="left" valign="top">Chapter 3. Using </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Macros</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/manual/using_macros.html b/libstdc++-v3/doc/html/manual/using_macros.html +index 167d8fc..3e124e9 100644 +--- a/libstdc++-v3/doc/html/manual/using_macros.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.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Macros</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="using.html" title="Chapter 3. Using"/><link rel="prev" href="using_headers.html" title="Headers"/><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">Macros</th></tr><tr><td align="left"><a accesskey="p" href="using_headers.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_namespaces.html">Next</a></td></tr></table><hr/></div><div class="section" title="Macros"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.macros"/>Macros</h2></div></div></div><p> ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Macros</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="using.html" title="Chapter 3. Using"/><link rel="prev" href="using_headers.html" title="Headers"/><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">Macros</th></tr><tr><td align="left"><a accesskey="p" href="using_headers.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_namespaces.html">Next</a></td></tr></table><hr/></div><div class="section" title="Macros"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.macros"/>Macros</h2></div></div></div><p> + All library macros begin with <code class="code">_GLIBCXX_</code>. + </p><p> + Furthermore, all pre-processor macros, switches, and +diff --git a/libstdc++-v3/doc/html/manual/using_namespaces.html b/libstdc++-v3/doc/html/manual/using_namespaces.html +index 98e3d1f..ffd6c6f 100644 +--- a/libstdc++-v3/doc/html/manual/using_namespaces.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.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Namespaces</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="using.html" title="Chapter 3. Using"/><link rel="prev" href="using_macros.html" title="Macros"/><link rel="next" href="using_dynamic_or_shared.html" title="Linking"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Namespaces</th></tr><tr><td align="left"><a accesskey="p" href="using_macros.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_dynamic_or_shared.html">Next</a></td></tr></table><hr/></div><div class="section" title="Namespaces"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.namespaces"/>Namespaces</h2></div></div></div><div class="section" title="Available Namespaces"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.all"/>Available Namespaces</h3></div></div></div><p> There are three main namespaces. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Namespaces</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="using.html" title="Chapter 3. Using"/><link rel="prev" href="using_macros.html" title="Macros"/><link rel="next" href="using_dynamic_or_shared.html" title="Linking"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Namespaces</th></tr><tr><td align="left"><a accesskey="p" href="using_macros.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td align="right"> <a accesskey="n" href="using_dynamic_or_shared.html">Next</a></td></tr></table><hr/></div><div class="section" title="Namespaces"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using.namespaces"/>Namespaces</h2></div></div></div><div class="section" title="Available Namespaces"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.all"/>Available Namespaces</h3></div></div></div><p> There are three main namespaces. + </p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><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 +@@ -11,7 +11,7 @@ but necessary for interoperability. + </p></li><li class="listitem"><p>__gnu_</p><p>Indicating one of several GNU extensions. Choices + include <code class="code">__gnu_cxx</code>, <code class="code">__gnu_debug</code>, <code class="code">__gnu_parallel</code>, + and <code class="code">__gnu_pbds</code>. +-</p></li></ul></div><p> A complete list of implementation namespaces (including namespace contents) is available in the generated source <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html" target="">documentation</a>. ++</p></li></ul></div><p> A complete list of implementation namespaces (including namespace contents) is available in the generated source <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html">documentation</a>. + </p></div><div class="section" title="namespace std"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.std"/>namespace std</h3></div></div></div><p> + One standard requirement is that the library components are defined + in <code class="code">namespace std::</code>. Thus, in order to use these types or +diff --git a/libstdc++-v3/doc/html/manual/utilities.html b/libstdc++-v3/doc/html/manual/utilities.html +index 9a31fbf..e41e994 100644 +--- a/libstdc++-v3/doc/html/manual/utilities.html ++++ b/libstdc++-v3/doc/html/manual/utilities.html +@@ -1,17 +1,17 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 6. Utilities</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="bk01pt02ch05s02.html" title="Concept Checking"/><link rel="next" href="pairs.html" title="Pairs"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Chapter 6. Utilities</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , library "/><link rel="home" href="../spine.html" title="The GNU C++ Library"/><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents"/><link rel="prev" href="bk01pt02ch05s02.html" title="Concept Checking"/><link rel="next" href="pairs.html" title="Pairs"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. + Utilities + + </th></tr><tr><td align="left"><a accesskey="p" href="bk01pt02ch05s02.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +- </th><td align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 6. Utilities"><div class="titlepage"><div><div><h1 class="title"><a id="std.util"/> ++ </th><td align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 6. Utilities"><div class="titlepage"><div><div><h2 class="title"><a id="std.util"/>Chapter 6. + Utilities +- <a id="id593161" class="indexterm"/> +-</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></div><div class="section" title="Functors"><div class="titlepage"><div><div><h2 class="title"><a id="std.util.functors"/>Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people ++ <a id="id472594" class="indexterm"/> ++</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></div><div class="section" title="Functors"><div class="titlepage"><div><div><h2 class="title"><a id="std.util.functors"/>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 chapter of their STL, in +- <a class="link" href="http://www.sgi.com/tech/stl/functors.html" target="">their ++ <a class="link" href="http://www.sgi.com/tech/stl/functors.html">their + http://www.sgi.com/tech/stl/functors.html</a>. + </p></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="bk01pt02ch05s02.html">Prev</a> </td><td align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr><tr><td align="left" valign="top">Concept Checking </td><td align="center"><a accesskey="h" href="../spine.html">Home</a></td><td align="right" valign="top"> Pairs</td></tr></table></div></body></html> +diff --git a/libstdc++-v3/doc/html/spine.html b/libstdc++-v3/doc/html/spine.html +index ce364a1..e3522b7 100644 +--- a/libstdc++-v3/doc/html/spine.html ++++ b/libstdc++-v3/doc/html/spine.html +@@ -1,8 +1,8 @@ + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="next" href="manual/spine.html" title="The GNU C++ Library Manual"/></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 align="left"> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr></table><hr/></div><div class="set" title="The GNU C++ Library" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"/>The GNU C++ Library</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"/> <span class="surname"/></h3></div><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">Silvius</span> <span class="surname">Rus</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, 2010 +- <a class="link" href="http://www.fsf.org" target="">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 Manual</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I. ++<html xmlns="http://www.w3.org/1999/xhtml"><head><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><link rel="home" href="spine.html" title="The GNU C++ Library"/><link rel="next" href="manual/spine.html" title="The GNU C++ Library Manual"/></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 align="left"> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr></table><hr/></div><div class="set" title="The GNU C++ Library" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"/>The GNU C++ Library</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"/> <span class="surname"/></h3></div><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">Silvius</span> <span class="surname">Rus</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, 2010 ++ <a class="link" href="http://www.fsf.org">FSF</a> ++ </p></div></div><hr/></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="book"><a href="manual/spine.html">The GNU C++ Library Manual</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="section"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><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="section"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="section"><a href="manual/make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="section"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="manual/debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/bk01pt02.html">II. +diff --git a/libstdc++-v3/doc/xml/manual/documentation_hacking.xml b/libstdc++-v3/doc/xml/manual/documentation_hacking.xml +index a2d1cdd..7b2ed7c 100644 +--- a/libstdc++-v3/doc/xml/manual/documentation_hacking.xml ++++ b/libstdc++-v3/doc/xml/manual/documentation_hacking.xml +@@ -746,7 +746,7 @@ make <literal>XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh"</literal> + + <para> + Please note that individual sections and chapters of the +- manual can be validated by substiuting the file desired for ++ manual can be validated by substituting the file desired for + <filename>xml/index.xml</filename> in the command + above. Reducing scope in this manner can be helpful when + validation on the entire manual fails. +@@ -987,4 +987,4 @@ make <literal>XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh"</literal> + + </section> + </section> +-</section> +\ No newline at end of file ++</section> +diff --git a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml b/libstdc++-v3/doc/xml/manual/status_cxx200x.xml +index 9d69f0a..3e4be8f 100644 +--- a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml ++++ b/libstdc++-v3/doc/xml/manual/status_cxx200x.xml +@@ -15,8 +15,8 @@ + + <para> + This table is based on the table of contents of ISO/IEC +-JTC1 SC22 WG21 Doc No: N3092 Date: 2010-03-26 +-Final Committee Draft, Standard for Programming Language C++ ++JTC1 SC22 WG21 Doc No: N3290 Date: 2011-04-11 ++Final Draft International Standard, Standard for Programming Language C++ + </para> + + <para> +@@ -30,8 +30,7 @@ presence of the required flag. + </para> + + <para> +-This page describes the C++0x support in mainline GCC SVN, not in any +-particular release. ++This page describes the C++0x support in the GCC 4.6 release series. + </para> + + <!-- Status is Yes or No, Broken/Partial--> +@@ -92,46 +91,46 @@ particular release. + </row> + + <row> +- <entry>18.3.1</entry> ++ <entry>18.3.2</entry> + <entry>Numeric Limits</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>18.3.1.1</entry> ++ <entry>18.3.2.3</entry> + <entry>Class template <code>numeric_limits</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>18.3.1.2</entry> ++ <entry>18.3.2.4</entry> + <entry><code>numeric_limits</code> members</entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#C8B0B0" ?> +- <entry>18.3.1.3</entry> ++ <entry>18.3.2.5</entry> + <entry><code>float_round_style</code></entry> + <entry>N</entry> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#C8B0B0" ?> +- <entry>18.3.1.4</entry> ++ <entry>18.3.2.6</entry> + <entry><code>float_denorm_style</code></entry> + <entry>N</entry> + <entry/> + </row> + <row> +- <entry>18.3.1.5</entry> ++ <entry>18.3.2.7</entry> + <entry><code>numeric_limits</code> specializations</entry> + <entry>Y</entry> + <entry/> + </row> + + <row> +- <entry>18.3.2</entry> ++ <entry>18.3.3</entry> + <entry>C Library</entry> + <entry>Y</entry> + <entry/> +@@ -200,7 +199,7 @@ particular release. + </row> + <row> + <entry>18.8.2</entry> +- <entry>Violating exception-specifications</entry> ++ <entry>Class bad_exception</entry> + <entry>Y</entry> + <entry/> + </row> +@@ -343,66 +342,66 @@ particular release. + </row> + <row> + <entry>20.2</entry> +- <entry>Requirements</entry> +- <entry/> +- <entry/> +- </row> +- <row> +- <entry>20.3</entry> + <entry>Utility components</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>20.3.1</entry> ++ <entry>20.2.1</entry> + <entry>Operators</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.3.2</entry> ++ <entry>20.2.2</entry> + <entry>Swap</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.3.3</entry> ++ <entry>20.2.3</entry> + <entry><code>forward</code> and <code>move</code> helpers</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.3.4</entry> ++ <entry>20.2.4</entry> + <entry>Function template <code>declval</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.3.5</entry> ++ <entry>20.3</entry> + <entry>Pairs</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>20.3.5.1</entry> ++ <entry>20.3.1</entry> + <entry>In general</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>20.3.5.2</entry> ++ <entry>20.3.2</entry> + <entry>Class template <code>pair</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.3.5.3</entry> ++ <entry>20.3.3</entry> ++ <entry>Specialized algorithms</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.3.4</entry> + <entry>Tuple-like access to <code>pair</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.3.5.5</entry> ++ <entry>20.3.5</entry> + <entry>Piecewise construction</entry> + <entry>Y</entry> + <entry/> +@@ -422,6 +421,62 @@ particular release. + <row> + <entry>20.4.2</entry> + <entry>Class template <code>tuple</code></entry> ++ <entry/> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.4.2.1</entry> ++ <entry>Construction</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.4.2.2</entry> ++ <entry>Assignment</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.4.2.3</entry> ++ <entry>Swap</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <?dbhtml bgcolor="#B0B0B0" ?> ++ <entry>20.4.2.4</entry> ++ <entry>Tuple creation functions</entry> ++ <entry>Partial</entry> ++ <entry><code>tuple_cat</code> should be a single variadic signature (DR 1385)</entry> ++ </row> ++ <row> ++ <entry>20.4.2.5</entry> ++ <entry>Tuple helper classes</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.4.2.6</entry> ++ <entry>Element access</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.4.2.7</entry> ++ <entry>Relational operators</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.4.2.8</entry> ++ <entry>Tuple traits</entry> ++ <entry>N</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.4.2.9</entry> ++ <entry>Tuple specialized algorithms</entry> + <entry>Y</entry> + <entry/> + </row> +@@ -432,130 +487,198 @@ particular release. + <entry/> + </row> + <row> ++ <entry>20.5.1</entry> ++ <entry><code>bitset</code> constructors</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.5.2</entry> ++ <entry><code>bitset</code> members</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.5.3</entry> ++ <entry><code>bitset</code> hash support</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.5.4</entry> ++ <entry><code>bitset</code> operators</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> + <entry>20.6</entry> +- <entry>Compile-time rational arithmetic</entry> ++ <entry>Memory</entry> + <entry/> + <entry/> + </row> + <row> + <entry>20.6.1</entry> +- <entry>Class template <code>ratio</code></entry> +- <entry>Y</entry> ++ <entry>In general</entry> ++ <entry/> + <entry/> + </row> + <row> + <entry>20.6.2</entry> +- <entry>Arithmetic on <code>ratio</code> types</entry> +- <entry>Y</entry> ++ <entry>Header <code><memory></code> synopsis</entry> ++ <entry/> + <entry/> + </row> + <row> ++ <?dbhtml bgcolor="#C8B0B0" ?> + <entry>20.6.3</entry> +- <entry>Comparison of <code>ratio</code> types</entry> +- <entry>Y</entry> ++ <entry>Pointer traits</entry> ++ <entry>N</entry> + <entry/> + </row> + <row> ++ <?dbhtml bgcolor="#B0B0B0" ?> + <entry>20.6.4</entry> +- <entry>SI types for <code>ratio</code></entry> +- <entry>Y</entry> ++ <entry>Pointer safety</entry> ++ <entry>Partial</entry> + <entry/> + </row> + <row> +- <entry>20.7</entry> +- <entry>Metaprogramming and type traits</entry> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.6.5</entry> ++ <entry>Align</entry> ++ <entry>N</entry> + <entry/> ++ </row> ++ <row> ++ <entry>20.6.6</entry> ++ <entry>Allocator argument tag</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.1</entry> +- <entry>Requirements</entry> ++ <entry>20.6.7</entry> ++ <entry><code>uses_allocator</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.2</entry> +- <entry>Header <code><type_traits></code> synopsis</entry> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.6.8</entry> ++ <entry>Allocator traits</entry> ++ <entry>N</entry> + <entry/> ++ </row> ++ <row> ++ <entry>20.6.9</entry> ++ <entry>The default allocator</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.3</entry> +- <entry>Helper classes</entry> ++ <entry>20.6.10</entry> ++ <entry>Raw storage iterator</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.4</entry> +- <entry>Unary Type Traits</entry> ++ <entry>20.6.11</entry> ++ <entry>Temporary buffers</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.4.1</entry> +- <entry>Primary type categories</entry> ++ <entry>20.6.12</entry> ++ <entry>Specialized algorithms</entry> ++ <entry/> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.6.12.1</entry> ++ <entry><code>addressof</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.4.2</entry> +- <entry>Composite type traits</entry> ++ <entry>20.6.12.2</entry> ++ <entry><code>uninitialized_copy</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#B0B0B0" ?> +- <entry>20.7.4.3</entry> +- <entry>Type properties</entry> +- <entry>Partial</entry> +- <entry>Missing is_trivially_copyable, is_nothrow_constructible</entry> ++ <entry>20.6.12.3</entry> ++ <entry><code>uninitialized_fill</code></entry> ++ <entry>Y</entry> ++ <entry/> + </row> + <row> +- <entry>20.7.5</entry> +- <entry>Relationships between types</entry> ++ <entry>20.6.12.4</entry> ++ <entry><code>uninitialized_fill_n</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#B0B0B0" ?> +- <entry>20.7.6</entry> +- <entry>Transformations between types</entry> +- <entry>Partial</entry> +- <entry>Missing underlying_type</entry> ++ <entry>20.6.13</entry> ++ <entry>C library</entry> ++ <entry>Y</entry> ++ <entry/> + </row> + <row> +- <entry>20.7.6.1</entry> +- <entry>Const-volatile modifications</entry> ++ <entry>20.7</entry> ++ <entry>Smart pointers</entry> ++ <entry/> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.7.1</entry> ++ <entry>Class template <code>unique_ptr</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.6.2</entry> +- <entry>Reference modifications</entry> ++ <entry>20.7.2</entry> ++ <entry>Shared-ownership pointers</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.6.3</entry> +- <entry>Sign modifications</entry> ++ <entry>20.7.2.1</entry> ++ <entry>Class <code>bad_weak_ptr</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.6.4</entry> +- <entry>Array modifications</entry> ++ <entry>20.7.2.2</entry> ++ <entry>Class template <code>shared_ptr</code></entry> ++ <entry>Y</entry> ++ <entry> ++ <para> ++ Uses code from ++ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</link>. ++ </para> ++ </entry> ++ </row> ++ <row> ++ <entry>20.7.2.3</entry> ++ <entry>Class template <code>weak_ptr</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.6.5</entry> +- <entry>Pointer modifications</entry> ++ <entry>20.7.2.4</entry> ++ <entry>Class template <code>emable_shared_from_this</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.7.6.6</entry> +- <entry>Other transformations</entry> ++ <?dbhtml bgcolor="#B0B0B0" ?> ++ <entry>20.7.2.5</entry> ++ <entry><code>shared_ptr</code> atomic access</entry> ++ <entry>Partial</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>20.7.2.6</entry> ++ <entry>Smart pointer hash support</entry> + <entry>Y</entry> + <entry/> + </row> +@@ -568,363 +691,320 @@ particular release. + <row> + <entry>20.8.1</entry> + <entry>Definitions</entry> +- <entry>Y</entry> ++ <entry/> + <entry/> + </row> + <row> + <entry>20.8.2</entry> + <entry>Requirements</entry> +- <entry>Y</entry> + <entry/> +- </row> +- <row> +- <entry>20.8.3</entry> +- <entry>Base</entry> +- <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.8.4</entry> ++ <entry>20.8.3</entry> + <entry>Class template <code>reference_wrapper</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.8.5</entry> ++ <entry>20.8.4</entry> + <entry>Arithmetic operation</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.8.6</entry> ++ <entry>20.8.5</entry> + <entry>Comparisons</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.8.7</entry> ++ <entry>20.8.6</entry> + <entry>Logical operations</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.8.8</entry> ++ <entry>20.8.7</entry> + <entry>Bitwise operations</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.8.9</entry> ++ <entry>20.8.8</entry> + <entry>Negators</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.8.10</entry> ++ <entry>20.8.9</entry> + <entry>Function template <code>bind</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.8.11</entry> +- <entry>Adaptors for pointers to functions</entry> +- <entry>Y</entry> +- <entry/> +- </row> +- <row> +- <entry>20.8.12</entry> +- <entry>Adaptors for pointers to members</entry> +- <entry>Y</entry> +- <entry/> +- </row> +- <row> + <?dbhtml bgcolor="#B0B0B0" ?> +- <entry>20.8.13</entry> ++ <entry>20.8.10</entry> + <entry>Function template <code>mem_fn</code></entry> + <entry>Partial</entry> + <entry>Missing overloads for reference-qualified member functions</entry> + </row> + <row> +- <entry>20.8.14</entry> ++ <entry>20.8.11</entry> + <entry>Polymorphic function wrappers</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>20.8.14.1</entry> ++ <entry>20.8.11.1</entry> + <entry>Class <code>bad_function_call</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> +- <entry>20.8.14.2</entry> ++ <entry>20.8.11.2</entry> + <entry>Class template <code>function</code></entry> + <entry>Partial</entry> + <entry>Missing allocator support</entry> + </row> + <row> +- <entry>20.8.15</entry> ++ <entry>20.8.12</entry> + <entry>Class template <code>hash</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>20.9</entry> +- <entry>Memory</entry> ++ <entry>Metaprogramming and type traits</entry> + <entry/> + <entry/> + </row> + <row> + <entry>20.9.1</entry> +- <entry>Allocator argument tag</entry> ++ <entry>Requirements</entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>20.9.2</entry> +- <entry><code>uses_allocator</code></entry> +- <entry>Y</entry> ++ <entry>Header <code><type_traits></code> synopsis</entry> ++ <entry/> + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#C8B0B0" ?> + <entry>20.9.3</entry> +- <entry>Pointer traits</entry> +- <entry>N</entry> ++ <entry>Helper classes</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#C8B0B0" ?> + <entry>20.9.4</entry> +- <entry>Allocator traits</entry> +- <entry>N</entry> ++ <entry>Unary Type Traits</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.5</entry> +- <entry>The default allocator</entry> ++ <entry>20.9.4.1</entry> ++ <entry>Primary type categories</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#C8B0B0" ?> +- <entry>20.9.6</entry> +- <entry>Scoped allocator adaptor</entry> +- <entry/> ++ <entry>20.9.4.2</entry> ++ <entry>Composite type traits</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#C8B0B0" ?> +- <entry>20.9.6.1</entry> +- <entry>Scoped allocator adaptor member types</entry> +- <entry>N</entry> +- <entry/> ++ <?dbhtml bgcolor="#B0B0B0" ?> ++ <entry>20.9.4.3</entry> ++ <entry>Type properties</entry> ++ <entry>Partial</entry> ++ <entry>Missing is_trivially_copyable, ++ is_assignable, is_copy_assignable, is_move_assignable, ++ is_trivially_constructible, is_trivially_default_constructible, ++ is_trivially_copy_constructible, is_trivially_move_constructible, ++ is_trivially_assignable, is_trivially_default_assignable, ++ is_trivially_copy_assignable, is_trivially_move_assignable, ++ is_trivially_destructible, ++ is_nothrow_assignable, ++ is_nothrow_copy_assignable, is_nothrow_move_assignable, ++ is_nothrow_destructible ++ </entry> + </row> + <row> +- <?dbhtml bgcolor="#C8B0B0" ?> +- <entry>20.9.6.2</entry> +- <entry>Scoped allocator adaptor constructors</entry> +- <entry>N</entry> ++ <entry>20.9.5</entry> ++ <entry>Type property queries</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#C8B0B0" ?> +- <entry>20.9.6.3</entry> +- <entry>Scoped allocator adaptor members</entry> +- <entry>N</entry> ++ <entry>20.9.6</entry> ++ <entry>Relationships between types</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> + <entry>20.9.7</entry> +- <entry>Raw storage iterator</entry> +- <entry>Y</entry> ++ <entry>Transformations between types</entry> + <entry/> +- </row> +- <row> +- <entry>20.9.8</entry> +- <entry>Temporary buffers</entry> +- <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.9</entry> +- <entry>Specialized algorithms</entry> +- <entry/> ++ <entry>20.9.7.1</entry> ++ <entry>Const-volatile modifications</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.9.1</entry> +- <entry><code>addressof</code></entry> ++ <entry>20.9.7.2</entry> ++ <entry>Reference modifications</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.9.2</entry> +- <entry><code>uninitialized_copy</code></entry> ++ <entry>20.9.7.3</entry> ++ <entry>Sign modifications</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.9.3</entry> +- <entry><code>uninitialized_fill</code></entry> ++ <entry>20.9.7.4</entry> ++ <entry>Array modifications</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.9.4</entry> +- <entry><code>uninitialized_fill_n</code></entry> ++ <entry>20.9.7.5</entry> ++ <entry>Pointer modifications</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.10</entry> +- <entry>Class template <code>unique_ptr</code></entry> ++ <entry>20.9.7.6</entry> ++ <entry>Other transformations</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.11</entry> +- <entry>Smart pointers</entry> ++ <entry>20.10</entry> ++ <entry>Compile-time rational arithmetic</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>20.9.11.1</entry> +- <entry>Class <code>bad_weak_ptr</code></entry> +- <entry>Y</entry> ++ <entry>20.10.1</entry> ++ <entry>In general</entry> + <entry/> +- </row> +- <row> +- <entry>20.9.11.2</entry> +- <entry>Class template <code>shared_ptr</code></entry> +- <entry>Y</entry> +- <entry> +- <para> +- Uses code from +- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</link>. +- </para> +- </entry> +- </row> +- <row> +- <entry>20.9.11.3</entry> +- <entry>Class template <code>weak_ptr</code></entry> +- <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.11.4</entry> +- <entry>Class template <code>emable_shared_from_this</code></entry> +- <entry>Y</entry> ++ <entry>20.10.2</entry> ++ <entry>Header <code><ratio></code> synopsis</entry> + <entry/> +- </row> +- <row> +- <?dbhtml bgcolor="#B0B0B0" ?> +- <entry>20.9.11.5</entry> +- <entry><code>shared_ptr</code> atomic access</entry> +- <entry>Partial</entry> + <entry/> + </row> + <row> +- <entry>20.9.11.6</entry> +- <entry>Hash support</entry> ++ <entry>20.10.3</entry> ++ <entry>Class template <code>ratio</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#B0B0B0" ?> +- <entry>20.9.12</entry> +- <entry>Pointer safety</entry> +- <entry>Partial</entry> ++ <entry>20.10.4</entry> ++ <entry>Arithmetic on <code>ratio</code>s</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#C8B0B0" ?> +- <entry>20.9.13</entry> +- <entry>Align</entry> +- <entry>N</entry> ++ <entry>20.10.5</entry> ++ <entry>Comparison of <code>ratio</code>s</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.9.16</entry> +- <entry>C library</entry> ++ <entry>20.10.6</entry> ++ <entry>SI types for <code>ratio</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.10</entry> ++ <entry>20.11</entry> + <entry>Time utilities</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>20.10.1</entry> ++ <entry>20.11.3</entry> + <entry>Clock requirements</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.10.2</entry> ++ <entry>20.11.4</entry> + <entry>Time-related traits</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>20.10.2.1</entry> ++ <entry>20.11.4.1</entry> + <entry><code>treat_as_floating_point</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.10.2.2</entry> ++ <entry>20.11.4.2</entry> + <entry><code>duration_values</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.10.2.3</entry> ++ <entry>20.11.4.3</entry> + <entry>Specializations of <code>common_type</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.10.3</entry> ++ <?dbhtml bgcolor="#B0B0B0" ?> ++ <entry>20.11.5</entry> + <entry>Class template <code>duration</code></entry> +- <entry>Y</entry> +- <entry/> ++ <entry>Partial</entry> ++ <entry>Missing constexpr for non-member arithmetic operations</entry> + </row> + <row> +- <entry>20.10.4</entry> ++ <entry>20.11.6</entry> + <entry>Class template <code>time_point</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.10.5</entry> ++ <entry>20.11.7</entry> + <entry>Clocks</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>20.10.5.1</entry> ++ <entry>20.11.7.1</entry> + <entry>Class <code>system_clock</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.10.5.2</entry> +- <entry>Class <code>monotonic_clock</code></entry> +- <entry>Y</entry> +- <entry/> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.11.7.2</entry> ++ <entry>Class <code>steady_clock</code></entry> ++ <entry>N</entry> ++ <entry>Support old <code>monotonic_clock</code> spec instead</entry> + </row> + <row> +- <entry>20.10.5.3</entry> ++ <entry>20.11.7.3</entry> + <entry>Class <code>high_resolution_clock</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>20.11</entry> ++ <entry>20.11.8</entry> + <entry>Date and time functions</entry> + <entry>Y</entry> + <entry/> +@@ -932,6 +1012,48 @@ particular release. + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry>20.12</entry> ++ <entry>Scoped allocator adaptor</entry> ++ <entry/> ++ <entry/> ++ </row> ++ <row> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.12.1</entry> ++ <entry>Header <code><scoped_allocator></code> synopsis</entry> ++ <entry/> ++ <entry/> ++ </row> ++ <row> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.12.2</entry> ++ <entry>Scoped allocator adaptor member types</entry> ++ <entry>N</entry> ++ <entry/> ++ </row> ++ <row> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.12.3</entry> ++ <entry>Scoped allocator adaptor constructors</entry> ++ <entry>N</entry> ++ <entry/> ++ </row> ++ <row> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.12.4</entry> ++ <entry>Scoped allocator adaptor members</entry> ++ <entry>N</entry> ++ <entry/> ++ </row> ++ <row> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.12.5</entry> ++ <entry>Scoped allocator operators</entry> ++ <entry>N</entry> ++ <entry/> ++ </row> ++ <row> ++ <?dbhtml bgcolor="#C8B0B0" ?> ++ <entry>20.13</entry> + <entry>Class <code>type_index</code></entry> + <entry>N</entry> + <entry/> +@@ -1261,7 +1383,7 @@ particular release. + </row> + <row> + <entry>23.2.2</entry> +- <entry>Data races</entry> ++ <entry>Container data races</entry> + <entry>Y</entry> + <entry/> + </row> +@@ -1290,50 +1412,26 @@ particular release. + <entry/> + </row> + <row> +- <entry>23.3.1</entry> +- <entry>Class template <code>array</code></entry> +- <entry>Y</entry> +- <entry/> +- </row> +- <row> + <entry>23.3.2</entry> +- <entry>Class template <code>deque</code></entry> ++ <entry>Class template <code>array</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>23.3.3</entry> +- <entry>Class template <code>forward_list</code></entry> ++ <entry>Class template <code>deque</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>23.3.4</entry> +- <entry>Class template <code>list</code></entry> ++ <entry>Class template <code>forward_list</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>23.3.5</entry> +- <entry>Container adaptors</entry> +- <entry/> +- <entry/> +- </row> +- <row> +- <entry>23.3.5.1</entry> +- <entry>Class template <code>queue</code></entry> +- <entry>Y</entry> +- <entry/> +- </row> +- <row> +- <entry>23.3.5.2</entry> +- <entry>Class template <code>priority_queue</code></entry> +- <entry>Y</entry> +- <entry/> +- </row> +- <row> +- <entry>23.3.5.3</entry> +- <entry>Class template <code>stack</code></entry> ++ <entry>Class template <code>list</code></entry> + <entry>Y</entry> + <entry/> + </row> +@@ -1356,25 +1454,25 @@ particular release. + <entry/> + </row> + <row> +- <entry>23.4.1</entry> ++ <entry>23.4.4</entry> + <entry>Class template <code>map</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>23.4.2</entry> ++ <entry>23.4.5</entry> + <entry>Class template <code>multimap</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>23.4.3</entry> ++ <entry>23.4.6</entry> + <entry>Class template <code>set</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>23.4.4</entry> ++ <entry>23.4.7</entry> + <entry>Class template <code>multiset</code></entry> + <entry>Y</entry> + <entry/> +@@ -1386,30 +1484,54 @@ particular release. + <entry/> + </row> + <row> +- <entry>23.5.1</entry> ++ <entry>23.5.4</entry> + <entry>Class template <code>unordered_map</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>23.5.2</entry> ++ <entry>23.5.5</entry> + <entry>Class template <code>unordered_multimap</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>23.5.3</entry> ++ <entry>23.5.6</entry> + <entry>Class template <code>unordered_set</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>23.5.4</entry> ++ <entry>23.5.7</entry> + <entry>Class template <code>unordered_multiset</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> ++ <entry>23.6</entry> ++ <entry>Container adaptors</entry> ++ <entry/> ++ <entry/> ++ </row> ++ <row> ++ <entry>23.6.1</entry> ++ <entry>Class template <code>queue</code></entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>23.6.2</entry> ++ <entry>Class template <code>priority_queue</code></entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>23.6.3</entry> ++ <entry>Class template <code>stack</code></entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> + <entry> + <emphasis>24</emphasis> + </entry> +@@ -1621,19 +1743,19 @@ particular release. + <entry/> + </row> + <row> +- <entry>26.5.4.1</entry> ++ <entry>26.5.4.2</entry> + <entry>Class template <code>discard_block_engine</code></entry> + <entry>Y</entry> + <entry>Missing constexpr</entry> + </row> + <row> +- <entry>26.5.4.2</entry> ++ <entry>26.5.4.3</entry> + <entry>Class template <code>independent_bits_engine</code></entry> + <entry>Y</entry> + <entry>Missing constexpr</entry> + </row> + <row> +- <entry>26.5.4.3</entry> ++ <entry>26.5.4.4</entry> + <entry>Class template <code>shuffle_order_engine</code></entry> + <entry>Y</entry> + <entry>Missing constexpr</entry> +@@ -1675,151 +1797,151 @@ particular release. + <entry/> + </row> + <row> +- <entry>26.5.8.1</entry> ++ <entry>26.5.8.2</entry> + <entry>Uniform distributions</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>26.5.8.1.1</entry> ++ <entry>26.5.8.2.1</entry> + <entry>Class template <code>uniform_int_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.1.2</entry> ++ <entry>26.5.8.2.2</entry> + <entry>Class template <code>uniform_real_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.2</entry> ++ <entry>26.5.8.3</entry> + <entry>Bernoulli distributions</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>26.5.8.2.1</entry> ++ <entry>26.5.8.3.1</entry> + <entry>Class <code>bernoulli_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.2.2</entry> ++ <entry>26.5.8.3.2</entry> + <entry>Class template <code>binomial_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.2.3</entry> ++ <entry>26.5.8.3.3</entry> + <entry>Class template <code>geometric_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.2.4</entry> ++ <entry>26.5.8.3.4</entry> + <entry>Class template <code>negative_binomial_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.3</entry> ++ <entry>26.5.8.4</entry> + <entry>Poisson distributions</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>26.5.8.3.1</entry> ++ <entry>26.5.8.4.1</entry> + <entry>Class template <code>poisson_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.3.2</entry> ++ <entry>26.5.8.4.2</entry> + <entry>Class template <code>exponential_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.3.3</entry> ++ <entry>26.5.8.4.3</entry> + <entry>Class template <code>gamma_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.3.4</entry> ++ <entry>26.5.8.4.4</entry> + <entry>Class template <code>weibull_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.3.5</entry> ++ <entry>26.5.8.4.5</entry> + <entry>Class template <code>extreme_value_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.4</entry> ++ <entry>26.5.8.5</entry> + <entry>Normal distributions</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>26.5.8.4.1</entry> ++ <entry>26.5.8.5.1</entry> + <entry>Class template <code>normal_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.4.2</entry> ++ <entry>26.5.8.5.2</entry> + <entry>Class template <code>lognormal_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.4.3</entry> ++ <entry>26.5.8.5.3</entry> + <entry>Class template <code>chi_squared_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.4.4</entry> ++ <entry>26.5.8.5.4</entry> + <entry>Class template <code>cauchy_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.4.5</entry> ++ <entry>26.5.8.5.5</entry> + <entry>Class template <code>fisher_f_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.4.6</entry> ++ <entry>26.5.8.5.6</entry> + <entry>Class template <code>student_t_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.5</entry> ++ <entry>26.5.8.6</entry> + <entry>Sampling distributions</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>26.5.8.5.1</entry> ++ <entry>26.5.8.6.1</entry> + <entry>Class template <code>discrete_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.5.2</entry> ++ <entry>26.5.8.6.2</entry> + <entry>Class template <code>piecewise_constant_distribution</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>26.5.8.5.3</entry> ++ <entry>26.5.8.6.3</entry> + <entry>Class template <code>piecewise_linear_distribution</code></entry> + <entry>Y</entry> + <entry/> +@@ -1837,10 +1959,11 @@ particular release. + <entry/> + </row> + <row> ++ <?dbhtml bgcolor="#B0B0B0" ?> + <entry>26.6.2</entry> + <entry>Class template <code>valarray</code></entry> +- <entry>Y</entry> +- <entry/> ++ <entry>Partial</entry> ++ <entry>Missing move and swap operations</entry> + </row> + <row> + <entry>26.6.3</entry> +@@ -1885,10 +2008,9 @@ particular release. + <entry/> + </row> + <row> +- <?dbhtml bgcolor="#C8B0B0" ?> + <entry>26.6.10</entry> + <entry><code>valarray</code> range access</entry> +- <entry>N</entry> ++ <entry>Y</entry> + <entry/> + </row> + <row> +@@ -1899,30 +2021,36 @@ particular release. + </row> + <row> + <entry>26.7.1</entry> +- <entry><code>accumulate</code></entry> ++ <entry>Header <code><numeric></code> synopsis</entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>26.7.2</entry> +- <entry><code>inner_product</code></entry> ++ <entry><code>accumulate</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>26.7.3</entry> +- <entry><code>partial_sum</code></entry> ++ <entry><code>inner_product</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>26.7.4</entry> +- <entry><code>adjacent_difference</code></entry> ++ <entry><code>partial_sum</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>26.7.5</entry> ++ <entry><code>adjacent_difference</code></entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>26.7.6</entry> + <entry>iota</entry> + <entry>Y</entry> + <entry/> +@@ -1986,12 +2114,18 @@ particular release. + </row> + <row> + <entry>27.4.1</entry> +- <entry>Narrow stream objects</entry> ++ <entry>Overview</entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>27.4.2</entry> ++ <entry>Narrow stream objects</entry> ++ <entry>Y</entry> ++ <entry/> ++ </row> ++ <row> ++ <entry>27.4.3</entry> + <entry>Wide stream objects</entry> + <entry>Y</entry> + <entry/> +@@ -2001,7 +2135,10 @@ particular release. + <entry>27.5</entry> + <entry>Iostreams base classes</entry> + <entry>Partial</entry> +- <entry>Missing move and swap operations</entry> ++ <entry> ++ Missing move and swap operations on <code>basic_ios</code>. Missing ++ <code>make_error_code</code> and <code>make_error_condition</code>. ++ </entry> + </row> + <row> + <entry>27.6</entry> +@@ -2155,33 +2292,20 @@ particular release. + <entry/> + </row> + <row> ++ <?dbhtml bgcolor="#B0B0B0" ?> + <entry>29.4</entry> + <entry>Lock-free property</entry> +- <entry>Y</entry> +- <entry>Based on _GLIBCXX_ATOMIC_PROPERTY</entry> ++ <entry>Partial</entry> ++ <entry>Missing <code>ATOMIC_BOOL_LOCK_FREE</code> and ++ <code>ATOMIC_POINTER_LOCK_FREE</code>. ++ Based on _GLIBCXX_ATOMIC_PROPERTY ++ </entry> + </row> + <row> ++ <?dbhtml bgcolor="#B0B0B0" ?> + <entry>29.5</entry> + <entry>Atomic types</entry> +- <entry/> +- <entry/> +- </row> +- <row> +- <entry>29.5.1</entry> +- <entry>Integral types</entry> +- <entry>Y</entry> +- <entry>Missing constexpr</entry> +- </row> +- <row> +- <entry>29.5.2</entry> +- <entry>Address types</entry> +- <entry>Y</entry> +- <entry>Missing constexpr</entry> +- </row> +- <row> +- <entry>29.5.3</entry> +- <entry>Generic types</entry> +- <entry>Y</entry> ++ <entry>Partial</entry> + <entry>Missing constexpr</entry> + </row> + <row> +@@ -2234,7 +2358,7 @@ particular release. + <entry>30.3.1</entry> + <entry>Class <code>thread</code></entry> + <entry>Partial</entry> +- <entry><code>thread::id</code> is not trivially copyable</entry> ++ <entry><code>thread::id</code> comparisons not well-defined</entry> + </row> + <row> + <entry>30.3.2</entry> +@@ -2256,73 +2380,85 @@ particular release. + </row> + <row> + <entry>30.4.1.1</entry> ++ <entry>In general</entry> ++ <entry/> ++ <entry/> ++ </row> ++ <row> ++ <entry>30.4.1.2</entry> ++ <entry>Mutex types</entry> ++ <entry/> ++ <entry/> ++ </row> ++ <row> ++ <entry>30.4.1.2.1</entry> + <entry>Class <code>mutex</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>30.4.1.2</entry> ++ <entry>30.4.1.2.2</entry> + <entry>Class <code>recursive_mutex</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>30.4.2</entry> +- <entry>Timed mutex requirements</entry> ++ <entry>30.4.1.3</entry> ++ <entry>Timed mutex types</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>30.4.2.1</entry> ++ <entry>30.4.1.3.1</entry> + <entry>Class <code>timed_mutex</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>30.4.2.2</entry> ++ <entry>30.4.1.3.2</entry> + <entry>Class <code>recursive_timed_mutex</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>30.4.3</entry> ++ <entry>30.4.2</entry> + <entry>Locks</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>30.4.3.1</entry> ++ <entry>30.4.2.1</entry> + <entry>Class template <code>lock_guard</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>30.4.3.2</entry> ++ <entry>30.4.2.2</entry> + <entry>Class template <code>unique_lock</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>30.4.4</entry> ++ <entry>30.4.3</entry> + <entry>Generic locking algorithms</entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>30.4.5</entry> ++ <entry>30.4.4</entry> + <entry>Call once</entry> + <entry/> + <entry/> + </row> + <row> +- <entry>30.4.5.1</entry> +- <entry><code>once_flag</code></entry> ++ <entry>30.4.4.1</entry> ++ <entry>Struct <code>once_flag</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> +- <entry>30.4.5.2</entry> +- <entry><code>call_once</code></entry> ++ <entry>30.4.4.2</entry> ++ <entry>Function <code>call_once</code></entry> + <entry>Y</entry> + <entry/> + </row> +@@ -2371,7 +2507,7 @@ particular release. + </row> + <row> + <entry>30.6.4</entry> +- <entry>Associated asynchronous state</entry> ++ <entry>Shared state</entry> + <entry>Y</entry> + <entry/> + </row> +@@ -2397,14 +2533,14 @@ particular release. + <entry>Missing future_status</entry> + </row> + <row> +- <entry>30.6.9</entry> ++ <entry>30.6.8</entry> + <entry>Function template <code>async</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> +- <entry>30.6.10</entry> ++ <entry>30.6.9</entry> + <entry>Class template <code>packaged_task</code></entry> + <entry>Partial</entry> + <entry>Missing make_ready_at_thread_exit</entry> +@@ -2425,43 +2561,43 @@ particular release. + </row> + <row> + <entry>D.2</entry> +- <entry><code>static</code> keyword</entry> ++ <entry><code>register</code> keyword</entry> + <entry/> + <entry/> + </row> + <row> + <entry>D.3</entry> +- <entry>Access declarations</entry> ++ <entry>Implicit declaration of copy functions</entry> + <entry/> + <entry/> + </row> + <row> + <entry>D.4</entry> +- <entry><code>register</code> keyword</entry> ++ <entry>Dynamic exception specifications</entry> + <entry/> + <entry/> + </row> + <row> + <entry>D.5</entry> +- <entry>Dynamic exception specifications</entry> ++ <entry>C standard library headers</entry> + <entry/> + <entry/> + </row> + <row> + <entry>D.6</entry> +- <entry>C standard library headers</entry> ++ <entry>Old iostreams members</entry> + <entry/> + <entry/> + </row> + <row> + <entry>D.7</entry> +- <entry>Old iostreams members</entry> ++ <entry><code>char*</code> streams</entry> + <entry/> + <entry/> + </row> + <row> + <entry>D.8</entry> +- <entry>char* streams</entry> ++ <entry>Function objects</entry> + <entry/> + <entry/> + </row> +@@ -2477,6 +2613,12 @@ particular release. + <entry/> + <entry/> + </row> ++ <row> ++ <entry>D.11</entry> ++ <entry>Violating exception-specifications</entry> ++ <entry/> ++ <entry/> ++ </row> + + </tbody> + </tgroup> +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0226-Fix-PR-c-48838.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0226-Fix-PR-c-48838.patch new file mode 100644 index 000000000..af31ff024 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0226-Fix-PR-c-48838.patch @@ -0,0 +1,112 @@ +From 01c39e4050b00a6483b1e196b1308beed14d6e4a Mon Sep 17 00:00:00 2001 +From: dodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 08:34:10 +0000 +Subject: [PATCH] Fix PR c++/48838 + +gcc/cp + + PR c++/48838 + * cp-tree.h (non_static_member_function_p): Declare new function. + * tree.c (non_static_member_function_p): Define it. + * semantics.c (finish_call_expr): Use it. + +gcc/testsuite + + PR c++/48838 + * g++.dg/template/member9.C: New test case. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173472 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 176a4b8..9fbca57 100644 +--- a/gcc/cp/cp-tree.h ++++ b/gcc/cp/cp-tree.h +@@ -5409,6 +5409,7 @@ extern tree get_fns (tree); + extern tree get_first_fn (tree); + extern tree ovl_cons (tree, tree); + extern tree build_overload (tree, tree); ++extern bool non_static_member_function_p (tree); + extern const char *cxx_printable_name (tree, int); + extern const char *cxx_printable_name_translate (tree, int); + extern tree build_exception_variant (tree, tree); +diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c +index b5c0b80..f43649e 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -2041,8 +2041,7 @@ finish_call_expr (tree fn, VEC(tree,gc) **args, bool disallow_virtual, + is not included in *ARGS even though it is considered to + be part of the list of arguments. Note that this is + related to CWG issues 515 and 1005. */ +- || (((TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE) +- || BASELINK_P (fn)) ++ || (non_static_member_function_p (fn) + && current_class_ref + && type_dependent_expression_p (current_class_ref))) + { +diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c +index 15ee741..f04fd23 100644 +--- a/gcc/cp/tree.c ++++ b/gcc/cp/tree.c +@@ -1465,6 +1465,34 @@ build_overload (tree decl, tree chain) + return ovl_cons (decl, chain); + } + ++/* Return TRUE if FN is a non-static member function, FALSE otherwise. ++ This function looks into BASELINK and OVERLOAD nodes. */ ++ ++bool ++non_static_member_function_p (tree fn) ++{ ++ if (fn == NULL_TREE) ++ return false; ++ ++ if (BASELINK_P (fn)) ++ { ++ tree type = TREE_TYPE (fn); ++ ++ if (type && TREE_CODE (type) == METHOD_TYPE) ++ return true; ++ else if (type && TREE_CODE (type) == FUNCTION_TYPE) ++ return false; ++ /* This is an overload. Lets look into its current value. */ ++ fn = get_fns (BASELINK_FUNCTIONS (fn)); ++ } ++ ++ if (TREE_CODE (fn) == OVERLOAD) ++ fn = OVL_CURRENT (fn); ++ ++ return (DECL_P (fn) ++ && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)); ++} ++ + + #define PRINT_RING_SIZE 4 + +new file mode 100644 +index 0000000..f15272d +--- /dev/null ++++ b/gcc/testsuite/g++.dg/template/member9.C +@@ -0,0 +1,21 @@ ++// Origin PR c++/48838 ++// { dg-do compile } ++ ++class DUChainItemSystem ++{ ++public: ++ ++ template<class T> ++ void registerTypeClass(); ++ ++ static DUChainItemSystem& self(); ++}; ++ ++template<class T> ++struct DUChainItemRegistrator ++{ ++ DUChainItemRegistrator() ++ { ++ DUChainItemSystem::self().registerTypeClass<T>(); ++ } ++}; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0227-PR-fortran-48894.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0227-PR-fortran-48894.patch new file mode 100644 index 000000000..0c6de4ff5 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0227-PR-fortran-48894.patch @@ -0,0 +1,136 @@ +From ae55117ab726f901303318a546b5c8c66273579c Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 10:11:59 +0000 +Subject: [PATCH] PR fortran/48894 + * fortran.c: Include limits.h. + (TO_INT): Define. + (omp_set_dynamic_8_, omp_set_num_threads_8_): Use !!*set instead of + *set. + (omp_set_num_threads_8_, omp_set_schedule_8_, + omp_set_max_active_levels_8_, omp_get_ancestor_thread_num_8_, + omp_get_team_size_8_): Use TO_INT macro. + * testsuite/libgomp.fortran/pr48894.f90: New test. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173477 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 53469f5..39bd748 100644 +--- a/libgomp/fortran.c ++++ b/libgomp/fortran.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. ++/* Copyright (C) 2005, 2007, 2008, 2009, 2011 Free Software Foundation, Inc. + Contributed by Jakub Jelinek <jakub@redhat.com>. + + This file is part of the GNU OpenMP Library (libgomp). +@@ -27,6 +27,7 @@ + #include "libgomp.h" + #include "libgomp_f.h" + #include <stdlib.h> ++#include <limits.h> + + #ifdef HAVE_ATTRIBUTE_ALIAS + /* Use internal aliases if possible. */ +@@ -244,6 +245,8 @@ omp_lock_symver (omp_unset_nest_lock_) + omp_lock_symver (omp_test_nest_lock_) + #endif + ++#define TO_INT(x) ((x) > INT_MIN ? (x) < INT_MAX ? (x) : INT_MAX : INT_MIN) ++ + void + omp_set_dynamic_ (const int32_t *set) + { +@@ -253,7 +256,7 @@ omp_set_dynamic_ (const int32_t *set) + void + omp_set_dynamic_8_ (const int64_t *set) + { +- omp_set_dynamic (*set); ++ omp_set_dynamic (!!*set); + } + + void +@@ -265,7 +268,7 @@ omp_set_nested_ (const int32_t *set) + void + omp_set_nested_8_ (const int64_t *set) + { +- omp_set_nested (*set); ++ omp_set_nested (!!*set); + } + + void +@@ -277,7 +280,7 @@ omp_set_num_threads_ (const int32_t *set) + void + omp_set_num_threads_8_ (const int64_t *set) + { +- omp_set_num_threads (*set); ++ omp_set_num_threads (TO_INT (*set)); + } + + int32_t +@@ -343,7 +346,7 @@ omp_set_schedule_ (const int32_t *kind, const int32_t *modifier) + void + omp_set_schedule_8_ (const int32_t *kind, const int64_t *modifier) + { +- omp_set_schedule (*kind, *modifier); ++ omp_set_schedule (*kind, TO_INT (*modifier)); + } + + void +@@ -381,7 +384,7 @@ omp_set_max_active_levels_ (const int32_t *levels) + void + omp_set_max_active_levels_8_ (const int64_t *levels) + { +- omp_set_max_active_levels (*levels); ++ omp_set_max_active_levels (TO_INT (*levels)); + } + + int32_t +@@ -405,7 +408,7 @@ omp_get_ancestor_thread_num_ (const int32_t *level) + int32_t + omp_get_ancestor_thread_num_8_ (const int64_t *level) + { +- return omp_get_ancestor_thread_num (*level); ++ return omp_get_ancestor_thread_num (TO_INT (*level)); + } + + int32_t +@@ -417,7 +420,7 @@ omp_get_team_size_ (const int32_t *level) + int32_t + omp_get_team_size_8_ (const int64_t *level) + { +- return omp_get_team_size (*level); ++ return omp_get_team_size (TO_INT (*level)); + } + + int32_t +diff --git a/libgomp/testsuite/libgomp.fortran/pr48894.f90 b/libgomp/testsuite/libgomp.fortran/pr48894.f90 +new file mode 100644 +index 0000000..af35112 +--- /dev/null ++++ b/libgomp/testsuite/libgomp.fortran/pr48894.f90 +@@ -0,0 +1,23 @@ ++! PR fortran/48894 ++! { dg-do run } ++! { dg-options "-fdefault-integer-8" } ++ ++ use omp_lib ++ integer, parameter :: zero = 0 ++ integer :: err ++ logical :: l ++ err = 0 ++ !$omp parallel ++ !$omp parallel private (l) ++ l = omp_get_ancestor_thread_num (-HUGE (zero)) .ne. -1 ++ l = l .or. (omp_get_ancestor_thread_num (HUGE (zero)) .ne. -1) ++ l = l .or. (omp_get_team_size (-HUGE (zero)) .ne. -1) ++ l = l .or. (omp_get_team_size (HUGE (zero)) .ne. -1) ++ if (l) then ++ !$omp atomic ++ err = err + 1 ++ endif ++ !$omp end parallel ++ !$omp end parallel ++ if (err .ne. 0) call abort ++end +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0228-2011-05-06-Ramana-Radhakrishnan-ramana.radhakrishnan.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0228-2011-05-06-Ramana-Radhakrishnan-ramana.radhakrishnan.patch new file mode 100644 index 000000000..2266ffaad --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0228-2011-05-06-Ramana-Radhakrishnan-ramana.radhakrishnan.patch @@ -0,0 +1,28 @@ +From 6a792f0c655adf383671e01e6554c4e243ac24ad Mon Sep 17 00:00:00 2001 +From: ramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 10:21:26 +0000 +Subject: [PATCH] 2011-05-06 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> + + PR target/48252 + * config/arm/neon.md (neon_vtrn<mode>): Fix typo + from earlier commit. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173480 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 491dd98..fddd632 100644 +--- a/gcc/config/arm/neon.md ++++ b/gcc/config/arm/neon.md +@@ -4093,7 +4093,7 @@ + (const_string "neon_bp_3cycle")))] + ) + +- "neon_vtrn<mode>" ++(define_expand "neon_vtrn<mode>" + [(match_operand:SI 0 "s_register_operand" "r") + (match_operand:VDQW 1 "s_register_operand" "w") + (match_operand:VDQW 2 "s_register_operand" "w")] +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0229-2011-05-06-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0229-2011-05-06-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch new file mode 100644 index 000000000..bc09a7e58 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0229-2011-05-06-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch @@ -0,0 +1,58 @@ +From d78b2283de3896b886562a5e34dfca256b7130d4 Mon Sep 17 00:00:00 2001 +From: krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 11:10:13 +0000 +Subject: [PATCH] 2011-05-06 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * config/s390/s390.c (s390_asm_trampoline_template): Comment + instruction sizes. + (s390_trampoline_init): Replace UNITS_PER_WORD with + UNITS_PER_LONG. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173482 138bc75d-0d04-0410-961f-82ee72b054a4 + +index c1bb234..626007e 100644 +--- a/gcc/config/s390/s390.c ++++ b/gcc/config/s390/s390.c +@@ -9281,16 +9281,16 @@ s390_asm_trampoline_template (FILE *file) + + if (TARGET_64BIT) + { +- output_asm_insn ("basr\t%1,0", op); +- output_asm_insn ("lmg\t%0,%1,14(%1)", op); +- output_asm_insn ("br\t%1", op); ++ output_asm_insn ("basr\t%1,0", op); /* 2 byte */ ++ output_asm_insn ("lmg\t%0,%1,14(%1)", op); /* 6 byte */ ++ output_asm_insn ("br\t%1", op); /* 2 byte */ + ASM_OUTPUT_SKIP (file, (HOST_WIDE_INT)(TRAMPOLINE_SIZE - 10)); + } + else + { +- output_asm_insn ("basr\t%1,0", op); +- output_asm_insn ("lm\t%0,%1,6(%1)", op); +- output_asm_insn ("br\t%1", op); ++ output_asm_insn ("basr\t%1,0", op); /* 2 byte */ ++ output_asm_insn ("lm\t%0,%1,6(%1)", op); /* 4 byte */ ++ output_asm_insn ("br\t%1", op); /* 2 byte */ + ASM_OUTPUT_SKIP (file, (HOST_WIDE_INT)(TRAMPOLINE_SIZE - 8)); + } + } +@@ -9306,11 +9306,11 @@ s390_trampoline_init (rtx m_tramp, tree fndecl, rtx cxt) + rtx mem; + + emit_block_move (m_tramp, assemble_trampoline_template (), +- GEN_INT (2*UNITS_PER_WORD), BLOCK_OP_NORMAL); ++ GEN_INT (2 * UNITS_PER_LONG), BLOCK_OP_NORMAL); + +- mem = adjust_address (m_tramp, Pmode, 2*UNITS_PER_WORD); ++ mem = adjust_address (m_tramp, Pmode, 2 * UNITS_PER_LONG); + emit_move_insn (mem, cxt); +- mem = adjust_address (m_tramp, Pmode, 3*UNITS_PER_WORD); ++ mem = adjust_address (m_tramp, Pmode, 3 * UNITS_PER_LONG); + emit_move_insn (mem, fnaddr); + } + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0230-PR-target-48900.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0230-PR-target-48900.patch new file mode 100644 index 000000000..0c235a12c --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0230-PR-target-48900.patch @@ -0,0 +1,44 @@ +From 13a0d397446972a93558be4da118ab2fd6da58bc Mon Sep 17 00:00:00 2001 +From: amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 14:30:10 +0000 +Subject: [PATCH] PR target/48900 + * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Use + const0_rtx as the arg to the dummy __tls_get_addr libcall. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173489 138bc75d-0d04-0410-961f-82ee72b054a4 + +index c6c1847..5019347 100644 +--- a/gcc/config/rs6000/rs6000.c ++++ b/gcc/config/rs6000/rs6000.c +@@ -6545,10 +6545,11 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) + + if (model == TLS_MODEL_GLOBAL_DYNAMIC) + { +- r3 = gen_rtx_REG (Pmode, 3); + tga = rs6000_tls_get_addr (); +- emit_library_call_value (tga, dest, LCT_CONST, Pmode, 1, r3, Pmode); ++ emit_library_call_value (tga, dest, LCT_CONST, Pmode, ++ 1, const0_rtx, Pmode); + ++ r3 = gen_rtx_REG (Pmode, 3); + if (DEFAULT_ABI == ABI_AIX && TARGET_64BIT) + insn = gen_tls_gd_aix64 (r3, got, addr, tga, const0_rtx); + else if (DEFAULT_ABI == ABI_AIX && !TARGET_64BIT) +@@ -6565,11 +6566,12 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) + } + else if (model == TLS_MODEL_LOCAL_DYNAMIC) + { +- r3 = gen_rtx_REG (Pmode, 3); + tga = rs6000_tls_get_addr (); + tmp1 = gen_reg_rtx (Pmode); +- emit_library_call_value (tga, tmp1, LCT_CONST, Pmode, 1, r3, Pmode); ++ emit_library_call_value (tga, tmp1, LCT_CONST, Pmode, ++ 1, const0_rtx, Pmode); + ++ r3 = gen_rtx_REG (Pmode, 3); + if (DEFAULT_ABI == ABI_AIX && TARGET_64BIT) + insn = gen_tls_ld_aix64 (r3, got, tga, const0_rtx); + else if (DEFAULT_ABI == ABI_AIX && !TARGET_64BIT) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0231-config-i386-i386.md-movdf_internal_nointeger-Apply.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0231-config-i386-i386.md-movdf_internal_nointeger-Apply.patch new file mode 100644 index 000000000..934efa4a0 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0231-config-i386-i386.md-movdf_internal_nointeger-Apply.patch @@ -0,0 +1,23 @@ +From 651bd3dfce337b26f27ef04e5b36838b6d8f77ea Mon Sep 17 00:00:00 2001 +From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 16:21:33 +0000 +Subject: [PATCH] * config/i386/i386.md (*movdf_internal_nointeger): Apply "*" + constraint modifier to "r". + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173495 138bc75d-0d04-0410-961f-82ee72b054a4 + +index a90e310..9db8a74 100644 +--- a/gcc/config/i386/i386.md ++++ b/gcc/config/i386/i386.md +@@ -3240,7 +3240,7 @@ + [(set (match_operand:DF 0 "nonimmediate_operand" + "=f,m,f,*r ,o ,Y2*x,Y2*x,Y2*x ,m ") + (match_operand:DF 1 "general_operand" +- "fm,f,G,*roF,*Fr,C ,Y2*x,mY2*x,Y2*x"))] ++ "fm,f,G,*roF,F*r,C ,Y2*x,mY2*x,Y2*x"))] + "!TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1])) + && (optimize_function_for_size_p (cfun) + || !TARGET_INTEGER_DFMODE_MOVES) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0232-PR-c-48089.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0232-PR-c-48089.patch new file mode 100644 index 000000000..300b4e143 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0232-PR-c-48089.patch @@ -0,0 +1,77 @@ +From 3db4aa63d6850f44758d06d5f075c76de6d4c1e9 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 21:58:22 +0000 +Subject: [PATCH] PR c++/48089 + * semantics.c (potential_constant_expression_1): Don't allow *this + in a constructor. + (register_constexpr_fundef): Use potential_rvalue_constant_expression. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173513 138bc75d-0d04-0410-961f-82ee72b054a4 + +index f43649e..8f621b9 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -5704,11 +5704,11 @@ register_constexpr_fundef (tree fun, tree body) + body = unshare_expr (TREE_OPERAND (body, 0)); + } + +- if (!potential_constant_expression (body)) ++ if (!potential_rvalue_constant_expression (body)) + { + DECL_DECLARED_CONSTEXPR_P (fun) = false; + if (!DECL_TEMPLATE_INSTANTIATION (fun)) +- require_potential_constant_expression (body); ++ require_potential_rvalue_constant_expression (body); + return NULL; + } + fundef->body = body; +@@ -7560,7 +7560,16 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) + tree x = TREE_OPERAND (t, 0); + STRIP_NOPS (x); + if (is_this_parameter (x)) +- return true; ++ { ++ if (DECL_CONSTRUCTOR_P (DECL_CONTEXT (x)) && want_rval) ++ { ++ if (flags & tf_error) ++ sorry ("use of the value of the object being constructed " ++ "in a constant expression"); ++ return false; ++ } ++ return true; ++ } + return potential_constant_expression_1 (x, rval, flags); + } + +new file mode 100644 +index 0000000..fc69cfe +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C +@@ -0,0 +1,24 @@ ++// PR c++/48089 ++// { dg-options -std=c++0x } ++ ++// bang is ill-formed (diagnostic required) because its initializer is ++// non-constant, because it uses the value of an uninitialized object. ++ ++// s() is ill-formed (no diagnostic required) because there is no set of ++// arguments that would produce a constant expression. ++ ++// R() is well-formed because i is initialized before j. ++ ++struct s { ++ constexpr s() : v(v) { } // { dg-message "" } ++ int v; ++}; ++ ++constexpr s bang; // { dg-error "" } ++ ++struct R { ++ int i,j; ++ constexpr R() : i(42),j(i) { } // { dg-bogus "" "" { xfail *-*-* } } ++}; ++ ++constexpr R r; // { dg-bogus "" "" { xfail *-*-* } } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0233-PR-c-48446.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0233-PR-c-48446.patch new file mode 100644 index 000000000..c27ea1c39 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0233-PR-c-48446.patch @@ -0,0 +1,183 @@ +From dfb9470529df202844f4b5dfe757ff07fa9bd27f Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 21:58:30 +0000 +Subject: [PATCH] PR c++/48446 + * decl.c (stabilize_save_expr_r, stabilize_vla_size): New. + (grokdeclarator): Use stabilize_vla_size. + * init.c (get_temp_regvar): No longer static. + * cp-tree.h: Declare it. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173514 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 9fbca57..be61dad 100644 +--- a/gcc/cp/cp-tree.h ++++ b/gcc/cp/cp-tree.h +@@ -4958,6 +4958,7 @@ extern tree build_offset_ref (tree, tree, bool); + extern tree build_new (VEC(tree,gc) **, tree, tree, + VEC(tree,gc) **, int, + tsubst_flags_t); ++extern tree get_temp_regvar (tree, tree); + extern tree build_vec_init (tree, tree, tree, bool, int, + tsubst_flags_t); + extern tree build_delete (tree, tree, +diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c +index 6f8bb9f..74bae0b 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -7499,6 +7499,39 @@ check_static_variable_definition (tree decl, tree type) + return 0; + } + ++/* *expr_p is part of the TYPE_SIZE of a variably-sized array. If any ++ SAVE_EXPRs in *expr_p wrap expressions with side-effects, break those ++ expressions out into temporary variables so that walk_tree doesn't ++ step into them (c++/15764). */ ++ ++static tree ++stabilize_save_expr_r (tree *expr_p, int *walk_subtrees, void *data) ++{ ++ struct pointer_set_t *pset = (struct pointer_set_t *)data; ++ tree expr = *expr_p; ++ if (TREE_CODE (expr) == SAVE_EXPR) ++ { ++ tree op = TREE_OPERAND (expr, 0); ++ cp_walk_tree (&op, stabilize_save_expr_r, data, pset); ++ if (TREE_SIDE_EFFECTS (op)) ++ TREE_OPERAND (expr, 0) = get_temp_regvar (TREE_TYPE (op), op); ++ *walk_subtrees = 0; ++ } ++ else if (!EXPR_P (expr) || !TREE_SIDE_EFFECTS (expr)) ++ *walk_subtrees = 0; ++ return NULL; ++} ++ ++/* Entry point for the above. */ ++ ++static void ++stabilize_vla_size (tree size) ++{ ++ struct pointer_set_t *pset = pointer_set_create (); ++ /* Break out any function calls into temporary variables. */ ++ cp_walk_tree (&size, stabilize_save_expr_r, pset, pset); ++} ++ + /* Given the SIZE (i.e., number of elements) in an array, compute an + appropriate index type for the array. If non-NULL, NAME is the + name of the thing being declared. */ +@@ -8951,7 +8984,12 @@ grokdeclarator (const cp_declarator *declarator, + && (decl_context == NORMAL || decl_context == FIELD) + && at_function_scope_p () + && variably_modified_type_p (type, NULL_TREE)) +- finish_expr_stmt (TYPE_SIZE (type)); ++ { ++ /* First break out any side-effects. */ ++ stabilize_vla_size (TYPE_SIZE (type)); ++ /* And then force evaluation of the SAVE_EXPR. */ ++ finish_expr_stmt (TYPE_SIZE (type)); ++ } + + if (declarator->kind == cdk_reference) + { +@@ -9026,6 +9064,14 @@ grokdeclarator (const cp_declarator *declarator, + } + } + ++ /* We need to stabilize side-effects in VLA sizes for regular array ++ declarations too, not just pointers to arrays. */ ++ if (type != error_mark_node && !TYPE_NAME (type) ++ && (decl_context == NORMAL || decl_context == FIELD) ++ && at_function_scope_p () ++ && variably_modified_type_p (type, NULL_TREE)) ++ stabilize_vla_size (TYPE_SIZE (type)); ++ + /* A `constexpr' specifier used in an object declaration declares + the object as `const'. */ + if (constexpr_p && innermost_code != cdk_function) +diff --git a/gcc/cp/init.c b/gcc/cp/init.c +index 4798257..ff94b71 100644 +--- a/gcc/cp/init.c ++++ b/gcc/cp/init.c +@@ -45,7 +45,6 @@ static void expand_virtual_init (tree, tree); + static tree sort_mem_initializers (tree, tree); + static tree initializing_context (tree); + static void expand_cleanup_for_base (tree, tree); +-static tree get_temp_regvar (tree, tree); + static tree dfs_initialize_vtbl_ptrs (tree, void *); + static tree build_dtor_call (tree, special_function_kind, int); + static tree build_field_list (tree, tree, int *); +@@ -2871,7 +2870,7 @@ create_temporary_var (tree type) + things when it comes time to do final cleanups (which take place + "outside" the binding contour of the function). */ + +-static tree ++tree + get_temp_regvar (tree type, tree init) + { + tree decl; +new file mode 100644 +index 0000000..401c4e0 +--- /dev/null ++++ b/gcc/testsuite/c-c++-common/vla-1.c +@@ -0,0 +1,21 @@ ++/* Test that changes to a variable are reflected in a VLA later in the ++ expression. */ ++/* { dg-options "" } */ ++ ++#ifdef __cplusplus ++extern "C" ++#endif ++void abort(); ++ ++int i = 4; ++int f() ++{ ++ return i; ++} ++ ++int main() ++{ ++ if (i+=2, sizeof(*(int(*)[f()])0) != 6*sizeof(int)) ++ abort(); ++ return 0; ++} +diff --git a/gcc/testsuite/g++.dg/ext/vla10.C b/gcc/testsuite/g++.dg/ext/vla10.C +new file mode 100644 +index 0000000..17cdb2f +--- /dev/null ++++ b/gcc/testsuite/g++.dg/ext/vla10.C +@@ -0,0 +1,32 @@ ++// PR c++/48446 ++// { dg-options "" } ++ ++template<typename T> ++struct A ++{ ++ ~A (); ++ T *operator-> () const; ++}; ++ ++struct B ++{ ++ typedef A <B> P; ++ static P foo (int); ++}; ++ ++struct C ++{ ++ typedef A<C> P; ++ static const int c = 80; ++}; ++ ++C::P bar (); ++ ++void ++baz () ++{ ++ char z[bar ()->c]; ++ { ++ B::P m = B::foo (sizeof (z)); ++ } ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0234-PR-c-48911.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0234-PR-c-48911.patch new file mode 100644 index 000000000..24270d4ef --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0234-PR-c-48911.patch @@ -0,0 +1,96 @@ +From 68a4f9142fb55bcae7e9d73a9f68450d00ff0307 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 21:58:37 +0000 +Subject: [PATCH] PR c++/48911 + * semantics.c (cxx_eval_array_reference): Handle implicit + initializers. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173515 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 8f621b9..8fd1820 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -6280,6 +6280,7 @@ cxx_eval_array_reference (const constexpr_call *call, tree t, + non_constant_p); + tree index, oldidx; + HOST_WIDE_INT i; ++ tree elem_type; + unsigned len, elem_nchars = 1; + if (*non_constant_p) + return t; +@@ -6292,16 +6293,27 @@ cxx_eval_array_reference (const constexpr_call *call, tree t, + return t; + else if (addr) + return build4 (ARRAY_REF, TREE_TYPE (t), ary, index, NULL, NULL); ++ elem_type = TREE_TYPE (TREE_TYPE (ary)); + if (TREE_CODE (ary) == CONSTRUCTOR) + len = CONSTRUCTOR_NELTS (ary); + else + { +- elem_nchars = (TYPE_PRECISION (TREE_TYPE (TREE_TYPE (ary))) ++ elem_nchars = (TYPE_PRECISION (elem_type) + / TYPE_PRECISION (char_type_node)); + len = (unsigned) TREE_STRING_LENGTH (ary) / elem_nchars; + } + if (compare_tree_int (index, len) >= 0) + { ++ if (tree_int_cst_lt (index, array_type_nelts_top (TREE_TYPE (ary)))) ++ { ++ /* If it's within the array bounds but doesn't have an explicit ++ initializer, it's value-initialized. */ ++ tree val = build_value_init (elem_type, tf_warning_or_error); ++ return cxx_eval_constant_expression (call, val, ++ allow_non_constant, addr, ++ non_constant_p); ++ } ++ + if (!allow_non_constant) + error ("array subscript out of bound"); + *non_constant_p = true; +new file mode 100644 +index 0000000..547f552 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-missing.C +@@ -0,0 +1,39 @@ ++// PR c++/48911 ++// { dg-do compile } ++// { dg-options "-std=c++0x" } ++ ++#define SA(X) static_assert((X),#X) ++ ++struct A ++{ ++ constexpr A () : a (6) {} ++ int a; ++}; ++ ++int ++main () ++{ ++ constexpr int a[2] = { 42 }; ++ constexpr int i = a[1]; ++ SA(i==0); ++ constexpr int b[1] = { }; ++ constexpr int j = b[0]; ++ SA(j==0); ++ constexpr char c[2] = "a"; ++ constexpr char k = c[1]; ++ SA(k==0); ++ constexpr char d[2] = ""; ++ constexpr char l = d[1]; ++ SA(l==0); ++ constexpr wchar_t e[2] = L"a"; ++ constexpr wchar_t m = e[1]; ++ SA(m==0); ++ constexpr wchar_t f[2] = L""; ++ constexpr wchar_t n = f[1]; ++ SA(n==0); ++ constexpr A g[2] = { A () }; ++ constexpr A o = g[0]; ++ SA(o.a == 6); ++ constexpr A p = g[1]; ++ SA(p.a == 6); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0235-PR-c-48909.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0235-PR-c-48909.patch new file mode 100644 index 000000000..0b96bd32c --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0235-PR-c-48909.patch @@ -0,0 +1,73 @@ +From 011e03ba93f21bead8eae267c82423d5893bf2f3 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 6 May 2011 21:58:44 +0000 +Subject: [PATCH] PR c++/48909 + * semantics.c (cxx_eval_conditional_expression): Check + integer_zerop/onep instead. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173516 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 8fd1820..6b7ec39 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -6255,13 +6255,12 @@ cxx_eval_conditional_expression (const constexpr_call *call, tree t, + allow_non_constant, addr, + non_constant_p); + VERIFY_CONSTANT (val); +- if (val == boolean_true_node) +- return cxx_eval_constant_expression (call, TREE_OPERAND (t, 1), ++ /* Don't VERIFY_CONSTANT the other operands. */ ++ if (integer_zerop (val)) ++ return cxx_eval_constant_expression (call, TREE_OPERAND (t, 2), + allow_non_constant, addr, + non_constant_p); +- gcc_assert (val == boolean_false_node); +- /* Don't VERIFY_CONSTANT here. */ +- return cxx_eval_constant_expression (call, TREE_OPERAND (t, 2), ++ return cxx_eval_constant_expression (call, TREE_OPERAND (t, 1), + allow_non_constant, addr, + non_constant_p); + } +@@ -7828,12 +7827,12 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) + tmp = TREE_OPERAND (t, 0); + if (!potential_constant_expression_1 (tmp, rval, flags)) + return false; +- else if (tmp == boolean_true_node) +- return potential_constant_expression_1 (TREE_OPERAND (t, 1), +- want_rval, flags); +- else if (tmp == boolean_false_node) ++ else if (integer_zerop (tmp)) + return potential_constant_expression_1 (TREE_OPERAND (t, 2), + want_rval, flags); ++ else if (TREE_CODE (tmp) == INTEGER_CST) ++ return potential_constant_expression_1 (TREE_OPERAND (t, 1), ++ want_rval, flags); + for (i = 1; i < 3; ++i) + if (potential_constant_expression_1 (TREE_OPERAND (t, i), + want_rval, tf_none)) +new file mode 100644 +index 0000000..2434096 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-condition2.C +@@ -0,0 +1,18 @@ ++// PR c++/48909 ++// { dg-options -std=c++0x } ++ ++#define SA(X) static_assert((X),#X) ++ ++constexpr int const * is_sorted_until(int const * first, int const * last) ++{ ++ return first == last || first + 1 == last ? last ++ : (*(first + 1) < *first) != false ? first + 1 ++ : is_sorted_until(first + 1, last); ++} ++ ++int main() ++{ ++ static constexpr int array[2] = {0, 1}; ++ constexpr int const * last = is_sorted_until(array, array + 2); ++ SA(last==array+2); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0239-var-tracking.c-find_mem_expr_in_1pdv-Fix-thinko.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0239-var-tracking.c-find_mem_expr_in_1pdv-Fix-thinko.patch new file mode 100644 index 000000000..0891cee10 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0239-var-tracking.c-find_mem_expr_in_1pdv-Fix-thinko.patch @@ -0,0 +1,49 @@ +From c1e5d7daddf5063b108d1cc3d53253208fb6e204 Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 9 May 2011 11:30:23 +0000 +Subject: [PATCH] * var-tracking.c (find_mem_expr_in_1pdv): Fix thinko. + (dataflow_set_preserve_mem_locs): Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173566 138bc75d-0d04-0410-961f-82ee72b054a4 + +index a9efcb1..548afbc 100644 +--- a/gcc/var-tracking.c ++++ b/gcc/var-tracking.c +@@ -4107,8 +4107,9 @@ find_mem_expr_in_1pdv (tree expr, rtx val, htab_t vars) + VALUE_RECURSED_INTO (val) = true; + + for (node = var->var_part[0].loc_chain; node; node = node->next) +- if (MEM_P (node->loc) && MEM_EXPR (node->loc) == expr +- && MEM_OFFSET (node->loc) == 0) ++ if (MEM_P (node->loc) ++ && MEM_EXPR (node->loc) == expr ++ && INT_MEM_OFFSET (node->loc) == 0) + { + where = node; + break; +@@ -4171,11 +4172,10 @@ dataflow_set_preserve_mem_locs (void **slot, void *data) + { + for (loc = var->var_part[0].loc_chain; loc; loc = loc->next) + { +- /* We want to remove dying MEMs that doesn't refer to +- DECL. */ ++ /* We want to remove dying MEMs that doesn't refer to DECL. */ + if (GET_CODE (loc->loc) == MEM + && (MEM_EXPR (loc->loc) != decl +- || MEM_OFFSET (loc->loc)) ++ || INT_MEM_OFFSET (loc->loc) != 0) + && !mem_dies_at_call (loc->loc)) + break; + /* We want to move here MEMs that do refer to DECL. */ +@@ -4219,7 +4219,7 @@ dataflow_set_preserve_mem_locs (void **slot, void *data) + + if (GET_CODE (loc->loc) != MEM + || (MEM_EXPR (loc->loc) == decl +- && MEM_OFFSET (loc->loc) == 0) ++ && INT_MEM_OFFSET (loc->loc) == 0) + || !mem_dies_at_call (loc->loc)) + { + if (old_loc != loc->loc && emit_notes) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0240-Fix-PR-c-48574.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0240-Fix-PR-c-48574.patch new file mode 100644 index 000000000..d4cb2847f --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0240-Fix-PR-c-48574.patch @@ -0,0 +1,63 @@ +From 870a98366a1b44e999c9ecee9e777b10d4c10ec9 Mon Sep 17 00:00:00 2001 +From: dodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 9 May 2011 12:34:19 +0000 +Subject: [PATCH] Fix PR c++/48574 + +gcc/cp/ + + PR c++/48574 + * class.c (fixed_type_or_null): Use type_dependent_p_push to test + if the instance has a dependent initializer. + +gcc/testsuite/ + + PR c++/48574 + * g++.dg/template/dependent-expr8.C: New test case. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173571 138bc75d-0d04-0410-961f-82ee72b054a4 + +index c833329..e1b8645 100644 +--- a/gcc/cp/class.c ++++ b/gcc/cp/class.c +@@ -5937,7 +5937,7 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp) + itself. */ + if (TREE_CODE (instance) == VAR_DECL + && DECL_INITIAL (instance) +- && !type_dependent_expression_p (DECL_INITIAL (instance)) ++ && !type_dependent_expression_p_push (DECL_INITIAL (instance)) + && !htab_find (ht, instance)) + { + tree type; +new file mode 100644 +index 0000000..20014d6 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/template/dependent-expr8.C +@@ -0,0 +1,25 @@ ++// Origin PR c++/48574 ++// { dg-options "-std=c++0x" } ++// { dg-do compile } ++ ++struct A ++{ ++ virtual int foo(); ++}; ++ ++void baz (int); ++ ++template <typename T> ++void ++bar(T x) ++{ ++ A &b = *x; ++ baz (b.foo ()); ++} ++ ++void ++foo() ++{ ++ A a; ++ bar(&a); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0241-2011-05-09-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0241-2011-05-09-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch new file mode 100644 index 000000000..c54a86ff0 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0241-2011-05-09-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch @@ -0,0 +1,26 @@ +From 48d61c502e8f5a441250318ab9bdf747112d08c6 Mon Sep 17 00:00:00 2001 +From: krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 9 May 2011 14:38:22 +0000 +Subject: [PATCH] 2011-05-09 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * config/s390/s390.md (TD/TF mem to reg move splitter): Make the + temporary register to match Pmode. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173573 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 7639d2d..e40a1bb 100644 +--- a/gcc/config/s390/s390.md ++++ b/gcc/config/s390/s390.md +@@ -2026,6 +2026,7 @@ + [(set (match_dup 0) (match_dup 1))] + { + rtx addr = operand_subword (operands[0], 1, 0, <MODE>mode); ++ addr = gen_lowpart (Pmode, addr); + s390_load_address (addr, XEXP (operands[1], 0)); + operands[1] = replace_equiv_address (operands[1], addr); + }) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0242-2011-05-09-Paolo-Carlini-paolo.carlini-oracle.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0242-2011-05-09-Paolo-Carlini-paolo.carlini-oracle.com.patch new file mode 100644 index 000000000..3bcadabc7 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0242-2011-05-09-Paolo-Carlini-paolo.carlini-oracle.com.patch @@ -0,0 +1,44 @@ +From 8f6d830742d2c5d41877ea601a91bccafe59f905 Mon Sep 17 00:00:00 2001 +From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 9 May 2011 23:24:21 +0000 +Subject: [PATCH] 2011-05-09 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/48522 + * g++.dg/cpp0x/pr48522.C: New. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173599 138bc75d-0d04-0410-961f-82ee72b054a4 + +new file mode 100644 +index 0000000..1543d8a +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/pr48522.C +@@ -0,0 +1,24 @@ ++// { dg-options "-std=c++0x" } ++ ++template <typename T> ++struct Handle ++{ ++ Handle(T& t); ++}; ++ ++template<class T> ++struct Class { ++ struct Struct {} data; ++ void f(); ++ void g(); ++}; ++ ++template<class T> ++void Class<T>::f() { ++ Handle< decltype((data)) > handle(data); ++} ++ ++template<class T> ++void Class<T>::g() { ++ Handle< decltype((data)) > handle(data); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0244-PR-tree-optimization-48611.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0244-PR-tree-optimization-48611.patch new file mode 100644 index 000000000..1cef11a01 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0244-PR-tree-optimization-48611.patch @@ -0,0 +1,77 @@ +From c0d3391a217001c01bae1fa84d8a2e5895398235 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 10 May 2011 06:31:59 +0000 +Subject: [PATCH] PR tree-optimization/48611 + PR tree-optimization/48794 + * tree-eh.c (remove_unreachable_handlers): Don't remove regions + referenced from RESX or EH_DISPATCH arguments. + + * gfortran.dg/gomp/pr48611.f90: New test. + * gfortran.dg/gomp/pr48794.f90: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173608 138bc75d-0d04-0410-961f-82ee72b054a4 + +index e61d621..99b02c2 100644 +new file mode 100644 +index 0000000..643cc5c +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/gomp/pr48611.f90 +@@ -0,0 +1,12 @@ ++! PR tree-optimization/48611 ++! { dg-do compile } ++! { dg-options "-Os -fopenmp -fexceptions -fno-tree-ccp -fno-tree-copy-prop" } ++ ++ integer, allocatable :: a(:) ++ logical :: l ++!$omp parallel private (a) reduction (.or.:l) ++ do i = 1, 7 ++ a(:) = i ++ end do ++!$omp end parallel ++end +diff --git a/gcc/testsuite/gfortran.dg/gomp/pr48794.f90 b/gcc/testsuite/gfortran.dg/gomp/pr48794.f90 +new file mode 100644 +index 0000000..11edb0b +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/gomp/pr48794.f90 +@@ -0,0 +1,12 @@ ++! PR tree-optimization/48794 ++! { dg-do compile } ++! { dg-options "-Os -fopenmp -fexceptions -fno-tree-ccp -fno-tree-copy-prop" } ++ ++ integer, allocatable :: a(:) ++ logical :: l ++ if (allocated (a)) call abort ++!$omp parallel private (a) reduction (.or.:l) ++ do i = 1, 7 ++ end do ++!$omp end parallel ++end +diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c +index 0d6158b..19c779c 100644 +--- a/gcc/tree-eh.c ++++ b/gcc/tree-eh.c +@@ -3321,6 +3321,19 @@ remove_unreachable_handlers (void) + SET_BIT (r_reachable, region->index); + SET_BIT (lp_reachable, lp_nr); + } ++ ++ /* Avoid removing regions referenced from RESX/EH_DISPATCH. */ ++ switch (gimple_code (stmt)) ++ { ++ case GIMPLE_RESX: ++ SET_BIT (r_reachable, gimple_resx_region (stmt)); ++ break; ++ case GIMPLE_EH_DISPATCH: ++ SET_BIT (r_reachable, gimple_eh_dispatch_region (stmt)); ++ break; ++ default: ++ break; ++ } + } + } + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0245-Backported-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0245-Backported-from-mainline.patch new file mode 100644 index 000000000..8dad95bd9 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0245-Backported-from-mainline.patch @@ -0,0 +1,73 @@ +From 694cb3e1aa0163eba6e8130a5351ba66a0858207 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 10 May 2011 08:45:00 +0000 +Subject: [PATCH] Backported from mainline + 2011-05-07 Zdenek Dvorak <ook@ucw.cz> + + PR tree-optimization/48837 + * tree-tailcall.c (tree_optimize_tail_calls_1): Do not mark tailcalls + when accumulator transformation is performed. + + * gcc.dg/pr48837.c: New testcase. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173609 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 99b02c2..83f2ff1 100644 +new file mode 100644 +index 0000000..ffc65b9 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr48837.c +@@ -0,0 +1,30 @@ ++/* PR tree-optimization/48837 */ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++void abort (void); ++ ++__attribute__((noinline)) ++int baz(void) ++{ ++ return 1; ++} ++ ++inline const int *bar(const int *a, const int *b) ++{ ++ return *a ? a : b; ++} ++ ++int foo(int a, int b) ++{ ++ return a || b ? baz() : foo(*bar(&a, &b), 1) + foo(1, 0); ++} ++ ++int main(void) ++{ ++ if (foo(0, 0) != 2) ++ abort(); ++ ++ return 0; ++} ++ +diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c +index 85aa82b..e50ecc2 100644 +--- a/gcc/tree-tailcall.c ++++ b/gcc/tree-tailcall.c +@@ -1019,6 +1019,14 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls) + integer_one_node); + } + ++ if (a_acc || m_acc) ++ { ++ /* When the tail call elimination using accumulators is performed, ++ statements adding the accumulated value are inserted at all exits. ++ This turns all other tail calls to non-tail ones. */ ++ opt_tailcalls = false; ++ } ++ + for (; tailcalls; tailcalls = next) + { + next = tailcalls->next; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0246-config-rx-rx.h-JUMP_ALIGN-LABEL_ALIGN-LOOP_ALIGN-Def.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0246-config-rx-rx.h-JUMP_ALIGN-LABEL_ALIGN-LOOP_ALIGN-Def.patch new file mode 100644 index 000000000..b5a0eabef --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0246-config-rx-rx.h-JUMP_ALIGN-LABEL_ALIGN-LOOP_ALIGN-Def.patch @@ -0,0 +1,76 @@ +From 37b0c0c107be5a66e933f54befeb9eb22e4d072b Mon Sep 17 00:00:00 2001 +From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 10 May 2011 10:34:44 +0000 +Subject: [PATCH] * config/rx/rx.h (JUMP_ALIGN, LABEL_ALIGN, LOOP_ALIGN): Define. + (LABEL_ALIGN_AFTER_BARRIER): Pass label to rx_align_for_label + * config/rx/rx.c (rx_align_for_label): Add label and + uses_threshold parameters. Do not align when the label is not + used enough. + * config/rx/rx-protos.h (rx_align_for_label): Update prototype. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173613 138bc75d-0d04-0410-961f-82ee72b054a4 + +index e1ab9c2..8c8862e 100644 +--- a/gcc/config/rx/rx-protos.h ++++ b/gcc/config/rx/rx-protos.h +@@ -30,7 +30,7 @@ extern void rx_expand_prologue (void); + extern int rx_initial_elimination_offset (int, int); + + #ifdef RTX_CODE +-extern int rx_align_for_label (void); ++extern int rx_align_for_label (rtx, int); + extern void rx_emit_stack_popm (rtx *, bool); + extern void rx_emit_stack_pushm (rtx *); + extern void rx_expand_epilogue (bool); +@@ -38,7 +38,7 @@ extern char * rx_gen_move_template (rtx *, bool); + extern bool rx_is_legitimate_constant (rtx); + extern bool rx_is_restricted_memory_address (rtx, Mmode); + extern bool rx_match_ccmode (rtx, Mmode); +-extern void rx_notice_update_cc (rtx body, rtx insn); ++extern void rx_notice_update_cc (rtx, rtx); + extern void rx_split_cbranch (Mmode, Rcode, rtx, rtx, rtx); + extern Mmode rx_select_cc_mode (Rcode, rtx, rtx); + #endif +diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c +index ad8d0bb..f56e779 100644 +--- a/gcc/config/rx/rx.c ++++ b/gcc/config/rx/rx.c +@@ -2752,8 +2752,15 @@ rx_match_ccmode (rtx insn, enum machine_mode cc_mode) + + + int +-rx_align_for_label (void) ++rx_align_for_label (rtx lab, int uses_threshold) + { ++ /* This is a simple heuristic to guess when an alignment would not be useful ++ because the delay due to the inserted NOPs would be greater than the delay ++ due to the misaligned branch. If uses_threshold is zero then the alignment ++ is always useful. */ ++ if (LABEL_NUSES (lab) < uses_threshold) ++ return 0; ++ + return optimize_size ? 1 : 3; + } + +diff --git a/gcc/config/rx/rx.h b/gcc/config/rx/rx.h +index 01fc23b..4a88a5b 100644 +--- a/gcc/config/rx/rx.h ++++ b/gcc/config/rx/rx.h +@@ -617,7 +617,13 @@ typedef unsigned int CUMULATIVE_ARGS; + + #define SELECT_CC_MODE(OP,X,Y) rx_select_cc_mode((OP), (X), (Y)) + +-#define LABEL_ALIGN_AFTER_BARRIER(x) rx_align_for_label () ++/* Compute the alignment needed for label X in various situations. ++ If the user has specified an alignment then honour that, otherwise ++ use rx_align_for_label. */ ++#define JUMP_ALIGN(x) (align_jumps ? align_jumps : rx_align_for_label (x, 0)) ++#define LABEL_ALIGN(x) (align_labels ? align_labels : rx_align_for_label (x, 3)) ++#define LOOP_ALIGN(x) (align_loops ? align_loops : rx_align_for_label (x, 2)) ++#define LABEL_ALIGN_AFTER_BARRIER(x) rx_align_for_label (x, 0) + + #define ASM_OUTPUT_MAX_SKIP_ALIGN(STREAM, LOG, MAX_SKIP) \ + do \ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0248-config-rx-rx.c-rx_memory_move_cost-Reduce-the-cost-f.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0248-config-rx-rx.c-rx_memory_move_cost-Reduce-the-cost-f.patch new file mode 100644 index 000000000..b8358eaf4 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0248-config-rx-rx.c-rx_memory_move_cost-Reduce-the-cost-f.patch @@ -0,0 +1,23 @@ +From 072020dc11d2dc8871ea399055d1a5490b736550 Mon Sep 17 00:00:00 2001 +From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 10 May 2011 11:24:14 +0000 +Subject: [PATCH] * config/rx/rx.c (rx_memory_move_cost): Reduce the cost for + stores. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173616 138bc75d-0d04-0410-961f-82ee72b054a4 + +index f56e779..6fd1153 100644 +--- a/gcc/config/rx/rx.c ++++ b/gcc/config/rx/rx.c +@@ -2595,7 +2595,7 @@ rx_trampoline_init (rtx tramp, tree fndecl, rtx chain) + static int + rx_memory_move_cost (enum machine_mode mode, reg_class_t regclass, bool in) + { +- return 2 + memory_move_secondary_cost (mode, regclass, in); ++ return (in ? 2:0) + memory_move_secondary_cost (mode, regclass, in); + } + + /* Convert a CC_MODE to the set of flags that it represents. */ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0249-Fix-PRs-48857-48495.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0249-Fix-PRs-48857-48495.patch new file mode 100644 index 000000000..3ce403368 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0249-Fix-PRs-48857-48495.patch @@ -0,0 +1,216 @@ +From b23f5c480c106bc2d61b85263db9cb51d321dbc8 Mon Sep 17 00:00:00 2001 +From: meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 10 May 2011 19:59:20 +0000 +Subject: [PATCH] Fix PRs 48857, 48495 + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173634 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 5019347..898a87b 100644 +--- a/gcc/config/rs6000/rs6000.c ++++ b/gcc/config/rs6000/rs6000.c +@@ -7891,7 +7891,7 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode) + + /* Nonzero if we can use an AltiVec register to pass this arg. */ + #define USE_ALTIVEC_FOR_ARG_P(CUM,MODE,TYPE,NAMED) \ +- ((ALTIVEC_VECTOR_MODE (MODE) || VSX_VECTOR_MODE (MODE)) \ ++ (ALTIVEC_OR_VSX_VECTOR_MODE (MODE) \ + && (CUM)->vregno <= ALTIVEC_ARG_MAX_REG \ + && TARGET_ALTIVEC_ABI \ + && (NAMED)) +@@ -8091,8 +8091,7 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype, + } + if (SCALAR_FLOAT_MODE_P (return_mode)) + rs6000_passes_float = true; +- else if (ALTIVEC_VECTOR_MODE (return_mode) +- || VSX_VECTOR_MODE (return_mode) ++ else if (ALTIVEC_OR_VSX_VECTOR_MODE (return_mode) + || SPE_VECTOR_MODE (return_mode)) + rs6000_passes_vector = true; + } +@@ -8190,7 +8189,7 @@ function_arg_padding (enum machine_mode mode, const_tree type) + existing library interfaces. + + Doubleword align SPE vectors. +- Quadword align Altivec vectors. ++ Quadword align Altivec/VSX vectors. + Quadword align large synthetic vector types. */ + + static unsigned int +@@ -8207,7 +8206,7 @@ rs6000_function_arg_boundary (enum machine_mode mode, const_tree type) + && int_size_in_bytes (type) >= 8 + && int_size_in_bytes (type) < 16)) + return 64; +- else if ((ALTIVEC_VECTOR_MODE (mode) || VSX_VECTOR_MODE (mode)) ++ else if (ALTIVEC_OR_VSX_VECTOR_MODE (mode) + || (type && TREE_CODE (type) == VECTOR_TYPE + && int_size_in_bytes (type) >= 16)) + return 128; +@@ -8427,7 +8426,7 @@ rs6000_function_arg_advance_1 (CUMULATIVE_ARGS *cum, enum machine_mode mode, + { + if (SCALAR_FLOAT_MODE_P (mode)) + rs6000_passes_float = true; +- else if (named && (ALTIVEC_VECTOR_MODE (mode) || VSX_VECTOR_MODE (mode))) ++ else if (named && ALTIVEC_OR_VSX_VECTOR_MODE (mode)) + rs6000_passes_vector = true; + else if (SPE_VECTOR_MODE (mode) + && !cum->stdarg +@@ -8437,8 +8436,7 @@ rs6000_function_arg_advance_1 (CUMULATIVE_ARGS *cum, enum machine_mode mode, + #endif + + if (TARGET_ALTIVEC_ABI +- && (ALTIVEC_VECTOR_MODE (mode) +- || VSX_VECTOR_MODE (mode) ++ && (ALTIVEC_OR_VSX_VECTOR_MODE (mode) + || (type && TREE_CODE (type) == VECTOR_TYPE + && int_size_in_bytes (type) == 16))) + { +@@ -9056,8 +9054,7 @@ rs6000_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, + else + return gen_rtx_REG (mode, cum->vregno); + else if (TARGET_ALTIVEC_ABI +- && (ALTIVEC_VECTOR_MODE (mode) +- || VSX_VECTOR_MODE (mode) ++ && (ALTIVEC_OR_VSX_VECTOR_MODE (mode) + || (type && TREE_CODE (type) == VECTOR_TYPE + && int_size_in_bytes (type) == 16))) + { +@@ -19983,7 +19980,7 @@ emit_frame_save (rtx frame_reg, rtx frame_ptr, enum machine_mode mode, + + /* Some cases that need register indexed addressing. */ + if ((TARGET_ALTIVEC_ABI && ALTIVEC_VECTOR_MODE (mode)) +- || (TARGET_VSX && VSX_VECTOR_MODE (mode)) ++ || (TARGET_VSX && ALTIVEC_OR_VSX_VECTOR_MODE (mode)) + || (TARGET_E500_DOUBLE && mode == DFmode) + || (TARGET_SPE_ABI + && SPE_VECTOR_MODE (mode) +@@ -27266,13 +27263,12 @@ rs6000_function_value (const_tree valtype, + else if (TREE_CODE (valtype) == COMPLEX_TYPE + && targetm.calls.split_complex_arg) + return rs6000_complex_function_value (mode); ++ /* VSX is a superset of Altivec and adds V2DImode/V2DFmode. Since the same ++ return register is used in both cases, and we won't see V2DImode/V2DFmode ++ for pure altivec, combine the two cases. */ + else if (TREE_CODE (valtype) == VECTOR_TYPE + && TARGET_ALTIVEC && TARGET_ALTIVEC_ABI +- && ALTIVEC_VECTOR_MODE (mode)) +- regno = ALTIVEC_ARG_RETURN; +- else if (TREE_CODE (valtype) == VECTOR_TYPE +- && TARGET_VSX && TARGET_ALTIVEC_ABI +- && VSX_VECTOR_MODE (mode)) ++ && ALTIVEC_OR_VSX_VECTOR_MODE (mode)) + regno = ALTIVEC_ARG_RETURN; + else if (TARGET_E500_DOUBLE && TARGET_HARD_FLOAT + && (mode == DFmode || mode == DCmode +@@ -27312,12 +27308,12 @@ rs6000_libcall_value (enum machine_mode mode) + && TARGET_HARD_FLOAT && TARGET_FPRS + && ((TARGET_SINGLE_FLOAT && mode == SFmode) || TARGET_DOUBLE_FLOAT)) + regno = FP_ARG_RETURN; +- else if (ALTIVEC_VECTOR_MODE (mode) ++ /* VSX is a superset of Altivec and adds V2DImode/V2DFmode. Since the same ++ return register is used in both cases, and we won't see V2DImode/V2DFmode ++ for pure altivec, combine the two cases. */ ++ else if (ALTIVEC_OR_VSX_VECTOR_MODE (mode) + && TARGET_ALTIVEC && TARGET_ALTIVEC_ABI) + regno = ALTIVEC_ARG_RETURN; +- else if (VSX_VECTOR_MODE (mode) +- && TARGET_VSX && TARGET_ALTIVEC_ABI) +- regno = ALTIVEC_ARG_RETURN; + else if (COMPLEX_MODE_P (mode) && targetm.calls.split_complex_arg) + return rs6000_complex_function_value (mode); + else if (TARGET_E500_DOUBLE && TARGET_HARD_FLOAT +diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h +index 4913456..72b47ec 100644 +--- a/gcc/config/rs6000/rs6000.h ++++ b/gcc/config/rs6000/rs6000.h +@@ -1007,10 +1007,9 @@ extern unsigned rs6000_pointer_size; + + /* When setting up caller-save slots (MODE == VOIDmode) ensure we allocate + enough space to account for vectors in FP regs. */ +-#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ +- (TARGET_VSX \ +- && ((MODE) == VOIDmode || VSX_VECTOR_MODE (MODE) \ +- || ALTIVEC_VECTOR_MODE (MODE)) \ ++#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ ++ (TARGET_VSX \ ++ && ((MODE) == VOIDmode || ALTIVEC_OR_VSX_VECTOR_MODE (MODE)) \ + && FP_REGNO_P (REGNO) \ + ? V2DFmode \ + : choose_hard_reg_mode ((REGNO), (NREGS), false)) +@@ -1026,25 +1025,16 @@ extern unsigned rs6000_pointer_size; + ((MODE) == V4SFmode \ + || (MODE) == V2DFmode) \ + +-#define VSX_SCALAR_MODE(MODE) \ +- ((MODE) == DFmode) +- +-#define VSX_MODE(MODE) \ +- (VSX_VECTOR_MODE (MODE) \ +- || VSX_SCALAR_MODE (MODE)) +- +-#define VSX_MOVE_MODE(MODE) \ +- (VSX_VECTOR_MODE (MODE) \ +- || VSX_SCALAR_MODE (MODE) \ +- || ALTIVEC_VECTOR_MODE (MODE) \ +- || (MODE) == TImode) +- + #define ALTIVEC_VECTOR_MODE(MODE) \ + ((MODE) == V16QImode \ + || (MODE) == V8HImode \ + || (MODE) == V4SFmode \ + || (MODE) == V4SImode) + ++#define ALTIVEC_OR_VSX_VECTOR_MODE(MODE) \ ++ (ALTIVEC_VECTOR_MODE (MODE) || VSX_VECTOR_MODE (MODE) \ ++ || (MODE) == V2DImode) ++ + #define SPE_VECTOR_MODE(MODE) \ + ((MODE) == V4HImode \ + || (MODE) == V2SFmode \ +@@ -1080,10 +1070,10 @@ extern unsigned rs6000_pointer_size; + ? ALTIVEC_VECTOR_MODE (MODE2) \ + : ALTIVEC_VECTOR_MODE (MODE2) \ + ? ALTIVEC_VECTOR_MODE (MODE1) \ +- : VSX_VECTOR_MODE (MODE1) \ +- ? VSX_VECTOR_MODE (MODE2) \ +- : VSX_VECTOR_MODE (MODE2) \ +- ? VSX_VECTOR_MODE (MODE1) \ ++ : ALTIVEC_OR_VSX_VECTOR_MODE (MODE1) \ ++ ? ALTIVEC_OR_VSX_VECTOR_MODE (MODE2) \ ++ : ALTIVEC_OR_VSX_VECTOR_MODE (MODE2) \ ++ ? ALTIVEC_OR_VSX_VECTOR_MODE (MODE1) \ + : 1) + + /* Post-reload, we can't use any new AltiVec registers, as we already +new file mode 100644 +index 0000000..e8201c0 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/powerpc/pr48857.c +@@ -0,0 +1,25 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ ++/* { dg-require-effective-target powerpc_vsx_ok } */ ++/* { dg-options "-O2 -mcpu=power7 -mabi=altivec" } */ ++/* { dg-final { scan-assembler-times "lxvd2x" 1 } } */ ++/* { dg-final { scan-assembler-times "stxvd2x" 1 } } */ ++/* { dg-final { scan-assembler-not "ld" } } */ ++/* { dg-final { scan-assembler-not "lwz" } } */ ++/* { dg-final { scan-assembler-not "stw" } } */ ++/* { dg-final { scan-assembler-not "addi" } } */ ++ ++typedef vector long long v2di_type; ++ ++v2di_type ++return_v2di (v2di_type *ptr) ++{ ++ return *ptr; /* should generate lxvd2x 34,0,3. */ ++} ++ ++void ++pass_v2di (v2di_type arg, v2di_type *ptr) ++{ ++ *ptr = arg; /* should generate stxvd2x 34,0,{3,5}. */ ++} ++ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0251-gcc-cp-ChangeLog.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0251-gcc-cp-ChangeLog.patch new file mode 100644 index 000000000..8a3b1d312 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0251-gcc-cp-ChangeLog.patch @@ -0,0 +1,55 @@ +From c58e945d1146bbe7778e5acc3d6079581cbcdc4b Mon Sep 17 00:00:00 2001 +From: fabien <fabien@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 11 May 2011 06:03:38 +0000 +Subject: [PATCH] gcc/cp/ChangeLog: + +2011-05-11 Fabien Chene <fabien@gcc.gnu.org> + PR c++/48859 + * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the + recursion if there is user defined constructor. + +gcc/testsuite/ChangeLog: + +2011-05-11 Fabien Chene <fabien@gcc.gnu.org> + PR c++/48859 + * g++.dg/init/pr48859.C: New. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173644 138bc75d-0d04-0410-961f-82ee72b054a4 + +index ff94b71..286bfb6 100644 +--- a/gcc/cp/init.c ++++ b/gcc/cp/init.c +@@ -1904,6 +1904,9 @@ diagnose_uninitialized_cst_or_ref_member_1 (tree type, tree origin, + + field_type = strip_array_types (TREE_TYPE (field)); + ++ if (type_has_user_provided_constructor (field_type)) ++ continue; ++ + if (TREE_CODE (field_type) == REFERENCE_TYPE) + { + ++ error_count; +new file mode 100644 +index 0000000..8ef5c2e +--- /dev/null ++++ b/gcc/testsuite/g++.dg/init/pr48859.C +@@ -0,0 +1,14 @@ ++// PR c++/48859 ++// { dg-do compile } ++ ++struct HasConstructor { ++ HasConstructor() {} ++}; ++ ++class ConstMember { ++ const HasConstructor empty_; ++}; ++ ++void foo() { ++ new ConstMember; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0252-PR-debug-48159.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0252-PR-debug-48159.patch new file mode 100644 index 000000000..814028e1b --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0252-PR-debug-48159.patch @@ -0,0 +1,198 @@ +From 36c5622ac8aca9636fb541d3689b9dd3ca9e0c27 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 11 May 2011 13:07:54 +0000 +Subject: [PATCH] PR debug/48159 + * tree-ssa.c (reset_debug_uses): New function. + * tree-flow.h (reset_debug_uses): New prototype. + * tree-data-ref.c (stmts_from_loop): Ignore debug stmts. + * tree-loop-distribution.c (generate_loops_for_partition): Call + reset_debug_uses on the stmts that will be removed. Keep around + all debug stmts, don't count them as bits in partition bitmap. + (generate_builtin): Don't count debug stmts or labels as bits in + partition bitmap. + + * gcc.dg/pr48159-1.c: New test. + * gcc.dg/pr48159-2.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173657 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 3b64229..209b80b 100644 +new file mode 100644 +index 0000000..cd67e63 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr48159-1.c +@@ -0,0 +1,10 @@ ++/* PR debug/48159 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fcompare-debug" } */ ++ ++void ++foo (double x, int y, double *__restrict z, double *__restrict w) ++{ ++ while (y--) ++ *z++ = (*w++ = 0) * x; ++} +diff --git a/gcc/testsuite/gcc.dg/pr48159-2.c b/gcc/testsuite/gcc.dg/pr48159-2.c +new file mode 100644 +index 0000000..25596bf +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr48159-2.c +@@ -0,0 +1,22 @@ ++/* PR debug/48159 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -ftree-loop-distribution -fcompare-debug" } */ ++ ++int foo (int * __restrict__ ia, int * __restrict__ ib, ++ int * __restrict__ oxa, int * __restrict__ oxb) ++{ ++ int i; ++ int oya[52], oyb[52]; ++ for (i = 0; i < 52; i++) ++ { ++ int w1 = ia[i]; ++ int w2 = oxa[i]; ++ int w3 = ib[i]; ++ int w4 = oxb[i]; ++ int w5 = w1 + w2 + 5; ++ oya[i] = (w1 * w2) >> 10; ++ int w6 = w3 + w4 + 6; ++ oyb[i] = (w3 * w4) >> 10; ++ } ++ return oya[22] + oyb[21]; ++} +diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c +index 54cb46c..39eab47 100644 +--- a/gcc/tree-data-ref.c ++++ b/gcc/tree-data-ref.c +@@ -1,5 +1,5 @@ + /* Data references and dependences detectors. +- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ++ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. + Contributed by Sebastian Pop <pop@cri.ensmp.fr> + +@@ -4975,7 +4975,7 @@ stmts_from_loop (struct loop *loop, VEC (gimple, heap) **stmts) + for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi)) + { + stmt = gsi_stmt (bsi); +- if (gimple_code (stmt) != GIMPLE_LABEL) ++ if (gimple_code (stmt) != GIMPLE_LABEL && !is_gimple_debug (stmt)) + VEC_safe_push (gimple, heap, *stmts, stmt); + } + } +diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h +index 14c8827..0777aec 100644 +--- a/gcc/tree-flow.h ++++ b/gcc/tree-flow.h +@@ -559,6 +559,7 @@ extern void walk_use_def_chains (tree, walk_use_def_chains_fn, void *, bool); + + void insert_debug_temps_for_defs (gimple_stmt_iterator *); + void insert_debug_temp_for_var_def (gimple_stmt_iterator *, tree); ++void reset_debug_uses (gimple); + void release_defs_bitset (bitmap toremove); + + /* In tree-into-ssa.c */ +diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c +index 5b147e3..1d6944e 100644 +--- a/gcc/tree-loop-distribution.c ++++ b/gcc/tree-loop-distribution.c +@@ -1,5 +1,5 @@ + /* Loop distribution. +- Copyright (C) 2006, 2007, 2008, 2009, 2010 ++ Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. + Contributed by Georges-Andre Silber <Georges-Andre.Silber@ensmp.fr> + and Sebastian Pop <sebastian.pop@amd.com>. +@@ -181,6 +181,25 @@ generate_loops_for_partition (struct loop *loop, bitmap partition, bool copy_p) + stmts_from_loop. */ + bbs = get_loop_body_in_dom_order (loop); + ++ if (MAY_HAVE_DEBUG_STMTS) ++ for (x = 0, i = 0; i < loop->num_nodes; i++) ++ { ++ basic_block bb = bbs[i]; ++ ++ for (bsi = gsi_start_phis (bb); !gsi_end_p (bsi); gsi_next (&bsi)) ++ if (!bitmap_bit_p (partition, x++)) ++ reset_debug_uses (gsi_stmt (bsi)); ++ ++ for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi)) ++ { ++ gimple stmt = gsi_stmt (bsi); ++ if (gimple_code (stmt) != GIMPLE_LABEL ++ && !is_gimple_debug (stmt) ++ && !bitmap_bit_p (partition, x++)) ++ reset_debug_uses (stmt); ++ } ++ } ++ + for (x = 0, i = 0; i < loop->num_nodes; i++) + { + basic_block bb = bbs[i]; +@@ -199,7 +218,8 @@ generate_loops_for_partition (struct loop *loop, bitmap partition, bool copy_p) + for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi);) + { + gimple stmt = gsi_stmt (bsi); +- if (gimple_code (gsi_stmt (bsi)) != GIMPLE_LABEL ++ if (gimple_code (stmt) != GIMPLE_LABEL ++ && !is_gimple_debug (stmt) + && !bitmap_bit_p (partition, x++)) + { + unlink_stmt_vdef (stmt); +@@ -312,7 +332,9 @@ generate_builtin (struct loop *loop, bitmap partition, bool copy_p) + { + gimple stmt = gsi_stmt (bsi); + +- if (bitmap_bit_p (partition, x++) ++ if (gimple_code (stmt) != GIMPLE_LABEL ++ && !is_gimple_debug (stmt) ++ && bitmap_bit_p (partition, x++) + && is_gimple_assign (stmt) + && !is_gimple_reg (gimple_assign_lhs (stmt))) + { +diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c +index da6cc9b..0455680 100644 +--- a/gcc/tree-ssa.c ++++ b/gcc/tree-ssa.c +@@ -507,6 +507,37 @@ insert_debug_temps_for_defs (gimple_stmt_iterator *gsi) + } + } + ++/* Reset all debug stmts that use SSA_NAME(s) defined in STMT. */ ++ ++void ++reset_debug_uses (gimple stmt) ++{ ++ ssa_op_iter op_iter; ++ def_operand_p def_p; ++ imm_use_iterator imm_iter; ++ gimple use_stmt; ++ ++ if (!MAY_HAVE_DEBUG_STMTS) ++ return; ++ ++ FOR_EACH_PHI_OR_STMT_DEF (def_p, stmt, op_iter, SSA_OP_DEF) ++ { ++ tree var = DEF_FROM_PTR (def_p); ++ ++ if (TREE_CODE (var) != SSA_NAME) ++ continue; ++ ++ FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, var) ++ { ++ if (!gimple_debug_bind_p (use_stmt)) ++ continue; ++ ++ gimple_debug_bind_reset_value (use_stmt); ++ update_stmt (use_stmt); ++ } ++ } ++} ++ + /* Delete SSA DEFs for SSA versions in the TOREMOVE bitmap, removing + dominated stmts before their dominators, so that release_ssa_defs + stands a chance of propagating DEFs into debug bind stmts. */ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0253-2011-05-11-Tobias-Burnus-burnus-net-b.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0253-2011-05-11-Tobias-Burnus-burnus-net-b.de.patch new file mode 100644 index 000000000..e5ab1d41e --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0253-2011-05-11-Tobias-Burnus-burnus-net-b.de.patch @@ -0,0 +1,159 @@ +From 48167dc2032887845cf3ca5570c783bb38e3b930 Mon Sep 17 00:00:00 2001 +From: burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 11 May 2011 20:31:14 +0000 +Subject: [PATCH] 2011-05-11 Tobias Burnus <burnus@net-b.de> + + PR fortran/48889 + * expr.c (gfc_is_constant_expr): Use e->value.function.esym + instead of e->symtree->n.sym, if available. + +2011-05-11 Tobias Burnus <burnus@net-b.de> + + PR fortran/48889 + * gfortran.dg/generic_24.f90: New. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173675 138bc75d-0d04-0410-961f-82ee72b054a4 + +index cfa1d57..76272c4 100644 +--- a/gcc/fortran/expr.c ++++ b/gcc/fortran/expr.c +@@ -894,6 +894,9 @@ gfc_is_constant_expr (gfc_expr *e) + case EXPR_FUNCTION: + case EXPR_PPC: + case EXPR_COMPCALL: ++ gcc_assert (e->symtree || e->value.function.esym ++ || e->value.function.isym); ++ + /* Call to intrinsic with at least one argument. */ + if (e->value.function.isym && e->value.function.actual) + { +@@ -902,13 +905,14 @@ gfc_is_constant_expr (gfc_expr *e) + return 0; + } + +- /* Make sure we have a symbol. */ +- gcc_assert (e->symtree); +- +- sym = e->symtree->n.sym; +- + /* Specification functions are constant. */ + /* F95, 7.1.6.2; F2003, 7.1.7 */ ++ sym = NULL; ++ if (e->symtree) ++ sym = e->symtree->n.sym; ++ if (e->value.function.esym) ++ sym = e->value.function.esym; ++ + if (sym + && sym->attr.function + && sym->attr.pure +new file mode 100644 +index 0000000..2388722 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/generic_24.f90 +@@ -0,0 +1,100 @@ ++! { dg-do compile } ++! ++! PR fortran/48889 ++! ++! Thanks for ++! reporting to Lawrence Mitchell ++! for the test case to David Ham ++! ++module sparse_tools ++ implicit none ++ private ++ ++ type csr_foo ++ integer, dimension(:), pointer :: colm=>null() ++ end type csr_foo ++ ++ type block_csr_matrix ++ type(csr_foo) :: sparsity ++ end type block_csr_matrix ++ ++ interface attach_block ++ module procedure block_csr_attach_block ++ end interface ++ ++ interface size ++ module procedure sparsity_size ++ end interface ++ ++ public :: size, attach_block ++contains ++ subroutine block_csr_attach_block(matrix, val) ++ type(block_csr_matrix), intent(inout) :: matrix ++ real, dimension(size(matrix%sparsity%colm)), intent(in), target :: val ++ end subroutine block_csr_attach_block ++ ++ pure function sparsity_size(sparsity, dim) ++ integer :: sparsity_size ++ type(csr_foo), intent(in) :: sparsity ++ integer, optional, intent(in) :: dim ++ end function sparsity_size ++end module sparse_tools ++ ++module global_numbering ++ use sparse_tools ++ implicit none ++ ++ type ele_numbering_type ++ integer :: boundaries ++ end type ele_numbering_type ++ ++ type element_type ++ integer :: loc ++ type(ele_numbering_type), pointer :: numbering=>null() ++ end type element_type ++ ++ type csr_sparsity ++ end type csr_sparsity ++ ++ interface size ++ module procedure sparsity_size ++ end interface size ++contains ++ pure function sparsity_size(sparsity, dim) ++ integer :: sparsity_size ++ type(csr_sparsity), intent(in) :: sparsity ++ integer, optional, intent(in) :: dim ++ end function sparsity_size ++ ++ subroutine make_boundary_numbering(EEList, xndglno, ele_n) ++ type(csr_sparsity), intent(in) :: EEList ++ type(element_type), intent(in) :: ele_n ++ integer, dimension(size(EEList,1)*ele_n%loc), intent(in), target ::& ++ & xndglno ++ integer, dimension(ele_n%numbering%boundaries) :: neigh ++ integer :: j ++ j=size(neigh) ++ end subroutine make_boundary_numbering ++end module global_numbering ++ ++module sparse_matrices_fields ++ use sparse_tools ++implicit none ++ type scalar_field ++ real, dimension(:), pointer :: val ++ end type scalar_field ++contains ++ subroutine csr_mult_T_scalar(x) ++ type(scalar_field), intent(inout) :: x ++ real, dimension(:), allocatable :: tmp ++ integer :: i ++ i=size(x%val) ++ end subroutine csr_mult_T_scalar ++end module sparse_matrices_fields ++ ++program test ++ use sparse_matrices_fields ++ use global_numbering ++end program test ++ ++! { dg-final { cleanup-modules "sparse_tools sparse_matrices_fields global_numbering" } } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0255-pt.c-build_non_dependent_expr-Don-t-check-null_ptr_c.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0255-pt.c-build_non_dependent_expr-Don-t-check-null_ptr_c.patch new file mode 100644 index 000000000..c3feb01d4 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0255-pt.c-build_non_dependent_expr-Don-t-check-null_ptr_c.patch @@ -0,0 +1,24 @@ +From da9199fc7cef9aa069eb18fe6e6437dfd11cee35 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 12 May 2011 01:44:03 +0000 +Subject: [PATCH] * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173693 138bc75d-0d04-0410-961f-82ee72b054a4 + +index fc5177d..e1ddf84 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -18810,10 +18810,6 @@ build_non_dependent_expr (tree expr) + { + tree inner_expr; + +- /* Preserve null pointer constants so that the type of things like +- "p == 0" where "p" is a pointer can be determined. */ +- if (null_ptr_cst_p (expr)) +- return expr; + /* Preserve OVERLOADs; the functions must be available to resolve + types. */ + inner_expr = expr; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0256-config-rx-rx.h-HAVE_PRE_DECREMENT-Fix-typo.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0256-config-rx-rx.h-HAVE_PRE_DECREMENT-Fix-typo.patch new file mode 100644 index 000000000..175696e98 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0256-config-rx-rx.h-HAVE_PRE_DECREMENT-Fix-typo.patch @@ -0,0 +1,59 @@ +From 664634ca66bf069826734420f6324342bbb5e541 Mon Sep 17 00:00:00 2001 +From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 12 May 2011 09:44:14 +0000 +Subject: [PATCH] * config/rx/rx.h (HAVE_PRE_DECREMENT): Fix typo. + * config/rx/rx.c (rx_is_legitimate_constant): Use gcc_unreachable + instead of abort. + (rx_align_for_label): Test label before extracting its number of + uses. + (rx_max_skip_for_label): Ignore debug insns. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173694 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 6fd1153..e0bd176 100644 +--- a/gcc/config/rx/rx.c ++++ b/gcc/config/rx/rx.c +@@ -2451,8 +2451,7 @@ rx_is_legitimate_constant (rtx x) + + default: + /* FIXME: Can this ever happen ? */ +- abort (); +- return false; ++ gcc_unreachable (); + } + break; + +@@ -2758,7 +2757,7 @@ rx_align_for_label (rtx lab, int uses_threshold) + because the delay due to the inserted NOPs would be greater than the delay + due to the misaligned branch. If uses_threshold is zero then the alignment + is always useful. */ +- if (LABEL_NUSES (lab) < uses_threshold) ++ if (LABEL_P (lab) && LABEL_NUSES (lab) < uses_threshold) + return 0; + + return optimize_size ? 1 : 3; +@@ -2775,7 +2774,7 @@ rx_max_skip_for_label (rtx lab) + op = lab; + do + { +- op = next_nonnote_insn (op); ++ op = next_nonnote_nondebug_insn (op); + } + while (op && (LABEL_P (op) + || (INSN_P (op) && GET_CODE (PATTERN (op)) == USE))); +diff --git a/gcc/config/rx/rx.h b/gcc/config/rx/rx.h +index 4a88a5b..89f2e2c 100644 +--- a/gcc/config/rx/rx.h ++++ b/gcc/config/rx/rx.h +@@ -155,7 +155,7 @@ extern enum rx_cpu_types rx_cpu_type; + + #define LEGITIMATE_CONSTANT_P(X) rx_is_legitimate_constant (X) + +-#define HAVE_PRE_DECCREMENT 1 ++#define HAVE_PRE_DECREMENT 1 + #define HAVE_POST_INCREMENT 1 + + #define MOVE_RATIO(SPEED) ((SPEED) ? 4 : 2) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0257-zh_CN.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0257-zh_CN.po-Update.patch new file mode 100644 index 000000000..065fa2325 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0257-zh_CN.po-Update.patch @@ -0,0 +1,37 @@ +From 24f82dcfdf83fe52c056a419f295c36546c10b48 Mon Sep 17 00:00:00 2001 +From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 12 May 2011 11:02:35 +0000 +Subject: [PATCH] * zh_CN.po: Update. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173698 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 4eb610c..9073c49 100644 +--- a/libcpp/po/zh_CN.po ++++ b/libcpp/po/zh_CN.po +@@ -5,10 +5,10 @@ + # + msgid "" + msgstr "" +-"Project-Id-Version: cpplib 4.5.0\n" ++"Project-Id-Version: cpplib 4.6.0\n" + "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" + "POT-Creation-Date: 2011-03-24 16:45+0000\n" +-"PO-Revision-Date: 2010-04-19 14:55+0800\n" ++"PO-Revision-Date: 2011-05-12 17:23+0800\n" + "Last-Translator: Meng Jie <zuxy.meng@gmail.com>\n" + "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" + "Language: zh_CN\n" +@@ -483,9 +483,8 @@ msgid "use of C++0x long long integer constant" + msgstr "使用 C++0x long long 整数常量" + + #: expr.c:434 +-#, fuzzy + msgid "use of C99 long long integer constant" +-msgstr "使用 C++0x long long 整数常量" ++msgstr "使用 C99 long long 整数常量" + + #: expr.c:448 + msgid "imaginary constants are a GCC extension" +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0258-PR-debug-48967.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0258-PR-debug-48967.patch new file mode 100644 index 000000000..c926a5971 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0258-PR-debug-48967.patch @@ -0,0 +1,134 @@ +From 5581111b5be72638aebb478c70c2bafc0abd04e2 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 12 May 2011 11:59:32 +0000 +Subject: [PATCH] PR debug/48967 + * var-tracking.c (use_narrower_mode_test) <case REG>: Return 1 + if validate_subreg fails. + + * g++.dg/opt/pr48967.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173702 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 5e328ff..be253f4 100644 +new file mode 100644 +index 0000000..db2ea54 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/opt/pr48967.C +@@ -0,0 +1,98 @@ ++// PR debug/48967 ++// { dg-do compile } ++// { dg-options "-g -O2" } ++ ++template <typename> struct A; ++template <typename T> struct A <T *> ++{ ++ typedef T ref; ++}; ++template <typename T, typename> struct B ++{ ++ typedef A <T> t; ++ typedef typename t::ref ref; ++ ref operator * () { return ref (); } ++}; ++template <typename T> struct I ++{ ++ typedef T *cp; ++ template <typename T1> struct J ++ { ++ typedef I <T1> other; ++ }; ++}; ++template <typename T> struct S : public I <T> ++{ ++}; ++template <typename T, typename _A> struct E ++{ ++ typedef typename _A::template J <T>::other at; ++}; ++template <typename T, typename _A = S <T> > struct D ++{ ++ typedef E <T, _A> _Base; ++ typedef typename _Base::at at; ++ typedef typename at::cp cp; ++ typedef B <cp, D> H; ++}; ++template <class T> struct F ++{ ++ T *operator -> () { return __null; } ++}; ++template <typename T> long ++lfloor (T x) ++{ ++ return static_cast <long>(x) - (x && x != static_cast <long>(x)); ++} ++template <typename T> long ++lround (T x) ++{ ++ return lfloor (x - 0.5) + 1; ++} ++class M; ++template <typename> class P; ++typedef P <M> Q; ++template <typename> struct P ++{ ++ float x (); ++}; ++struct CV ++{ ++ Q c; ++}; ++struct C ++{ ++ void foo (const CV &) const; ++ class O; ++ typedef D <F <O> > R; ++ R n; ++}; ++struct S3 ++{ ++ S3 (int, int); ++}; ++struct S2 ++{ ++ S3 sx, sy; ++ S2 (int x = 0, int y = 0, int s = 0, int t = 0) : sx (x, y), sy (s, t) {} ++}; ++template <typename> struct N ++{ ++ int bar (); ++}; ++struct C::O ++{ ++ N <float> o; ++ void foo (CV r, int) ++ { ++ Q c = r.c; ++ float t = 0.5 * (o.bar ()); ++ S2 (lround (c.x ()), t); ++ } ++}; ++void ++C::foo (const CV &w) const ++{ ++ R::H m; ++ (*m)->foo (w, 8); ++} +diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c +index 548afbc..b7ba0b9 100644 +--- a/gcc/var-tracking.c ++++ b/gcc/var-tracking.c +@@ -739,6 +739,10 @@ use_narrower_mode_test (rtx *loc, void *data) + case REG: + if (cselib_lookup (*loc, GET_MODE (SUBREG_REG (subreg)), 0, VOIDmode)) + return 1; ++ if (!validate_subreg (GET_MODE (subreg), GET_MODE (*loc), ++ *loc, subreg_lowpart_offset (GET_MODE (subreg), ++ GET_MODE (*loc)))) ++ return 1; + return -1; + case PLUS: + case MINUS: +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0259-2011-05-12-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0259-2011-05-12-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..4754ace97 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0259-2011-05-12-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,100 @@ +From 32e55402bb0fc442831d775a516f2def4f948f93 Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 12 May 2011 14:08:00 +0000 +Subject: [PATCH] 2011-05-12 Richard Guenther <rguenther@suse.de> + + Backport from mainline + 2011-05-02 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/48822 + * tree-ssa-sccvn.c (set_ssa_val_to): Never go up the lattice. + (process_scc): Indicate which iteration we start. + + * gcc.dg/torture/pr48822.c: New testcase. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173705 138bc75d-0d04-0410-961f-82ee72b054a4 + +index be253f4..81b52db 100644 +new file mode 100644 +index 0000000..b619f36 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/torture/pr48822.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++ ++void foo (int *, int *); ++int bar () ++{ ++ int a = 0; ++ int b = 0; ++ if (b != 0) ++ { ++ int ax = a; ++ int bx = b; ++ while (bx != 0) ++ { ++ int tem = ax % bx; ++ ax = bx; ++ bx = tem; ++ } ++ } ++ foo (&a, &b); ++} +diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c +index 9222cb5..eb88969 100644 +--- a/gcc/tree-ssa-sccvn.c ++++ b/gcc/tree-ssa-sccvn.c +@@ -2103,12 +2103,26 @@ print_scc (FILE *out, VEC (tree, heap) *scc) + static inline bool + set_ssa_val_to (tree from, tree to) + { +- tree currval; ++ tree currval = SSA_VAL (from); + +- if (from != to +- && TREE_CODE (to) == SSA_NAME +- && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (to)) +- to = from; ++ if (from != to) ++ { ++ if (currval == from) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ { ++ fprintf (dump_file, "Not changing value number of "); ++ print_generic_expr (dump_file, from, 0); ++ fprintf (dump_file, " from VARYING to "); ++ print_generic_expr (dump_file, to, 0); ++ fprintf (dump_file, "\n"); ++ } ++ return false; ++ } ++ else if (TREE_CODE (to) == SSA_NAME ++ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (to)) ++ to = from; ++ } + + /* The only thing we allow as value numbers are VN_TOP, ssa_names + and invariants. So assert that here. */ +@@ -2125,8 +2139,6 @@ set_ssa_val_to (tree from, tree to) + print_generic_expr (dump_file, to, 0); + } + +- currval = SSA_VAL (from); +- + if (currval != to && !operand_equal_p (currval, to, OEP_PURE_SAME)) + { + VN_INFO (from)->valnum = to; +@@ -3124,6 +3136,8 @@ process_scc (VEC (tree, heap) *scc) + { + changed = false; + iterations++; ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, "Starting iteration %d\n", iterations); + /* As we are value-numbering optimistically we have to + clear the expression tables and the simplified expressions + in each iteration until we converge. */ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0260-PR-tree-optimization-48975.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0260-PR-tree-optimization-48975.patch new file mode 100644 index 000000000..15f98a382 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0260-PR-tree-optimization-48975.patch @@ -0,0 +1,61 @@ +From 29bc62bdd8a23a670e844de980879c53a7ab493b Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 12 May 2011 17:46:15 +0000 +Subject: [PATCH] PR tree-optimization/48975 + * tree-if-conv.c (combine_blocks): Call free_bb_predicate + on all bbs here and free and clear ifc_bbs at the end. + + * gcc.dg/pr48975.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173710 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 81b52db..12ceb8e 100644 +new file mode 100644 +index 0000000..58658d8 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr48975.c +@@ -0,0 +1,18 @@ ++/* PR tree-optimization/48975 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -ffast-math -fno-tree-slp-vectorize" } */ ++ ++static int ++foo (int x) ++{ ++ return (x > 0) ? 0 : x + 1; ++} ++ ++void ++bar (unsigned int x) ++{ ++ int l = 1; ++lab: ++ while (x) ++ x = foo (x); ++} +diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c +index d70e232..a77186a 100644 +--- a/gcc/tree-if-conv.c ++++ b/gcc/tree-if-conv.c +@@ -1604,6 +1604,7 @@ combine_blocks (struct loop *loop) + for (i = 0; i < orig_loop_num_nodes; i++) + { + bb = ifc_bbs[i]; ++ free_bb_predicate (bb); + if (bb_with_exit_edge_p (loop, bb)) + { + exit_bb = bb; +@@ -1679,6 +1680,9 @@ combine_blocks (struct loop *loop) + && exit_bb != loop->header + && can_merge_blocks_p (loop->header, exit_bb)) + merge_blocks (loop->header, exit_bb); ++ ++ free (ifc_bbs); ++ ifc_bbs = NULL; + } + + /* If-convert LOOP when it is legal. For the moment this pass has no +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0263-zh_CN.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0263-zh_CN.po-Update.patch new file mode 100644 index 000000000..53041bf1b --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0263-zh_CN.po-Update.patch @@ -0,0 +1,5328 @@ +From aabf79e668fbe33df4b0370d0d675bfbafc4e2e1 Mon Sep 17 00:00:00 2001 +From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 14 May 2011 16:00:58 +0000 +Subject: [PATCH] * zh_CN.po: Update. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173759 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 34007b2..595043a 100644 +--- a/gcc/po/zh_CN.po ++++ b/gcc/po/zh_CN.po +@@ -5,10 +5,10 @@ + # + msgid "" + msgstr "" +-"Project-Id-Version: gcc 4.5.0\n" ++"Project-Id-Version: gcc 4.6.0\n" + "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" + "POT-Creation-Date: 2011-03-24 16:45+0000\n" +-"PO-Revision-Date: 2010-04-19 14:57+0800\n" ++"PO-Revision-Date: 2011-05-14 20:50+0800\n" + "Last-Translator: Meng Jie <zuxy.meng@gmail.com>\n" + "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" + "Language: zh_CN\n" +@@ -17,7 +17,7 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "X-Poedit-Language: Chinese\n" + "X-Poedit-Country: CHINA\n" +-"X-Poedit-Basepath: C:\\MSYS\\source\\gcc-4.5.0\\gcc\n" ++"X-Poedit-Basepath: C:\\MSYS\\source\\gcc-4.6.0\\gcc\n" + "Plural-Forms: nplurals=1; plural=0;\n" + + #: c-decl.c:4660 c-typeck.c:5851 toplev.c:1013 c-family/c-pretty-print.c:423 +@@ -112,9 +112,8 @@ msgid "expected %<while%>" + msgstr "需要 %<while%>" + + #: c-parser.c:6076 +-#, fuzzy + msgid "expected %<.%>" +-msgstr "需要%<;%>" ++msgstr "需要%<.%>" + + #: c-parser.c:6854 c-parser.c:6886 c-parser.c:7109 cp/parser.c:22319 + #: cp/parser.c:22392 +@@ -128,9 +127,9 @@ msgid "expected %<>%>" + msgstr "需要 %<>%>" + + #: c-parser.c:8836 cp/parser.c:20962 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<,%> or %<)%>" +-msgstr "需要 %<,%> 或 % <)%>" ++msgstr "需要 %<,%> 或 %<)%>" + + #: c-parser.c:9266 c-parser.c:3841 cp/parser.c:20941 + #, gcc-internal-format +@@ -319,14 +318,14 @@ msgid "library lib%s not found" + msgstr "找不到库 lib%s" + + #: diagnostic.c:136 +-#, fuzzy, c-format ++#, c-format + msgid "%s: all warnings being treated as errors\n" +-msgstr "所有的警告都当作是错误" ++msgstr "%s:所有的警告都被当作是错误\n" + + #: diagnostic.c:141 +-#, fuzzy, c-format ++#, c-format + msgid "%s: some warnings being treated as errors\n" +-msgstr "%s:警告:没有文件‘%s’的读权限\n" ++msgstr "%s:有些警告被当作是错误\n" + + #: diagnostic.c:219 + #, c-format +@@ -334,9 +333,9 @@ msgid "compilation terminated due to -Wfatal-errors.\n" + msgstr "编译因为 -Wfatal-errors 而中止。\n" + + #: diagnostic.c:229 +-#, fuzzy, c-format ++#, c-format + msgid "compilation terminated due to -fmax-errors=%u.\n" +-msgstr "编译因为 -Wfatal-errors 而中止。\n" ++msgstr "编译中止因为 -fmax-errors=%u。\n" + + #: diagnostic.c:240 + #, c-format +@@ -873,9 +872,9 @@ msgid " -u, --unconditional-branches Show unconditional branch counts too\n" + msgstr " -u, --unconditional-branches 同时显示无条件跳转数\n" + + #: gcov.c:431 +-#, fuzzy, c-format ++#, c-format + msgid " -d, --display-progress Display progress information\n" +-msgstr " --help 显示此帮助说明\n" ++msgstr " -d, --display-progress 显示进度信息\n" + + #: gcov.c:432 + #, c-format +@@ -1112,14 +1111,14 @@ msgid "const/copy propagation disabled" + msgstr "常量/复制传递被禁用" + + #: gengtype-state.c:150 +-#, fuzzy, c-format ++#, c-format + msgid "%s:%d:%d: Invalid state file; %s" +-msgstr "%s:%d:%d:自%qs实例化\n" ++msgstr "%s:%d:%d:状态文件无效;%s" + + #: gengtype-state.c:154 +-#, fuzzy, c-format ++#, c-format + msgid "%s:%d: Invalid state file; %s" +-msgstr "%s:无效的文件名:%s\n" ++msgstr "%s:%d:状态文件无效;%s" + + #. Fatal printf-like message while reading state. This can't be a + #. function, because there is no way to pass a va_arg to a variant of +@@ -1127,17 +1126,17 @@ msgstr "%s:无效的文件名:%s\n" + #: gengtype-state.c:165 + #, c-format + msgid "%s:%d:%d: Invalid state file; " +-msgstr "" ++msgstr "%s:%d:%d:状态文件无效;" + + #: gengtype-state.c:170 +-#, fuzzy, c-format ++#, c-format + msgid "%s:%d: Invalid state file; " +-msgstr "%s:无效的文件名:%s\n" ++msgstr "%s:%d:状态文件无效;" + + #: gengtype-state.c:695 + #, c-format + msgid "Option tag unknown" +-msgstr "" ++msgstr "未知的选项标记" + + #: gengtype-state.c:750 + #, fuzzy, c-format +@@ -1150,9 +1149,9 @@ msgid "Unexpected type in write_state_string_type" + msgstr "cris_print_base 中有非预期的基类型" + + #: gengtype-state.c:969 +-#, fuzzy, c-format ++#, c-format + msgid "Unexpected type..." +-msgstr "非预期的文件结束" ++msgstr "非预期的类型……" + + #: gengtype-state.c:1149 + #, fuzzy, c-format +@@ -1175,9 +1174,9 @@ msgid "failed to close state file %s [%s]" + msgstr "%s:无法关闭输出文件 %s\n" + + #: gengtype-state.c:1213 +-#, c-format ++#, fuzzy, c-format + msgid "failed to rename %s to state file %s [%s]" +-msgstr "" ++msgstr "无法更名模块文件“%s”到“%s”:%s" + + #: gengtype-state.c:2395 + #, fuzzy, c-format +@@ -1345,7 +1344,7 @@ msgstr "此开关缺少可用文档" + + #: opts.c:1010 + msgid "[default]" +-msgstr "" ++msgstr "[默认]" + + #: opts.c:1021 + msgid "[enabled]" +@@ -1415,9 +1414,8 @@ msgid "The following options are language-related" + msgstr "下列选项与语言相关" + + #: opts.c:2010 +-#, fuzzy + msgid "enabled by default" +-msgstr "使“char”类型默认为有符号" ++msgstr "默认启用" + + #: plugin.c:780 + msgid "Event" +@@ -1636,7 +1634,7 @@ msgstr "原本间接的函数调用不被考虑内联" + + #: cif-code.def:90 + msgid "indirect function call with a yet undetermined callee" +-msgstr "" ++msgstr "间接函数调用目标未定义" + + #: cif-code.def:92 + #, fuzzy +@@ -1728,11 +1726,11 @@ msgstr "早期内联器可以进行的嵌套间接内联的最大数量" + + #: params.def:124 + msgid "Probability that COMDAT function will be shared with different compilatoin unit" +-msgstr "" ++msgstr "与其他编译单元共享 COMDAT 函数的概率" + + #: params.def:130 + msgid "Maximum probability of the entry BB of split region (in percent relative to entry BB of the function) to make partial inlining happen" +-msgstr "" ++msgstr "进行部分内联时分离区域入口基本块占函数入口基本块的百分比概率的上限" + + #: params.def:137 + msgid "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling" +@@ -1805,11 +1803,11 @@ msgstr "重新载入后允许进行冗余消除的关键边执行次数的比例 + + #: params.def:248 + msgid "Scaling factor in calculation of maximum distance an expression can be moved by GCSE optimizations" +-msgstr "" ++msgstr "计算一个表达式被 GCSE 优化移动的最大距离时的比例因子" + + #: params.def:254 + msgid "Cost at which GCSE optimizations will not constraint the distance an expression can travel" +-msgstr "" ++msgstr "指定 GCSE 优化不约束一个表达式能被移动的距离时的代价" + + #: params.def:262 + msgid "Maximum depth of search in the dominator tree for expressions to hoist" +@@ -1970,7 +1968,7 @@ msgstr "用在标量演化分析器中的表达式的大小上限" + #: params.def:488 + #, fuzzy + msgid "Bound on the complexity of the expressions in the scalar evolutions analyzer" +-msgstr "用在标量演化分析器中的表达式的大小上限" ++msgstr "捆绑于被使用在标量演化分析器中的表达式的大小" + + #: params.def:493 + msgid "Bound on the number of variables in Omega constraint systems" +@@ -2203,17 +2201,15 @@ msgstr "为实现跳转提示插入的 nop 的最大数(默认 2)" + + #: c-family/c-format.c:368 + msgid "format" +-msgstr "" ++msgstr "格式" + + #: c-family/c-format.c:369 +-#, fuzzy + msgid "field width specifier" +-msgstr "域宽" ++msgstr "字段宽度限定" + + #: c-family/c-format.c:370 +-#, fuzzy + msgid "field precision specifier" +-msgstr "字段精度" ++msgstr "字段精度限定" + + #: c-family/c-format.c:484 c-family/c-format.c:508 config/i386/msformat-c.c:49 + msgid "' ' flag" +@@ -2820,7 +2816,6 @@ msgstr "地址中有非预期的副作用" + #. Can't possibly get a GOT-needing-fixup for a function-call, + #. right? + #: config/cris/cris.c:3611 +-#, fuzzy + msgid "unidentifiable call op" + msgstr "无法识别的 call 操作" + +@@ -3086,7 +3081,7 @@ msgid "invalid use of %%d, %%x, or %%X" + msgstr "对 %%d、%%x 或 %%X 的使用无效" + + #: config/lm32/lm32.c:529 +-#, fuzzy, c-format ++#, c-format + msgid "only 0.0 can be loaded as an immediate" + msgstr "只有 0.0 可以作为立即数装载" + +@@ -3193,27 +3188,27 @@ msgstr "无效 %%L 代码" + #: config/microblaze/microblaze.c:1747 + #, fuzzy, c-format + msgid "unknown punctuation '%c'" +-msgstr "未知的 spec 函数‘%s’" ++msgstr "PRINT_OPERAND:未知的标点‘%c’" + + #: config/microblaze/microblaze.c:1756 +-#, fuzzy, c-format ++#, c-format + msgid "null pointer" +-msgstr "PRINT_OPERAND 空指针" ++msgstr "空指针" + + #: config/microblaze/microblaze.c:1791 + #, fuzzy, c-format + msgid "PRINT_OPERAND, invalid insn for %%C" +-msgstr "PRINT_OPERAND 空指针" ++msgstr "无效的 Z 寄存器替换" + + #: config/microblaze/microblaze.c:1820 + #, fuzzy, c-format + msgid "PRINT_OPERAND, invalid insn for %%N" +-msgstr "PRINT_OPERAND 空指针" ++msgstr "无效的 Z 寄存器替换" + + #: config/microblaze/microblaze.c:1840 config/microblaze/microblaze.c:2001 + #, fuzzy + msgid "insn contains an invalid address !" +-msgstr "无效地址" ++msgstr "无效的 Z 寄存器替换" + + #: config/microblaze/microblaze.c:1854 config/microblaze/microblaze.c:2041 + #: config/xtensa/xtensa.c:2443 +@@ -3488,7 +3483,7 @@ msgstr "无效的操作数输出代码" + #: config/s390/s390.c:5477 + #, fuzzy, c-format + msgid "invalid constant for output modifier '%c'" +-msgstr "‘o’修饰符的操作数无效" ++msgstr "CHARACTER 常量的种别 %d 无效,在%C处" + + #: config/s390/s390.c:5484 + #, fuzzy, c-format +@@ -3498,7 +3493,7 @@ msgstr "无效的最小左值表达式" + #: config/s390/s390.c:5487 + #, fuzzy, c-format + msgid "invalid expression for output modifier '%c'" +-msgstr "‘o’修饰符的操作数无效" ++msgstr "无效的最小左值表达式" + + #: config/score/score7.c:1207 + #, c-format +@@ -3725,9 +3720,8 @@ msgid "<return value> " + msgstr "<返回值>" + + #: cp/error.c:970 +-#, fuzzy + msgid "{anonymous}" +-msgstr "{{匿名}}" ++msgstr "{匿名}" + + #: cp/error.c:1085 + msgid "<enumerator>" +@@ -3811,7 +3805,7 @@ msgstr "%s:在%qs的实例化中:\n" + #: cp/error.c:2878 + #, fuzzy, c-format + msgid "%s:%d:%d: recursively instantiated from %qs\n" +-msgstr "%s:%d:%d:自%qs实例化\n" ++msgstr " 内联自%qs于 %s:%d:%d" + + #: cp/error.c:2879 + #, c-format +@@ -3821,7 +3815,7 @@ msgstr "%s:%d:%d:自%qs实例化\n" + #: cp/error.c:2884 cp/error.c:2885 + #, fuzzy, c-format + msgid "%s:%d: recursively instantiated from %qs\n" +-msgstr "%s:%d:自%qs实例化\n" ++msgstr " 内联自%qs于 %s:%d:%d" + + #: cp/error.c:2893 + #, fuzzy, c-format +@@ -3856,19 +3850,19 @@ msgstr "%s:%d:[ 跳过 %d 个实例化上下文 ]\n" + #: cp/error.c:3009 + #, fuzzy, c-format + msgid "%s:%d:%d: in constexpr expansion of %qs" +-msgstr "%s:%d:%d:自%qs实例化\n" ++msgstr "在成员函数%qs中" + + #: cp/error.c:3013 + #, fuzzy, c-format + msgid "%s:%d: in constexpr expansion of %qs" +-msgstr "%s:%d:自%qs实例化\n" ++msgstr "在成员函数%qs中" + + #: cp/pt.c:1725 + msgid "candidates are:" + msgstr "备选为:" + + #: cp/pt.c:16583 cp/call.c:3084 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "candidate is:" + msgid_plural "candidates are:" + msgstr[0] "备选是:" +@@ -4120,19 +4114,19 @@ msgstr "格式限定符中需要句号" + #: fortran/io.c:1524 + #, c-format + msgid "%s tag" +-msgstr "" ++msgstr "%s 标记" + + #: fortran/io.c:2830 + #, fuzzy + msgid "internal unit in WRITE" +-msgstr "内部函数" ++msgstr "gcc 内部放弃 %s,于 %s:%d" + + #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition + #. contexts. Thus, use an extended RESOLVE_TAG macro for that. + #: fortran/io.c:4025 +-#, c-format ++#, fuzzy, c-format + msgid "%s tag with INQUIRE" +-msgstr "" ++msgstr "%s 与%<%%%c%>%s 格式并用" + + #: fortran/matchexp.c:28 + #, c-format +@@ -4334,7 +4328,7 @@ msgstr "循环变量" + #: fortran/resolve.c:6223 + #, fuzzy + msgid "iterator variable" +-msgstr "循环变量" ++msgstr "未使用的变量%q+D" + + #: fortran/resolve.c:6228 + msgid "Start expression in DO loop" +@@ -4349,26 +4343,29 @@ msgid "Step expression in DO loop" + msgstr "DO 循环中的步进表达式" + + #: fortran/resolve.c:6483 fortran/resolve.c:6485 ++#, fuzzy + msgid "DEALLOCATE object" +-msgstr "" ++msgstr "减小目标文件" + + #: fortran/resolve.c:6780 fortran/resolve.c:6782 ++#, fuzzy + msgid "ALLOCATE object" +-msgstr "" ++msgstr "减小目标文件" + + #: fortran/resolve.c:6955 + #, fuzzy + msgid "STAT variable" +-msgstr "循环变量" ++msgstr "未使用的变量%q+D" + + #: fortran/resolve.c:6998 + #, fuzzy + msgid "ERRMSG variable" +-msgstr "循环变量" ++msgstr "未使用的变量%q+D" + + #: fortran/resolve.c:8063 ++#, fuzzy + msgid "item in READ" +-msgstr "" ++msgstr "读取链接脚本" + + #: fortran/trans-array.c:1138 + #, c-format +@@ -4376,8 +4373,9 @@ msgid "Different CHARACTER lengths (%ld/%ld) in array constructor" + msgstr "数组构造函数中 CHARACTER 长度不同(%ld/%ld)" + + #: fortran/trans-array.c:4393 ++#, fuzzy + msgid "Integer overflow when calculating the amount of memory to allocate" +-msgstr "" ++msgstr "试图分配负数大小的内存。可能有整数溢出" + + #: fortran/trans-decl.c:4356 + #, c-format +@@ -4457,7 +4455,7 @@ msgstr "试图分配已经分配的数组‘%s’" + #: fortran/trans.c:735 + #, fuzzy + msgid "Attempting to allocate already allocated variable" +-msgstr "试图分配已经分配的数组" ++msgstr "试图分配已经分配的数组‘%s’" + + #: fortran/trans.c:848 fortran/trans.c:928 + #, c-format +@@ -4709,7 +4707,7 @@ msgstr "" + #: config/i386/nwld.h:34 + #, fuzzy + msgid "static linking is not supported" +-msgstr "不支持静态链接。" ++msgstr "不支持静态链接。\n" + + #: config/pa/pa-hpux10.h:89 config/pa/pa-hpux10.h:92 config/pa/pa-hpux10.h:100 + #: config/pa/pa-hpux10.h:103 config/pa/pa-hpux11.h:108 +@@ -4717,7 +4715,7 @@ msgstr "不支持静态链接。" + #: config/pa/pa64-hpux.h:42 config/pa/pa64-hpux.h:45 + #, fuzzy + msgid "warning: consider linking with '-static' as system libraries with" +-msgstr "警告:考虑链接时使用‘-static’,因为系统库也使用了此选项" ++msgstr "警告:考虑链接时使用‘-static’因为系统库" + + #: config/pa/pa-hpux10.h:90 config/pa/pa-hpux10.h:93 config/pa/pa-hpux10.h:101 + #: config/pa/pa-hpux10.h:104 config/pa/pa-hpux11.h:109 +@@ -4739,9 +4737,8 @@ msgid "-mbig-endian and -mlittle-endian may not be used together" + msgstr "-mbig-endian 和 -mlittle-endian 不能一起使用" + + #: config/cris/cris.h:196 +-#, fuzzy + msgid "do not specify both -march=... and -mcpu=..." +-msgstr "不能同时指定 -march=... 和 -mcpu=..." ++msgstr "请勿同时指定 -march=... 和 -mcpu=..." + + #: objcp/lang-specs.h:58 + msgid "objc++-cpp-output is deprecated; please use objective-c++-cpp-output instead" +@@ -4946,7 +4943,7 @@ msgstr "对被截断的字符表达式给出警告" + #: fortran/lang.opt:223 + #, fuzzy + msgid "Warn about most implicit conversions" +-msgstr "对隐式转换给出警告" ++msgstr "对隐式函数声明给出警告" + + #: fortran/lang.opt:227 + msgid "Warn about calls with implicit interface" +@@ -4983,7 +4980,7 @@ msgstr "如果用户过程有与内建过程相同的名字则警告" + #: fortran/lang.opt:263 + #, fuzzy + msgid "Warn about unused dummy arguments." +-msgstr "为可能的虚参重叠给出警告" ++msgstr "为可能的哑元重叠给出警告" + + #: fortran/lang.opt:267 + msgid "Enable preprocessing" +@@ -5180,8 +5177,9 @@ msgid "Enable range checking during compilation" + msgstr "启用编译时范围检查" + + #: fortran/lang.opt:479 ++#, fuzzy + msgid "Reallocate the LHS in assignments" +-msgstr "" ++msgstr "不返回的调用中有左值" + + #: fortran/lang.opt:483 + msgid "Use a 4-byte record marker for unformatted files" +@@ -5201,7 +5199,7 @@ msgstr "在过程入口处将数组段复制到一个连续的块中" + + #: fortran/lang.opt:499 + msgid "-fcoarray=[...]\tSpecify which coarray parallelization should be used" +-msgstr "" ++msgstr "-fcoarray=[...]\t指定要使用的集合数组并行化" + + #: fortran/lang.opt:503 + msgid "-fcheck=[...]\tSpecify which runtime checks are to be performed" +@@ -5528,9 +5526,8 @@ msgid "Target the AM33/2.0 processor" + msgstr "目标为 AM33/2.0 处理器" + + #: config/mn10300/mn10300.opt:31 +-#, fuzzy + msgid "Target the AM34 processor" +-msgstr "目标为 AM33 处理器" ++msgstr "目标为 AM34 处理器" + + #: config/mn10300/mn10300.opt:35 config/arm/arm.opt:154 + msgid "Tune code for the given processor" +@@ -5549,9 +5546,8 @@ msgid "Return pointers in both a0 and d0" + msgstr "在 a0 和 d0 中返回指针" + + #: config/mn10300/mn10300.opt:56 +-#, fuzzy + msgid "Allow gcc to generate LIW instructions" +-msgstr "允许 gcc 使用 repeat/erepeat 指令" ++msgstr "允许 gcc 生成 LIW 指令" + + #: config/s390/tpf.opt:23 + msgid "Enable TPF-OS tracing code" +@@ -5786,7 +5782,7 @@ msgstr "一个指令组中内存指令数目的软性限制,同一指令组中 + #: config/ia64/ia64.opt:175 + #, fuzzy + msgid "Disallow more than 'msched-max-memory-insns' in instruction group. Otherwise, limit is 'soft' (prefer non-memory operations when limit is reached)" +-msgstr "一个指令组中至多有‘msched-max-memory-insns’条指令。否则,限定值是`软的' (当达到限定值时优先选择非内存操作)" ++msgstr "在指令组中不准多于 `msched-max-memory-insns' 。否则,限定值是`软的' (当达到限定值时宁可非内存操作)" + + #: config/ia64/ia64.opt:179 + msgid "Don't generate checks for control speculation in selective scheduling" +@@ -6193,9 +6189,8 @@ msgid "Use given x86-64 code model" + msgstr "使用给定的 x86-64 代码模式" + + #: config/i386/i386.opt:121 +-#, fuzzy + msgid "%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead" +-msgstr "不建议使用‘-mcpu=’。请改用‘-mtune=’或‘-march=’。" ++msgstr "不建议使用%<-mcpu=%>;请改用%<-mtune=%>或%<-march=%>" + + #: config/i386/i386.opt:125 + msgid "Generate sin, cos, sqrt for FPU" +@@ -6222,9 +6217,8 @@ msgid "Inline memset/memcpy string operations, but perform inline version only f + msgstr "内联 memset/memcpy 字符串操作,但仅为较小的块使用内联版本" + + #: config/i386/i386.opt:156 +-#, fuzzy + msgid "%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead" +-msgstr "不建议使用‘-mintel-syntax’。请改用‘-masm=intel’。" ++msgstr "不建议使用%<-mintel-syntax%>和 %<-mno-intel-syntax%>;请改用%<-masm=intel%>和%<-masm=att%>" + + #: config/i386/i386.opt:161 + msgid "Use native (MS) bitfield layout" +@@ -6297,7 +6291,7 @@ msgstr "指定要使用的向量库 ABI" + + #: config/i386/i386.opt:249 + msgid "Return 8-byte vectors in memory" +-msgstr "" ++msgstr "将 8 字节向量在内存中返回" + + #: config/i386/i386.opt:253 + msgid "Generate reciprocals instead of divss and sqrtss." +@@ -6313,11 +6307,11 @@ msgstr "" + + #: config/i386/i386.opt:266 + msgid "Do dispatch scheduling if processor is bdver1 and Haifa scheduling" +-msgstr "" ++msgstr "进行海法调度,当处理器是 bdver1 时也进行派遣调度" + + #: config/i386/i386.opt:271 + msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer." +-msgstr "" ++msgstr "自动向量化时使用 128 位 AVX 指令而不是 256 位 AVX 指令" + + #: config/i386/i386.opt:277 + msgid "Generate 32bit i386 code" +@@ -6368,9 +6362,8 @@ msgid "Do not support SSE4.1 and SSE4.2 built-in functions and code generation" + msgstr "不支持 SSE4.1 和 SSE4.2 内建函数及代码生成" + + #: config/i386/i386.opt:328 +-#, fuzzy + msgid "%<-msse5%> was removed" +-msgstr "‘-msse5’已被移除" ++msgstr "%<-msse5%>已被移除" + + #: config/i386/i386.opt:333 + msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation" +@@ -6405,14 +6398,12 @@ msgid "Support code generation of popcnt instruction." + msgstr "支持生成 popcnt 指令。" + + #: config/i386/i386.opt:365 +-#, fuzzy + msgid "Support BMI built-in functions and code generation" +-msgstr "支持 FMA4 内建函数及代码生成" ++msgstr "支持 BMI 内建函数及代码生成" + + #: config/i386/i386.opt:369 +-#, fuzzy + msgid "Support TBM built-in functions and code generation" +-msgstr "支持 FMA4 内建函数及代码生成" ++msgstr "支持 TBM 内建函数及代码生成" + + #: config/i386/i386.opt:373 + msgid "Support code generation of cmpxchg16b instruction." +@@ -6443,19 +6434,16 @@ msgid "Encode SSE instructions with VEX prefix" + msgstr "支持带 VEX 前缀的 SSE 指令" + + #: config/i386/i386.opt:401 +-#, fuzzy + msgid "Support FSGSBASE built-in functions and code generation" +-msgstr "支持 SSE5 内建函数及代码生成" ++msgstr "支持 FSGSBASE 内建函数及代码生成" + + #: config/i386/i386.opt:405 +-#, fuzzy + msgid "Support RDRND built-in functions and code generation" +-msgstr "支持 AES 内建函数及代码生成" ++msgstr "支持 RDRND 内建函数及代码生成" + + #: config/i386/i386.opt:409 +-#, fuzzy + msgid "Support F16C built-in functions and code generation" +-msgstr "支持 FMA4 内建函数及代码生成" ++msgstr "支持 F16C 内建函数及代码生成" + + #: config/i386/i386.opt:413 + #, fuzzy +@@ -6464,7 +6452,7 @@ msgstr "为取样在函数前言中调用 mcount" + + #: config/i386/i386.opt:417 + msgid "Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check" +-msgstr "" ++msgstr "将 32/64 位整数除法扩展为带运行时检查的 8 位无符号整数除法" + + #: config/i386/cygming.opt:23 + msgid "Create console application" +@@ -6604,7 +6592,7 @@ msgstr "使用 PowerPC V2.06 popcntd 指令" + + #: config/rs6000/rs6000.opt:224 + msgid "Under -ffast-math, generate a FRIZ instruction for (double)(long long) conversions" +-msgstr "" ++msgstr "在 -ffast-math 时,为 (double)(long long) 转换生成 FRIZ 指令" + + #: config/rs6000/rs6000.opt:232 + msgid "Use vector/scalar (VSX) instructions" +@@ -6808,8 +6796,9 @@ msgid "Call mcount for profiling before a function prologue" + msgstr "为取样在函数前言中调用 mcount" + + #: config/rs6000/linux64.opt:28 ++#, fuzzy + msgid "Select code model" +-msgstr "" ++msgstr "未知的 tls-model“%s”" + + #: config/rs6000/sysv4.opt:24 + msgid "Select ABI calling convention" +@@ -7532,7 +7521,7 @@ msgstr "放宽跳转" + #: config/avr/avr.opt:60 + #, fuzzy + msgid "Make the linker relaxation machine assume that a program counter wrap-around occurs." +-msgstr "使链接器松驰机假定会发生程序计数器环绕" ++msgstr "链接器松驰机器假定一个程序计数器环绕发生 。" + + #: config/crx/crx.opt:23 + msgid "Support multiply accumulate instructions" +@@ -8185,9 +8174,8 @@ msgid "Set the max size of data eligible for the TDA area" + msgstr "为 TDA 区域合格的数据设置最大尺寸" + + #: config/v850/v850.opt:71 +-#, fuzzy + msgid "Do not enforce strict alignment" +-msgstr "强制严格对齐" ++msgstr "不强制严格对齐" + + #: config/v850/v850.opt:75 + msgid "Put jump tables for switch statements into the .data section rather than the .code section" +@@ -8206,19 +8194,16 @@ msgid "Compile for the v850e1 processor" + msgstr "为 v850e1 处理器编译" + + #: config/v850/v850.opt:94 +-#, fuzzy + msgid "Compile for the v850es variant of the v850e1" +-msgstr "为 v850e 处理器编译" ++msgstr "为 v850e1 的 v850es 变种编译" + + #: config/v850/v850.opt:98 +-#, fuzzy + msgid "Compile for the v850e2 processor" +-msgstr "为 v850e 处理器编译" ++msgstr "为 v850e2 处理器编译" + + #: config/v850/v850.opt:102 +-#, fuzzy + msgid "Compile for the v850e2v3 processor" +-msgstr "为 v850e 处理器编译" ++msgstr "为 v850e2v3 处理器编译" + + #: config/v850/v850.opt:106 + msgid "Set the max size of data eligible for the ZDA area" +@@ -8410,7 +8395,7 @@ msgstr "%qs后缺少文件名" + + #: config/darwin.opt:111 + msgid "Generate compile-time CFString objects" +-msgstr "" ++msgstr "生成编译时 CFString 对象" + + #: config/darwin.opt:205 + msgid "Warn if constant CFString objects contain non-portable characters" +@@ -8418,7 +8403,7 @@ msgstr "" + + #: config/darwin.opt:210 + msgid "Generate AT&T-style stubs for Mach-O" +-msgstr "" ++msgstr "为 Mach-O 生成 AT&T 风格的占位代码" + + #: config/darwin.opt:214 + msgid "Generate code suitable for executables (NOT shared libs)" +@@ -8478,16 +8463,15 @@ msgstr "支持 SCORE 7D ISA" + + #: config/linux.opt:24 + msgid "Use Bionic C library" +-msgstr "" ++msgstr "使用 Bionic C 标准库" + + #: config/linux.opt:28 + msgid "Use GNU C library" +-msgstr "" ++msgstr "使用 GNU C 标准库" + + #: config/linux.opt:32 +-#, fuzzy + msgid "Use uClibc C library" +-msgstr "使用 uClibc 代替 GNU libc" ++msgstr "使用 uClibc C 标准库" + + #: config/mep/mep.opt:21 + msgid "Enable absolute difference instructions" +@@ -8691,9 +8675,8 @@ msgid "Use software emulation for floating point (default)" + msgstr "使用软件浮点单元" + + #: config/microblaze/microblaze.opt:44 +-#, fuzzy + msgid "Use hardware floating point instructions" +-msgstr "使用十进制浮点指令" ++msgstr "使用硬件浮点指令" + + #: config/microblaze/microblaze.opt:48 + #, fuzzy +@@ -8701,26 +8684,24 @@ msgid "Use table lookup optimization for small signed integer divisions" + msgstr "在树级别进行循环优化" + + #: config/microblaze/microblaze.opt:52 +-#, fuzzy + msgid "-mcpu=PROCESSOR\t\tUse features of and schedule code for given CPU" +-msgstr "-mcpu=\t使用指定 CPU 的特性和调度代码" ++msgstr "-mcpu=处理器\t使用指定 CPU 的特性并为其调度代码" + + #: config/microblaze/microblaze.opt:56 +-#, fuzzy + msgid "Don't optimize block moves, use memcpy" +-msgstr "不优化块移动" ++msgstr "不优化块移动,使用 memcpy" + + #: config/microblaze/microblaze.opt:60 + msgid "Use the soft multiply emulation (default)" +-msgstr "" ++msgstr "使用软件模拟乘法(默认)" + + #: config/microblaze/microblaze.opt:64 + msgid "Use the software emulation for divides (default)" +-msgstr "" ++msgstr "使用软件模拟除法(默认)" + + #: config/microblaze/microblaze.opt:68 + msgid "Use the hardware barrel shifter instead of emulation" +-msgstr "" ++msgstr "使用硬件桶型移位器代替仿真" + + #: config/microblaze/microblaze.opt:72 + #, fuzzy +@@ -8728,27 +8709,24 @@ msgid "Use pattern compare instructions" + msgstr "使用浮点双精度指令" + + #: config/microblaze/microblaze.opt:76 +-#, fuzzy + msgid "Check for stack overflow at runtime" +-msgstr "检查语法错误,然后停止" ++msgstr "在运行时检查栈溢出" + + #: config/microblaze/microblaze.opt:84 + msgid "Clear the BSS to zero and place zero initialized in BSS" +-msgstr "" ++msgstr "将 BSS 清空为零并将初始值为零的放入 BSS 中" + + #: config/microblaze/microblaze.opt:88 + msgid "Use multiply high instructions for high part of 32x32 multiply" + msgstr "" + + #: config/microblaze/microblaze.opt:92 +-#, fuzzy + msgid "Use hardware floating point conversion instructions" +-msgstr "使用十进制浮点指令" ++msgstr "使用浮点转换指令" + + #: config/microblaze/microblaze.opt:96 +-#, fuzzy + msgid "Use hardware floating point square root instruction" +-msgstr "使用十进制浮点指令" ++msgstr "使用浮点平方根指令" + + #: config/microblaze/microblaze.opt:100 + msgid "Description for mxl-mode-executable" +@@ -8767,23 +8745,20 @@ msgid "Description for mxl-mode-novectors" + msgstr "" + + #: config/linux-android.opt:23 +-#, fuzzy + msgid "Generate code for the Android platform." +-msgstr "为 Android 操作系统生成代码" ++msgstr "为 Android 操作系统生成代码。" + + #: config/g.opt:28 + msgid "-G<number>\tPut global and static data smaller than <number> bytes into a special section (on some targets)" + msgstr "-G<N>\t将小于 N 字节的全局和静态数据放入一个特殊的节中(在某些目标机上)" + + #: config/sol2.opt:35 +-#, fuzzy + msgid "Pass -z text to linker" +-msgstr "将 -assert pure-text 传递给链接器" ++msgstr "将 -z text 传递给链接器" + + #: config/fused-madd.opt:23 +-#, fuzzy + msgid "%<-mfused-madd%> is deprecated; use %<-ffp-contract=%> instead" +-msgstr "不建议使用此开关;请改用 -Wextra" ++msgstr "不建议使用%<-mfused-madd%>;请改用%<-ffp-contract=%>" + + #: c-family/c.opt:44 c-family/c.opt:47 c-family/c.opt:185 + #, c-format +@@ -9021,14 +8996,12 @@ msgid "Warn about variables which are initialized to themselves" + msgstr "对初始化为自身的变量给出警告。" + + #: c-family/c.opt:411 +-#, fuzzy + msgid "Warn about implicit declarations" + msgstr "对隐式函数声明给出警告" + + #: c-family/c.opt:415 +-#, fuzzy + msgid "Warn about implicit conversions from \"float\" to \"double\"" +-msgstr "对隐式转换给出警告" ++msgstr "对从“float”到“double”的隐式转换给出警告" + + #: c-family/c.opt:419 + msgid "Warn about implicit function declarations" +@@ -9275,7 +9248,6 @@ msgid "Warn when a register variable is declared volatile" + msgstr "当一个寄存器变量被声明为 volatile 时给出警告" + + #: c-family/c.opt:670 +-#, fuzzy + msgid "In C++, nonzero means warn about deprecated conversion from string literals to 'char *'. In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard." + msgstr "在 C++ 中,非零值表示将字面字符串转换为‘char *’时给出警告。在 C 中,给出相似的警告,但这种类型转换是符合 ISO C 标准的。" + +@@ -9302,9 +9274,8 @@ msgstr "开关%qs不再被支持" + + #: c-family/c.opt:693 c-family/c.opt:799 c-family/c.opt:1018 + #: c-family/c.opt:1022 c-family/c.opt:1038 +-#, fuzzy + msgid "No longer supported" +-msgstr "开关%qs不再被支持" ++msgstr "不再受支持" + + #: c-family/c.opt:697 + msgid "Recognize the \"asm\" keyword" +@@ -9415,7 +9386,7 @@ msgstr "将友元函数声明视作包含它的命名空间中的有效声明" + + #: c-family/c.opt:819 + msgid "Don't emit dllexported inline functions unless needed" +-msgstr "" ++msgstr "除非必需,不生成 DLL 导出的内联函数" + + #: c-family/c.opt:826 + msgid "Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types." +@@ -9789,7 +9760,7 @@ msgstr "为最小空间而不是最大速度优化" + + #: common.opt:436 + msgid "Optimize for speed disregarding exact standards compliance" +-msgstr "" ++msgstr "为速度优化,不严格遵守标准" + + #: common.opt:467 + msgid "This switch is deprecated; use -Wextra instead" +@@ -10289,7 +10260,7 @@ msgstr "启用循环分块转换" + #: common.opt:1140 + #, fuzzy + msgid "Enable Loop Flattening transformation" +-msgstr "启用循环分块转换" ++msgstr "启用循环交换转换" + + #: common.opt:1144 + msgid "Force bitfield accesses to match their type width" +@@ -10318,7 +10289,7 @@ msgstr "将条件跳转替换为没有跳转的等值表示" + + #: common.opt:1172 + msgid "Also if-convert conditional jumps containing memory writes" +-msgstr "" ++msgstr "将包含内存写入的条件跳转转换为不带分支的等效形式" + + #: common.opt:1180 + msgid "Do not generate .size directives" +@@ -10400,7 +10371,7 @@ msgstr "-fira-algorithm=|CB|priority] 设置使用的 IRA 算法" + #: common.opt:1265 + #, fuzzy, c-format + msgid "unknown IRA algorithm %qs" +-msgstr "未知的 IRA 算法“%s”" ++msgstr "%<asm%>中出现未知的寄存器名%qs" + + #: common.opt:1275 + msgid "-fira-region=[one|all|mixed] Set regions for IRA" +@@ -10409,7 +10380,7 @@ msgstr "-fira-region=[one|all|mixed] 设置 IRA 的区域" + #: common.opt:1278 + #, fuzzy, c-format + msgid "unknown IRA region %qs" +-msgstr "未知的 IRA 区域“%s”" ++msgstr "%<asm%>中出现未知的寄存器名%qs" + + #: common.opt:1291 + msgid "Use IRA based register pressure calculation" +@@ -10558,9 +10529,8 @@ msgid "Optimize sibling and tail recursive calls" + msgstr "优化同级递归和尾递归" + + #: common.opt:1444 +-#, fuzzy + msgid "Perform partial inlining" +-msgstr "进行早内联" ++msgstr "进行部分内联" + + #: common.opt:1448 common.opt:1452 + msgid "Report on memory allocation before interprocedural optimization" +@@ -10825,7 +10795,7 @@ msgstr "展开循环时分离归纳变量的生存期" + #: common.opt:1743 + #, fuzzy + msgid "Generate discontiguous stack frames" +-msgstr "生成与 APCS 相容的栈帧" ++msgstr "生成与 APCS 相容的堆栈框架" + + #: common.opt:1747 + msgid "Split wide types into independent registers" +@@ -10895,7 +10865,7 @@ msgstr "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\t设 + #: common.opt:1821 + #, fuzzy, c-format + msgid "unknown TLS model %qs" +-msgstr "未知的 tls-model“%s”" ++msgstr "tls_model 的实参不是一个字符串" + + #: common.opt:1837 + msgid "Reorder top level functions, variables, and asms" +@@ -10920,7 +10890,7 @@ msgstr "启用树上的 SSA-CCP 优化" + #: common.opt:1860 + #, fuzzy + msgid "Enable SSA-BIT-CCP optimization on trees" +-msgstr "启用树上的 SSA-CCP 优化" ++msgstr "启用树上的 SSA 死代码消除优化" + + #: common.opt:1868 + msgid "Enable loop header copying on trees" +@@ -11115,7 +11085,7 @@ msgstr "-fvisibility=[default|internal|hidden|protected]\t设置符号的默认 + #: common.opt:2091 + #, fuzzy, c-format + msgid "unrecognized visibility value %qs" +-msgstr "无法识别的可见性值“%s”" ++msgstr "无效的 --param 值%qs" + + #: common.opt:2107 + msgid "Use expression value profiles in optimizations" +@@ -11190,9 +11160,8 @@ msgid "Generate debug information in extended XCOFF format" + msgstr "生成 XCOFF 扩展格式的调试信息" + + #: common.opt:2182 +-#, fuzzy + msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory" +-msgstr "-imultilib <目录>\t将目录设定为 multilib 的包含子目录" ++msgstr "-iplugindir=<目录>\t将目录设定为默认的插件子目录" + + #: common.opt:2204 + msgid "-o <file>\tPlace output into <file>" +@@ -11237,12 +11206,12 @@ msgstr "生成位置无关可执行文件" + #: go/gofrontend/expressions.cc:882 + #, fuzzy + msgid "invalid use of type" +-msgstr "错误地使用了%qD" ++msgstr "对未定义类型%<%s %E%>的使用无效" + + #: go/gofrontend/expressions.cc:1992 go/gofrontend/expressions.cc:2686 + #, fuzzy + msgid "floating point constant truncated to integer" +-msgstr "浮点常量向零截断" ++msgstr "大定点常量隐式截断为定点类型" + + #: go/gofrontend/expressions.cc:2566 go/gofrontend/expressions.cc:2636 + #: go/gofrontend/expressions.cc:2652 +@@ -11251,24 +11220,21 @@ msgid "constant refers to itself" + msgstr "inlined_to pointer 指向自身" + + #: go/gofrontend/expressions.cc:4043 +-#, fuzzy + msgid "expected numeric type" +-msgstr "需要表达式类型" ++msgstr "需要数字类型" + + #: go/gofrontend/expressions.cc:4050 +-#, fuzzy + msgid "expected integer or boolean type" +-msgstr "需要整数表达式" ++msgstr "需要整数或布尔类型" + + #: go/gofrontend/expressions.cc:4055 + #, fuzzy + msgid "invalid operand for unary %<&%>" +-msgstr "%%R 的操作数无效" ++msgstr "代码‘%c’的操作数无效" + + #: go/gofrontend/expressions.cc:4063 +-#, fuzzy + msgid "expected pointer" +-msgstr "需要整数" ++msgstr "需要指针" + + #: go/gofrontend/expressions.cc:5456 go/gofrontend/expressions.cc:5707 + #: go/gofrontend/expressions.cc:5723 +@@ -11279,7 +11245,7 @@ msgstr "二元表达式中类型不匹配" + #: go/gofrontend/expressions.cc:5736 + #, fuzzy + msgid "shift of non-integer operand" +-msgstr "数组%qE的大小的类型不是整数" ++msgstr "非整数操作数使用了操作数代码‘%c’" + + #: go/gofrontend/expressions.cc:5741 + #, fuzzy +@@ -11287,36 +11253,31 @@ msgid "shift count not unsigned integer" + msgstr "switch 语句中的值不是一个整数" + + #: go/gofrontend/expressions.cc:5750 +-#, fuzzy + msgid "negative shift count" +-msgstr "指令长度为负" ++msgstr "移位次数为负" + + #: go/gofrontend/expressions.cc:6433 +-#, fuzzy + msgid "object is not a method" +-msgstr "被调用的对象%qE不是一个函数" ++msgstr "对象不是一个方法" + + #: go/gofrontend/expressions.cc:6442 +-#, fuzzy + msgid "method type does not match object type" +-msgstr "实参类型为%qT,与%qT不匹配" ++msgstr "方法类型不匹配对象类型" + + #: go/gofrontend/expressions.cc:6690 go/gofrontend/expressions.cc:6709 + #: go/gofrontend/expressions.cc:7348 go/gofrontend/expressions.cc:7487 + #: go/gofrontend/expressions.cc:7530 go/gofrontend/expressions.cc:7568 + #: go/gofrontend/expressions.cc:8603 go/gofrontend/expressions.cc:8624 +-#, fuzzy + msgid "not enough arguments" +-msgstr "没有参数" ++msgstr "实参太少" + + #: go/gofrontend/expressions.cc:6692 go/gofrontend/expressions.cc:7353 + #: go/gofrontend/expressions.cc:7470 go/gofrontend/expressions.cc:7492 + #: go/gofrontend/expressions.cc:7535 go/gofrontend/expressions.cc:7570 + #: go/gofrontend/expressions.cc:8357 go/gofrontend/expressions.cc:8606 + #: go/gofrontend/expressions.cc:8617 +-#, fuzzy + msgid "too many arguments" +-msgstr "%qE实参太多" ++msgstr "实参太多" + + #: go/gofrontend/expressions.cc:7395 + #, fuzzy +@@ -11330,104 +11291,91 @@ msgstr "" + #: go/gofrontend/expressions.cc:7446 + #, fuzzy + msgid "unsupported argument type to builtin function" +-msgstr "内建函数实参无效" ++msgstr "%<__builtin_frame_address%>的实参不受支持" + + #: go/gofrontend/expressions.cc:7458 +-#, fuzzy + msgid "argument must be channel" +-msgstr "实参必须是常数" ++msgstr "实参必须是通道" + + #: go/gofrontend/expressions.cc:7478 + #, fuzzy + msgid "argument must be a field reference" +-msgstr "最后一个实参必须是一个立即数" ++msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是 %4$s" + + #: go/gofrontend/expressions.cc:7505 +-#, fuzzy + msgid "left argument must be a slice" +-msgstr "最后一个实参必须是一个立即数" ++msgstr "左实参必须是一个切片" + + #: go/gofrontend/expressions.cc:7516 +-#, fuzzy + msgid "right argument must be a slice or a string" +-msgstr "实参必须是常数" ++msgstr "右实参必须是一个切片或字符串" + + #: go/gofrontend/expressions.cc:7521 + msgid "element types must be the same" +-msgstr "" ++msgstr "元素类型必须一样" + + #: go/gofrontend/expressions.cc:7543 +-#, fuzzy + msgid "arguments 1 and 2 have different types" +-msgstr "允许‘?’运算符的参数有不同的类型" ++msgstr "实参 1 和 2 具有不同的类型" + + #: go/gofrontend/expressions.cc:7560 +-#, fuzzy + msgid "argument must have complex type" +-msgstr "形参 %u 的类型不完全" ++msgstr "实参必须具有复数类型" + + #: go/gofrontend/expressions.cc:7578 +-#, fuzzy + msgid "complex arguments must have identical types" +-msgstr "cleanup 实参不是一个标识符" ++msgstr "复数实参必须具有相同的类型" + + #: go/gofrontend/expressions.cc:7580 +-#, fuzzy + msgid "complex arguments must have floating-point type" +-msgstr "不使用硬件浮点单元" ++msgstr "复数实参必须具有浮点类型" + + #: go/gofrontend/expressions.cc:8560 +-#, fuzzy + msgid "expected function" +-msgstr "函数%q+D已删除" ++msgstr "需要函数" + + #: go/gofrontend/expressions.cc:8571 + msgid "method call without object" +-msgstr "" ++msgstr "方法调用缺少对象" + + #: go/gofrontend/expressions.cc:8584 +-#, fuzzy + msgid "incompatible type for receiver" +-msgstr "%2$qE的第 %1$d 个实参类型不兼容" ++msgstr "接收器类型不兼容" + + #: go/gofrontend/expressions.cc:8982 go/gofrontend/expressions.cc:8995 +-#, fuzzy + msgid "number of results does not match number of values" +-msgstr "引入边计数不匹配 PHI 参数数目" ++msgstr "返回值的数量不匹配值的数量" + + #: go/gofrontend/expressions.cc:9246 go/gofrontend/expressions.cc:9625 +-#, fuzzy + msgid "index must be integer" +-msgstr "%C处 Cray 指针必须是一个整数" ++msgstr "索引必须是整数" + + #: go/gofrontend/expressions.cc:9250 go/gofrontend/expressions.cc:9629 +-#, fuzzy + msgid "slice end must be integer" +-msgstr "%C处 Cray 指针必须是一个整数" ++msgstr "切片结尾必须是整数" + + #: go/gofrontend/expressions.cc:9305 +-#, fuzzy + msgid "array is not addressable" +-msgstr "内存输入 %d 不可直接寻址" ++msgstr "数组不能被取指" + + #: go/gofrontend/expressions.cc:9844 +-#, fuzzy + msgid "incompatible type for map index" +-msgstr "%2$qE的第 %1$d 个实参类型不兼容" ++msgstr "映射索引类型不兼容" + + #: go/gofrontend/expressions.cc:10163 ++#, fuzzy + msgid "expected interface or pointer to interface" +-msgstr "" ++msgstr "%<delete%>的参数类型应为指针而非%q#T" + + #: go/gofrontend/expressions.cc:10468 + #, fuzzy + msgid "invalid new of function type" +-msgstr "向函数类型%qT的转换无效" ++msgstr "对 new 而言类型%<void%>无效" + + #: go/gofrontend/expressions.cc:10573 + #, fuzzy + msgid "invalid type for make function" +-msgstr "纯常函数状态无效" ++msgstr "函数%q+#D的抽象返回类型无效" + + #: go/gofrontend/expressions.cc:10732 + #, fuzzy +@@ -11446,7 +11394,7 @@ msgstr "" + #: go/gofrontend/expressions.cc:12139 go/gofrontend/expressions.cc:12147 + #, fuzzy + msgid "invalid unsafe.Pointer conversion" +-msgstr "整点转换中类型无效" ++msgstr "从%<__fpreg%>的转换无效" + + #: go/gofrontend/expressions.cc:12152 go/gofrontend/statements.cc:1349 + msgid "type assertion only valid for interface types" +@@ -11457,9 +11405,8 @@ msgid "impossible type assertion: type does not implement interface" + msgstr "" + + #: go/gofrontend/expressions.cc:12320 go/gofrontend/statements.cc:1200 +-#, fuzzy + msgid "expected channel" +-msgstr "需要类名" ++msgstr "需要通道" + + #: go/gofrontend/expressions.cc:12325 go/gofrontend/statements.cc:1205 + msgid "invalid receive on send-only channel" +@@ -11468,7 +11415,7 @@ msgstr "" + #: go/gofrontend/expressions.cc:12419 + #, fuzzy + msgid "incompatible types in send" +-msgstr "PHI 实参 %u 类型不兼容" ++msgstr "指针目标类型在 C++ 中不兼容" + + #: go/gofrontend/expressions.cc:12424 + #, fuzzy +@@ -11478,7 +11425,7 @@ msgstr "间接引用操作数无效" + #: go/gofrontend/statements.cc:521 + #, fuzzy + msgid "invalid left hand side of assignment" +-msgstr "赋值运算的左操作数必须是左值" ++msgstr "在左操作数边转化 SSA_NAME。" + + #: go/gofrontend/statements.cc:930 + msgid "expected map index on right hand side" +@@ -11491,27 +11438,24 @@ msgstr "需要行尾" + + #: go/gofrontend/statements.cc:1810 + msgid "no object for method call" +-msgstr "" ++msgstr "方法调用没有对象" + + #: go/gofrontend/statements.cc:2580 + #, fuzzy + msgid "return with value in function with no return type" +-msgstr "在无返回值的函数中,%<return%>带返回值" ++msgstr "在有返回值的的函数中,%<return%>不带返回值" + + #: go/gofrontend/statements.cc:2593 +-#, fuzzy + msgid "too many values in return statement" +-msgstr "返回语句操作数无效" ++msgstr "返回语句中值太多" + + #: go/gofrontend/statements.cc:2622 +-#, fuzzy + msgid "not enough values in return statement" +-msgstr "返回语句操作数无效" ++msgstr "返回语句中值不够" + + #: go/gofrontend/statements.cc:2998 +-#, fuzzy + msgid "expected boolean expression" +-msgstr "需要表达式" ++msgstr "需要布尔表达式" + + #: go/gofrontend/statements.cc:4612 + msgid "too many variables for range clause with channel" +@@ -11522,64 +11466,63 @@ msgid "range clause must have array, slice, setring, map, or channel type" + msgstr "" + + #: go/gofrontend/types.cc:575 +-#, fuzzy + msgid "need explicit conversion" +-msgstr "对隐式转换给出警告" ++msgstr "需要显式转换" + + #: go/gofrontend/types.cc:577 + msgid "multiple value function call in single value context" + msgstr "" + + #: go/gofrontend/types.cc:585 +-#, fuzzy, c-format ++#, c-format + msgid "cannot use type %s as type %s" +-msgstr "不能将类型%qT转换为类型%qT" ++msgstr "不能将类型 %s 用作 %s" + + #: go/gofrontend/types.cc:2479 +-#, fuzzy + msgid "different receiver types" +-msgstr "无效的接收者类型%qs" ++msgstr "不同的接收器类型" + + #: go/gofrontend/types.cc:2499 go/gofrontend/types.cc:2512 + #: go/gofrontend/types.cc:2527 +-#, fuzzy + msgid "different number of parameters" +-msgstr "一个静态控制部分(ScoP)中参数的最大数量" ++msgstr "形参数量不同" + + #: go/gofrontend/types.cc:2520 +-#, fuzzy + msgid "different parameter types" +-msgstr "无效的参数类型%qT" ++msgstr "形参类型不同" + + #: go/gofrontend/types.cc:2535 ++#, fuzzy + msgid "different varargs" +-msgstr "" ++msgstr "在不同命名空间中特例化%q#T" + + #: go/gofrontend/types.cc:2544 go/gofrontend/types.cc:2557 + #: go/gofrontend/types.cc:2572 ++#, fuzzy + msgid "different number of results" +-msgstr "" ++msgstr "无效的版本号‘%s’" + + #: go/gofrontend/types.cc:2565 ++#, fuzzy + msgid "different result types" +-msgstr "" ++msgstr "与%q+D类型冲突" + + #: go/gofrontend/types.cc:3546 + #, c-format + msgid "implicit assignment of %s%s%s hidden field %s%s%s" +-msgstr "" ++msgstr "对%s%s%s的隐式赋值隐藏了字段%s%s%s" + + #: go/gofrontend/types.cc:4386 + msgid "bad length when making slice" +-msgstr "" ++msgstr "生成切片时长度错误" + + #: go/gofrontend/types.cc:4392 + msgid "bad capacity when making slice" +-msgstr "" ++msgstr "生成切片时容量错误" + + #: go/gofrontend/types.cc:5090 + msgid "bad size when making map" +-msgstr "" ++msgstr "生成映射时大小错误" + + #: go/gofrontend/types.cc:5375 + msgid "bad buffer size when making channel" +@@ -11588,12 +11531,12 @@ msgstr "" + #: go/gofrontend/types.cc:5870 + #, c-format + msgid "need explicit conversion; missing method %s%s%s" +-msgstr "" ++msgstr "需要显式转换;缺少方法%s%s%s" + + #: go/gofrontend/types.cc:5887 go/gofrontend/types.cc:6022 +-#, fuzzy, c-format ++#, c-format + msgid "incompatible type for method %s%s%s" +-msgstr "%2$qE的第 %1$d 个实参类型不兼容" ++msgstr "方法%s%s%s类型不兼容" + + #: go/gofrontend/types.cc:5891 go/gofrontend/types.cc:6026 + #, fuzzy, c-format +@@ -11605,24 +11548,23 @@ msgid "pointer to interface type has no methods" + msgstr "" + + #: go/gofrontend/types.cc:5965 go/gofrontend/types.cc:5978 +-#, fuzzy + msgid "type has no methods" +-msgstr "词法分析方法时出错" ++msgstr "类型没有方法" + + #: go/gofrontend/types.cc:5999 +-#, fuzzy, c-format ++#, c-format + msgid "ambiguous method %s%s%s" +-msgstr "有歧义的缩写 %s" ++msgstr "有歧义的方法%s%s%s" + + #: go/gofrontend/types.cc:6002 +-#, fuzzy, c-format ++#, c-format + msgid "missing method %s%s%s" +-msgstr "“%s”缺少实参" ++msgstr "缺少方法%s%s%s" + + #: go/gofrontend/types.cc:6042 + #, c-format + msgid "method %s%s%s requires a pointer" +-msgstr "" ++msgstr "方法%s%s%s需要一个指针" + + #. Warn about and ignore all others for now, but store them. + #: attribs.c:306 objc/objc-act.c:4799 objc/objc-act.c:6692 +@@ -12349,9 +12291,9 @@ msgid "uninitialized const member in %qT is invalid in C++" + msgstr "未初始化的常量%qD在C++中是无效的" + + #: c-decl.c:4141 cp/init.c:1919 cp/init.c:1934 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD should be initialized" +-msgstr "%q+D将在" ++msgstr "%qD应当被赋值" + + #: c-decl.c:4219 + #, gcc-internal-format +@@ -12941,14 +12883,14 @@ msgid "declaration does not declare anything" + msgstr "没有声明任何东西" + + #: c-decl.c:6694 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "ISO C99 doesn%'t support unnamed structs/unions" +-msgstr "ISO C 不支持无名结构/联合" ++msgstr "ISO C99 不支持无名结构/联合" + + #: c-decl.c:6697 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "ISO C90 doesn%'t support unnamed structs/unions" +-msgstr "ISO C 不支持无名结构/联合" ++msgstr "ISO C90 不支持无名结构/联合" + + #: c-decl.c:6789 c-decl.c:6808 c-decl.c:6867 objcp/objcp-decl.c:91 + #, gcc-internal-format +@@ -13260,14 +13202,14 @@ msgid "ISO C does not support saturating types" + msgstr "ISO C 不支持饱和类型" + + #: c-decl.c:9060 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<__int128%> is not supported for this target" +-msgstr "定点类型在此目标机上不受支持" ++msgstr "%<__int128%>在此目标机上不受支持" + + #: c-decl.c:9065 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "ISO C does not support %<__int128%> type" +-msgstr "ISO C 不支持定点类型" ++msgstr "ISO C90 不支持%<__int128%>类型" + + #: c-decl.c:9268 + #, gcc-internal-format +@@ -13370,9 +13312,9 @@ msgid "ISO C does not allow extra %<;%> outside of a function" + msgstr "ISO C 不支持在函数外使用多余的%<;%>" + + #: c-parser.c:1435 c-parser.c:2000 c-parser.c:3213 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "unknown type name %qE" +-msgstr "未知的寄存器名:%s" ++msgstr "未知的类型名%qE" + + #: c-parser.c:1455 c-parser.c:8230 cp/parser.c:25250 + #, gcc-internal-format +@@ -13397,7 +13339,7 @@ msgstr "属性在模板实例化上被忽略" + #: c-parser.c:1554 + #, fuzzy, gcc-internal-format + msgid "unexpected attribute" +-msgstr "需要属性位名" ++msgstr "属性声明" + + #: c-parser.c:1596 + #, gcc-internal-format +@@ -13423,14 +13365,14 @@ msgid "ISO C forbids nested functions" + msgstr "ISO C 不允许嵌套函数" + + #: c-parser.c:1793 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "ISO C99 does not support %<_Static_assert%>" +-msgstr "ISO C90 不支持%<long long%>" ++msgstr "ISO C90 不支持%<_Static_assert%>" + + #: c-parser.c:1796 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "ISO C90 does not support %<_Static_assert%>" +-msgstr "ISO C90 不支持%<long long%>" ++msgstr "ISO C90 不支持%<_Static_assert%>" + + #: c-parser.c:1821 c-parser.c:3278 c-parser.c:8285 cp/parser.c:25137 + #, gcc-internal-format +@@ -13440,7 +13382,7 @@ msgstr "需要字面字符串" + #: c-parser.c:1829 + #, fuzzy, gcc-internal-format + msgid "expression in static assertion is not an integer" +-msgstr "数组下标不是一个整数" ++msgstr "初始值设定中数组索引不是整型常量表达式" + + #: c-parser.c:1836 + #, fuzzy, gcc-internal-format +@@ -13450,7 +13392,7 @@ msgstr "初始值设定中数组索引不是整型常量表达式" + #: c-parser.c:1841 + #, fuzzy, gcc-internal-format + msgid "expression in static assertion is not constant" +-msgstr "整型表达式%qE不是常量" ++msgstr "初始值设定中数组索引不是整型常量表达式" + + #. Report the error. + #: c-parser.c:1846 cp/semantics.c:4681 +@@ -13743,17 +13685,17 @@ msgstr "为%qs指定了存储类" + #: c-parser.c:7943 c-parser.c:8000 cp/parser.c:23193 + #, fuzzy, gcc-internal-format + msgid "unknown property attribute" +-msgstr "<未知的运算符>" ++msgstr "attribute(target(\"%s\"))未知" + + #: c-parser.c:7964 cp/parser.c:23157 + #, fuzzy, gcc-internal-format + msgid "missing %<=%> (after %<getter%> attribute)" +-msgstr "%<#pragma pack%>后缺少%<(%>,忽略" ++msgstr "%qs后断言" + + #: c-parser.c:7967 cp/parser.c:23160 + #, fuzzy, gcc-internal-format + msgid "missing %<=%> (after %<setter%> attribute)" +-msgstr "%<#pragma pack%>后缺少%<(%>,忽略" ++msgstr "%qs后断言" + + #: c-parser.c:7981 cp/parser.c:23174 + #, fuzzy, gcc-internal-format +@@ -13763,7 +13705,7 @@ msgstr "不能为函数指定地址区域属性" + #: c-parser.c:7986 cp/parser.c:23179 + #, gcc-internal-format + msgid "setter name must terminate with %<:%>" +-msgstr "" ++msgstr "setter 的名字必须以%<:%>结尾" + + #: c-parser.c:7993 cp/parser.c:23186 + #, fuzzy, gcc-internal-format +@@ -14017,9 +13959,9 @@ msgid "subscripted value is pointer to function" + msgstr "下标运算的左操作数是函数指针" + + #: c-typeck.c:2350 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "index value is out of bound" +-msgstr "%2$L处第 %1$d 维下标越界" ++msgstr "索引值越界" + + #: c-typeck.c:2394 + #, gcc-internal-format +@@ -14057,7 +13999,7 @@ msgstr "调用了有限定 void 返回类型的函数" + #: c-typeck.c:2930 + #, fuzzy, gcc-internal-format + msgid "too many arguments to method %qE" +-msgstr "%qE实参太多" ++msgstr "提供给函数%qE的实参太多" + + #: c-typeck.c:2933 c-family/c-common.c:8039 + #, gcc-internal-format +@@ -14162,7 +14104,7 @@ msgstr "函数指针不能相减" + #: c-typeck.c:3488 + #, gcc-internal-format + msgid "ISO C does not support %<~%> for complex conjugation" +-msgstr "ISO C 不支持用 %<~%> 求共轭复数" ++msgstr "ISO C 不支持用%<~%>求共轭复数" + + #: c-typeck.c:3527 + #, gcc-internal-format +@@ -15267,17 +15209,17 @@ msgstr "循环 %d 的头并非只有 2 个入口" + #: cfgloop.c:1370 + #, fuzzy, gcc-internal-format + msgid "loop %d%'s latch does not have exactly 1 successor" +-msgstr "循环 %d 的回边并非只有一个后继" ++msgstr "循环 %d 的锁存并非只有一个后继" + + #: cfgloop.c:1375 + #, fuzzy, gcc-internal-format + msgid "loop %d%'s latch does not have header as successor" +-msgstr "循环 %d 的回边的后继不是头" ++msgstr "循环 %d 的锁存的后继不是头" + + #: cfgloop.c:1380 + #, fuzzy, gcc-internal-format + msgid "loop %d%'s latch does not belong directly to it" +-msgstr "循环 %d 的回边并非直接属于该循环" ++msgstr "循环 %d 的锁存并非直接属于该循环" + + #: cfgloop.c:1386 + #, fuzzy, gcc-internal-format +@@ -15287,7 +15229,7 @@ msgstr "循环 %d 的头并非直接属于该循环 " + #: cfgloop.c:1392 + #, fuzzy, gcc-internal-format + msgid "loop %d%'s latch is marked as part of irreducible region" +-msgstr "循环 %d 的回边被标记为属于一个不可归约区域" ++msgstr "循环 %d 的锁存被标记为属于一个不可归约区域" + + #: cfgloop.c:1425 + #, gcc-internal-format, gfc-internal-format +@@ -15327,12 +15269,12 @@ msgstr "循环 %d 退出列表非空,但是退出未被记录" + #: cfgloop.c:1514 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "exit %d->%d not recorded" +-msgstr "退出 %d->%d 未被记录" ++msgstr "退出 %d->%d 不记录" + + #: cfgloop.c:1532 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "wrong list of exited loops for edge %d->%d" +-msgstr "边 %d->%d 已退出的循环列表错误" ++msgstr " 边缘 %d->%d 的错误退出的循环列表" + + #: cfgloop.c:1541 + #, fuzzy, gcc-internal-format +@@ -15515,7 +15457,7 @@ msgid "aux field set for edge %s->%s" + msgstr "为边 %s->%s 设定辅助域" + + #: cgraphunit.c:478 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "execution count is negative" + msgstr "执行次数为负" + +@@ -15530,7 +15472,7 @@ msgid "inline clone with address taken" + msgstr "内联已被取地址的克隆" + + #: cgraphunit.c:493 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "inline clone is needed" + msgstr "需要内联克隆" + +@@ -15732,7 +15674,7 @@ msgstr "转换为不完全类型" + #: convert.c:852 convert.c:928 + #, fuzzy, gcc-internal-format + msgid "can%'t convert between vector values of different size" +-msgstr "不能在不同大小的向量类型间进行转换" ++msgstr "不能在不同大小的矢量类型间进行转换" + + #: convert.c:858 + #, gcc-internal-format +@@ -15750,7 +15692,7 @@ msgid "aggregate value used where a complex was expected" + msgstr "需要复数时使用了聚合值" + + #: convert.c:934 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t convert value to a vector" + msgstr "不能将值转换为向量" + +@@ -15807,7 +15749,7 @@ msgstr "读取计数%2$qs时函数%1$qE的代码覆盖不匹配" + #: coverage.c:378 + #, fuzzy, gcc-internal-format + msgid "coverage mismatch ignored" +-msgstr "由于 -Wcoverage-mismatch 忽略覆盖率不匹配" ++msgstr "%qE属性被忽略" + + #: coverage.c:380 + #, gcc-internal-format +@@ -15847,7 +15789,7 @@ msgstr "输入文件太多" + #: dbgcnt.c:135 + #, fuzzy, gcc-internal-format + msgid "cannot find a valid counter:value pair:" +-msgstr "不能找到一个有效的计数器:值对:" ++msgstr "不能找到一个有效的 计数器:值 对:" + + #: dbgcnt.c:136 + #, gcc-internal-format, gfc-internal-format +@@ -16167,7 +16109,7 @@ msgstr "不支持 -pipe" + #: gcc.c:2617 + #, fuzzy, gcc-internal-format + msgid "pex_init failed: %m" +-msgstr "pex_init 失败:%s" ++msgstr "pex_init 失败" + + #: gcc.c:2656 + #, fuzzy, gcc-internal-format +@@ -16180,14 +16122,14 @@ msgid "failed to get process times: %m" + msgstr "无法获取进程时间" + + #: gcc.c:2688 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "%s (program %s)" +-msgstr "程序:%s\n" ++msgstr "%s(程序 %s)" + + #: gcc.c:3097 opts-common.c:958 opts-common.c:1030 + #, fuzzy, gcc-internal-format + msgid "unrecognized command line option %qs" +-msgstr "无法识别的命令行选项“%s”" ++msgstr "命令行选项文件“%s”不存在" + + #: gcc.c:3358 + #, fuzzy, gcc-internal-format +@@ -16237,22 +16179,22 @@ msgstr "无法关闭临时响应文件 %s" + #: gcc.c:4501 + #, fuzzy, gcc-internal-format + msgid "spec %qs invalid" +-msgstr "spec‘%s’无效" ++msgstr "无效的参数%qs" + + #: gcc.c:4650 + #, fuzzy, gcc-internal-format + msgid "spec %qs has invalid %<%%0%c%>" +-msgstr "spec‘%s’有无效的‘%%0%c’" ++msgstr "位段%qs类型无效" + + #: gcc.c:4961 + #, fuzzy, gcc-internal-format + msgid "spec %qs has invalid %<%%W%c%>" +-msgstr "spec‘%s’有无效的‘%%W%c’" ++msgstr "位段%qs类型无效" + + #: gcc.c:4983 + #, fuzzy, gcc-internal-format + msgid "spec %qs has invalid %<%%x%c%>" +-msgstr "spec‘%s’有无效的‘%%x%c’" ++msgstr "位段%qs类型无效" + + #. Catch the case where a spec string contains something like + #. '%{foo:%*}'. i.e. there is no * in the pattern on the left +@@ -16275,7 +16217,7 @@ msgstr "spec 错误:无法识别的 spec 选项‘%c’" + #: gcc.c:5321 + #, fuzzy, gcc-internal-format + msgid "unknown spec function %qs" +-msgstr "未知的 spec 函数‘%s’" ++msgstr "在成员函数%qs中" + + #: gcc.c:5339 + #, fuzzy, gcc-internal-format +@@ -16329,9 +16271,9 @@ msgid "%s: -fcompare-debug failure" + msgstr "%s:-fcompare-debug 失败" + + #: gcc.c:6144 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "atexit failed" +-msgstr "pex_init 失败" ++msgstr "atexit 失败" + + #: gcc.c:6323 + #, gcc-internal-format +@@ -16386,9 +16328,9 @@ msgid "comparing final insns dumps" + msgstr "比较最终指令转储" + + #: gcc.c:6844 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "-fuse-linker-plugin, but " +-msgstr "使用了 -fuse-linker-plugin 但找不到 liblto_plugin.so" ++msgstr "使用了 -fuse-linker-plugin,但" + + #: gcc.c:6873 + #, gcc-internal-format, gfc-internal-format +@@ -16401,39 +16343,39 @@ msgid "language %s not recognized" + msgstr "语言 %s 未能被识别" + + #: gcc.c:6985 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%s: %m" +-msgstr "%s:%s" ++msgstr "%s:%m" + + #: gcc.c:7140 + #, fuzzy, gcc-internal-format + msgid "multilib spec %qs is invalid" +-msgstr "multilib spec‘%s’无效" ++msgstr "花括号中的 spec‘%s’在‘%c’中无效" + + #: gcc.c:7332 + #, fuzzy, gcc-internal-format + msgid "multilib exclusions %qs is invalid" +-msgstr "multilib 排除‘%s’无效" ++msgstr "C++ 不允许在%qs表达式中定义类型" + + #: gcc.c:7390 gcc.c:7531 + #, fuzzy, gcc-internal-format + msgid "multilib select %qs is invalid" +-msgstr "multilib 选择‘%s’无效" ++msgstr "C++ 不允许在%qs表达式中定义类型" + + #: gcc.c:7569 + #, fuzzy, gcc-internal-format + msgid "multilib exclusion %qs is invalid" +-msgstr "multilib 排除‘%s’无效" ++msgstr "C++ 不允许在%qs表达式中定义类型" + + #: gcc.c:7775 + #, fuzzy, gcc-internal-format + msgid "environment variable %qs not defined" +-msgstr "没有定义“%s”环境变量" ++msgstr "没有定义 DJGPP 环境变量" + + #: gcc.c:7887 gcc.c:7892 + #, fuzzy, gcc-internal-format + msgid "invalid version number %qs" +-msgstr "无效的版本号‘%s’" ++msgstr "%qs的版本是%q.*s,需要的版本%q.*s" + + #: gcc.c:7935 + #, gcc-internal-format, gfc-internal-format +@@ -16488,23 +16430,23 @@ msgstr "%s:%d 个基本块和 %d 个寄存器" + #: ggc-common.c:467 ggc-common.c:475 ggc-common.c:549 ggc-common.c:568 + #: ggc-page.c:2170 ggc-page.c:2201 ggc-page.c:2208 ggc-zone.c:2420 + #: ggc-zone.c:2431 ggc-zone.c:2435 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t write PCH file: %m" + msgstr "无法写入 PCH 文件:%m" + + #: ggc-common.c:561 config/i386/host-cygwin.c:55 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t get position in PCH file: %m" + msgstr "不能在 PCH 文件中找到位置:%m" + + #: ggc-common.c:571 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t write padding to PCH file: %m" + msgstr "不能向 PCH 文件写入填补:%m" + + #: ggc-common.c:626 ggc-common.c:634 ggc-common.c:641 ggc-common.c:644 + #: ggc-common.c:654 ggc-common.c:657 ggc-page.c:2298 ggc-zone.c:2454 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t read PCH file: %m" + msgstr "无法读取 PCH 文件:%m" + +@@ -16519,12 +16461,12 @@ msgid "open /dev/zero: %m" + msgstr "打开 /dev/zero:%m" + + #: ggc-page.c:2186 ggc-page.c:2192 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t write PCH file" + msgstr "无法写入 PCH 文件" + + #: ggc-zone.c:2417 ggc-zone.c:2428 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t seek PCH file: %m" + msgstr "无法在 PCH 文件中定位:%m" + +@@ -16601,18 +16543,18 @@ msgstr "gimplification 失败" + #: godump.c:1040 + #, fuzzy, gcc-internal-format + msgid "could not close Go dump file: %m" +-msgstr "无法打开转储文件%qs:%s" ++msgstr "无法打开用零填充的指令转储文件%qs:%s" + + #: godump.c:1052 + #, fuzzy, gcc-internal-format + msgid "could not open Go dump file %qs: %m" +-msgstr "无法打开转储文件%qs:%s" ++msgstr "无法打开最终指令转储文件%qs:%s" + + #: graph.c:411 toplev.c:1517 java/jcf-parse.c:1751 java/jcf-parse.c:1890 + #: objc/objc-act.c:477 + #, gcc-internal-format + msgid "can%'t open %s: %m" +-msgstr "无法打开%s:%m" ++msgstr "无法打开 %s:%m" + + #: graphite-clast-to-gimple.c:1228 graphite-poly.c:691 toplev.c:928 + #: toplev.c:1115 +@@ -16626,9 +16568,9 @@ msgid "the file is not in OpenScop format" + msgstr "printf 格式的字段宽度" + + #: graphite-poly.c:604 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "the language is not recognized" +-msgstr "语言 %s 未能被识别" ++msgstr "语言不可识别" + + #: graphite-poly.c:615 + #, gcc-internal-format +@@ -16694,9 +16636,9 @@ msgid "At most %i profile runs is supported. Perhaps corrupted profile?" + msgstr "" + + #: lto-cgraph.c:1514 +-#, gcc-internal-format, gfc-internal-format ++#, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Profile information in %s corrupted" +-msgstr "" ++msgstr "%s 的存储信息很诡异" + + #: lto-cgraph.c:1549 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -16759,7 +16701,7 @@ msgstr "" + #: lto-streamer-in.c:992 + #, fuzzy, gcc-internal-format + msgid "original type declared here" +-msgstr "原先在这里定义" ++msgstr "%qD 在此声明" + + #: lto-streamer-in.c:994 + #, gcc-internal-format +@@ -16769,12 +16711,12 @@ msgstr "" + #: lto-streamer-in.c:1000 + #, fuzzy, gcc-internal-format + msgid "type of field declared here" +-msgstr "以前在此声明过" ++msgstr "字段%q+D无效地声明为函数类型" + + #: lto-streamer-in.c:1007 + #, fuzzy, gcc-internal-format + msgid "type of mismatching field declared here" +-msgstr "间接引用类型不匹配" ++msgstr "字段%q+D无效地声明为函数类型" + + #: lto-streamer-in.c:1028 + #, gcc-internal-format, gfc-internal-format +@@ -16918,9 +16860,9 @@ msgid "command line option %qs is not supported by this configuration" + msgstr "此配置不支持命令行选项%qs" + + #: opts-common.c:979 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "missing argument to %qs" +-msgstr "“%s”缺少实参" ++msgstr "%qs缺少参数" + + #: opts-common.c:985 opts.c:547 + #, fuzzy, gcc-internal-format +@@ -16930,12 +16872,12 @@ msgstr "“%s”的实参应该是一个非负整数" + #: opts-common.c:1000 + #, fuzzy, gcc-internal-format + msgid "unrecognized argument in option %qs" +-msgstr "无法识别的命令行选项“%s”" ++msgstr "对 -mcpu= 选项的不可识别参数“%s”" + + #: opts-common.c:1016 + #, fuzzy, gcc-internal-format + msgid "valid arguments to %qs are: %s" +-msgstr "属性%qs的参数无效" ++msgstr "析构函数不能有参数" + + #: opts-global.c:102 + #, fuzzy, gcc-internal-format +@@ -16956,7 +16898,7 @@ msgstr "无法识别的命令行选项“%s”" + #: opts-global.c:375 + #, fuzzy, gcc-internal-format + msgid "unrecognized command line option %<-fdump-%s%>" +-msgstr "无法识别的命令行选项“%s”" ++msgstr "命令行选项文件“%s”不存在" + + #: opts-global.c:387 opts-global.c:395 + #, fuzzy, gcc-internal-format +@@ -16966,7 +16908,7 @@ msgstr "插件支持被禁用。配置时需带 -enable-plugin。" + #: opts-global.c:419 + #, fuzzy, gcc-internal-format + msgid "unrecognized register name %qs" +-msgstr "无法识别的寄存器名“%s”" ++msgstr "%<asm%>中出现未知的寄存器名%qs" + + #: opts.c:86 + #, gcc-internal-format +@@ -16981,17 +16923,17 @@ msgstr "%<-femit-struct-debug-detailed%>的参数%qs未知" + #: opts.c:129 + #, gcc-internal-format + msgid "%<-femit-struct-debug-detailed=dir:...%> must allow at least as much as %<-femit-struct-debug-detailed=ind:...%>" +-msgstr "%<-femit-struct-debug-detailed=dir:...%> 必须至少允许 %<-femit-struct-debug-detailed=ind:...%> 所允许的" ++msgstr "%<-femit-struct-debug-detailed=dir:...%>必须至少允许%<-femit-struct-debug-detailed=ind:...%>所允许的" + + #: opts.c:661 + #, fuzzy, gcc-internal-format + msgid "section anchors must be disabled when unit-at-a-time is disabled" +-msgstr "当 unit-at-a-time 被禁用时节中锚点也必须被禁用。" ++msgstr "当 unit-at-a-time 被禁止时节锚必须被禁止。" + + #: opts.c:665 + #, fuzzy, gcc-internal-format + msgid "toplevel reorder must be disabled when unit-at-a-time is disabled" +-msgstr "unit-at-a-time 被禁用时文件作用域重排序也必须被禁用" ++msgstr "当unit-at-a-time 被禁止时顶层重新排序必须禁止。" + + #: opts.c:687 + #, gcc-internal-format +@@ -17034,9 +16976,9 @@ msgid "unrecognized include_flags 0x%x passed to print_specific_help" + msgstr "传递给 print_specific_help 的 include_flags 0x%x 不可识别" + + #: opts.c:1363 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "--help argument %q.*s is ambiguous, please be more specific" +-msgstr "警告:--help 的参数 %.*s 有歧义,请改用更加明确的参数\n" ++msgstr "--help 的参数%q.*s有歧义,请改用更加明确的参数" + + #: opts.c:1372 + #, fuzzy, gcc-internal-format +@@ -17155,7 +17097,7 @@ msgid "inacessible plugin file %s expanded from short plugin name %s: %m" + msgstr "" + + #: plugin.c:173 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "" + "plugin %s was specified with different paths:\n" + "%s\n" +@@ -17191,7 +17133,7 @@ msgid "plugin %s registered a null callback function for event %s" + msgstr "插件 %s 为事件 %s 注册了一个空的回调函数" + + #: plugin.c:565 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "" + "cannot load plugin %s\n" + "%s" +@@ -17209,7 +17151,7 @@ msgstr "" + "%s" + + #: plugin.c:583 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "" + "cannot find %s in plugin %s\n" + "%s" +@@ -17218,14 +17160,14 @@ msgstr "" + "%3$s" + + #: plugin.c:591 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "fail to initialize plugin %s" + msgstr "无法初始化插件 %s" + + #: plugin.c:872 + #, gcc-internal-format + msgid "-iplugindir <dir> option not passed from the gcc driver" +-msgstr "" ++msgstr "-iplugindir <目录>选项未被传递给 gcc 驱动程序" + + #: profile.c:417 + #, fuzzy, gcc-internal-format +@@ -17313,19 +17255,19 @@ msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)" + msgstr "validate_value_data:[%u] 链(%s %u %i)中的非空 reg" + + #: reginfo.c:779 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t use %qs as a call-saved register" +-msgstr "无法将‘%s’用作 %s 寄存器" ++msgstr "无法将%qs用作调用者保存寄存器" + + #: reginfo.c:783 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t use %qs as a call-used register" +-msgstr "无法将‘%s’用作 %s 寄存器" ++msgstr "无法将%qs用作调用者使用寄存器" + + #: reginfo.c:795 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t use %qs as a fixed register" +-msgstr "无法将‘%s’用作 %s 寄存器" ++msgstr "无法将%qs用作调用者固定寄存器" + + #: reginfo.c:821 config/ia64/ia64.c:5622 config/ia64/ia64.c:5629 + #: config/pa/pa.c:440 config/pa/pa.c:447 config/sh/sh.c:8868 +@@ -17337,7 +17279,7 @@ msgstr "未知的寄存器名:%s" + #: reginfo.c:832 + #, fuzzy, gcc-internal-format + msgid "stack register used for global register variable" +-msgstr "寄存器用作两个全局寄存器变量" ++msgstr "调用篡改寄存器用作全局寄存器变量" + + #: reginfo.c:838 + #, gcc-internal-format +@@ -17612,7 +17554,7 @@ msgstr "填补结构以对齐%q+D" + #: stor-layout.c:1250 + #, fuzzy, gcc-internal-format + msgid "offset of packed bit-field %qD has changed in GCC 4.4" +-msgstr "紧实的位字段%qD的偏移在 GCC 4.4中已经有改变" ++msgstr "包装的位字段 %qD 的偏移在 GCC 4.4中已经有改变" + + #: stor-layout.c:1556 + #, gcc-internal-format +@@ -17830,9 +17772,9 @@ msgid "SSA name in freelist but still referenced" + msgstr "SSA 名在 freelist 中,却仍然被提领" + + #: tree-cfg.c:2605 tree-cfg.c:3735 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "INDIRECT_REF in gimple IL" +-msgstr "" ++msgstr "间接 gimple 调用中有静态调用链" + + #: tree-cfg.c:2613 + #, fuzzy, gcc-internal-format +@@ -17852,7 +17794,7 @@ msgstr "ASSERT_EXPR 具有一个总是假的条件" + #: tree-cfg.c:2638 + #, fuzzy, gcc-internal-format + msgid "MODIFY_EXPR not expected while having tuples" +-msgstr "当有元组的时候不应有 MODIFY_EXPR。" ++msgstr "当有元组的时候不期望 MODIFY_EXPR。" + + #: tree-cfg.c:2665 tree-ssa.c:830 + #, gcc-internal-format +@@ -18162,7 +18104,7 @@ msgstr "gimple 内存存储中右操作数无效" + #: tree-cfg.c:3792 + #, fuzzy, gcc-internal-format + msgid "invalid COND_EXPR in gimple assignment" +-msgstr "gimple 调用中左操作数无效" ++msgstr "在 gimple 条件非法比较代码" + + #: tree-cfg.c:3857 + #, gcc-internal-format +@@ -18185,12 +18127,12 @@ msgid "invalid operand to switch statement" + msgstr "开关语句操作数无效" + + #: tree-cfg.c:3930 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "invalid PHI result" + msgstr "无效的 PHI 结果" + + #: tree-cfg.c:3942 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "invalid PHI argument" + msgstr "无效的 PHI 实参" + +@@ -18929,7 +18871,7 @@ msgid "type is deprecated" + msgstr "不建议使用此类型" + + #: value-prof.c:375 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "dead histogram" + msgstr "不活跃直方图" + +@@ -19604,7 +19546,7 @@ msgstr "%q+D既有正常定义又有别名定义" + #: c-family/c-common.c:6716 + #, fuzzy, gcc-internal-format + msgid "weak %q+D cannot be defined %qE" +-msgstr "%qD不能被默认化" ++msgstr "自动变量%qE不能是%<threadprivate%>" + + #: c-family/c-common.c:6733 + #, fuzzy, gcc-internal-format +@@ -19938,7 +19880,7 @@ msgstr "令有名只读返回值%qD自减" + #: c-family/c-common.c:8622 + #, fuzzy, gcc-internal-format + msgid "read-only named return value %qD used as %<asm%>output" +-msgstr "只读变量%qD被用作%<asm%>的输出" ++msgstr "通过‘asm’输出向只读有名返回值%qD赋值" + + #: c-family/c-common.c:8627 + #, gcc-internal-format +@@ -19958,7 +19900,7 @@ msgstr "令函数%qD自减" + #: c-family/c-common.c:8630 + #, fuzzy, gcc-internal-format + msgid "function %qD used as %<asm%> output" +-msgstr "只读位置%qE用作%<asm%>的输出" ++msgstr "只读成员%qD用作%<asm%>的输出" + + #: c-family/c-common.c:8636 + #, gcc-internal-format +@@ -19993,7 +19935,7 @@ msgstr "asm 语句中需要左值" + #: c-family/c-common.c:8679 + #, fuzzy, gcc-internal-format + msgid "invalid type argument (have %qT)" +-msgstr "%<->%>参数类型无效(有%qT)" ++msgstr "%<->%>(有 %qT) 的非法类型参数" + + #: c-family/c-common.c:8683 + #, gcc-internal-format +@@ -20013,7 +19955,7 @@ msgstr "%<->%>参数类型无效(有%qT)" + #: c-family/c-common.c:8698 + #, fuzzy, gcc-internal-format + msgid "invalid type argument of implicit conversion (have %qT)" +-msgstr "隐式类型转换参数类型无效" ++msgstr "到类型%qT的转换无效,从类型%qT" + + #: c-family/c-common.c:8829 + #, gcc-internal-format +@@ -20163,7 +20105,7 @@ msgstr "函数不返回字符串类型" + #: c-family/c-format.c:177 + #, fuzzy, gcc-internal-format + msgid "format string argument is not a string type" +-msgstr "格式字符串实参不是字符串型" ++msgstr "%s 的实参在%L处类型无效" + + #: c-family/c-format.c:203 + #, gcc-internal-format +@@ -20449,7 +20391,7 @@ msgstr "%qs需要一个常量实参" + #: c-family/c-format.c:2530 + #, fuzzy, gcc-internal-format + msgid "%s %<%s%.*s%> expects argument of type %<%T%s%>, but argument %d has type %qT" +-msgstr "格式%q.*s需要类型%<%T%s%>,但实参 %d 的类型为%qT" ++msgstr "格式%q.*s需要类型%<%s%s%>,但实参 %d 的类型为%qT" + + #: c-family/c-format.c:2537 + #, fuzzy, gcc-internal-format +@@ -20535,12 +20477,12 @@ msgstr "程序中有游离的%<\\%o%>" + #: c-family/c-lex.c:586 + #, gcc-internal-format + msgid "this decimal constant is unsigned only in ISO C90" +-msgstr "这个十进制数常量仅 ISO C90 中是无符号的" ++msgstr "这个十进制数常量仅在 ISO C90 中是无符号的" + + #: c-family/c-lex.c:590 + #, gcc-internal-format + msgid "this decimal constant would be unsigned in ISO C90" +-msgstr "这个小数常量在 ISO C90 中将是无符号的" ++msgstr "这个十进制数常量在 ISO C90 中将是无符号的" + + #: c-family/c-lex.c:610 + #, gcc-internal-format +@@ -20635,7 +20577,7 @@ msgstr "使用了过时的选项 -I-,请改用 -iquote" + #: c-family/c-opts.c:486 + #, gcc-internal-format + msgid "-Werror=normalized=: set -Wnormalized=nfc" +-msgstr "" ++msgstr "-Werror=normalized=:设置 -Wnormalized=nfc" + + #: c-family/c-opts.c:500 + #, gcc-internal-format +@@ -21056,12 +20998,12 @@ msgstr "%<#pragma %s%>末尾有垃圾" + #: c-family/c-pragma.c:1119 + #, gcc-internal-format + msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++" +-msgstr "%<#pragma STDC FLOAT_CONST_DECIMAL64%> 不为 C++ 所支持" ++msgstr "%<#pragma STDC FLOAT_CONST_DECIMAL64%>不为 C++ 所支持" + + #: c-family/c-pragma.c:1128 + #, gcc-internal-format + msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target" +-msgstr "%<#pragma STDC FLOAT_CONST_DECIMAL64%> 在此目标机上不受支持" ++msgstr "%<#pragma STDC FLOAT_CONST_DECIMAL64%>在此目标机上不受支持" + + #: c-family/c-pragma.c:1134 + #, gcc-internal-format +@@ -21071,7 +21013,7 @@ msgstr "ISO C 不支持%<#pragma STDC FLOAT_CONST_DECIMAL64%>" + #: c-family/c-semantics.c:167 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "wrong type argument to %s" +-msgstr "不能对该类型的参数求绝对值" ++msgstr "不能对该类型的实参求绝对值" + + #: config/darwin-c.c:85 + #, gcc-internal-format +@@ -21190,24 +21132,24 @@ msgid "built-in function %qD takes one argument only" + msgstr "内建函数%q+D未被声明为函数" + + #: config/darwin.c:3197 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "CFString literal is missing" +-msgstr "‘-Xlinker’缺少参数" ++msgstr "缺少 CFString 字面值" + + #: config/darwin.c:3208 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "CFString literal expression is not a string constant" +-msgstr "整型表达式%qE不是常量" ++msgstr "CFString 字面表达式不是一个字符串常量" + + #: config/darwin.c:3231 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "%s in CFString literal" +-msgstr "%H需要字面字符串" ++msgstr "CFString 字面值里有 %s" + + #: config/host-darwin.c:61 + #, fuzzy, gcc-internal-format + msgid "couldn%'t unmap pch_address_space: %m" +-msgstr "无法取消映射 pch_address_space: %m" ++msgstr "无法 unmap pch_address_space: %m" + + #: config/sol2-c.c:92 config/sol2-c.c:108 + #, gcc-internal-format +@@ -21399,9 +21341,9 @@ msgid "bad value (%s) for %s switch" + msgstr "开关%2$s的参数%1$s不正确" + + #: config/arm/arm.c:1468 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "switch -mcpu=%s conflicts with -march=%s switch" +-msgstr "开关 -mcpu=%s 与 -march= 开关冲突" ++msgstr "开关 -mcpu=%s 与 -march=%s 冲突" + + #: config/arm/arm.c:1593 + #, gcc-internal-format, gfc-internal-format +@@ -21579,9 +21521,9 @@ msgid "PCS variant" + msgstr "PCS 变动" + + #: config/arm/arm.c:4076 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "Thumb-1 hard-float VFP ABI" +-msgstr "" ++msgstr "-mfloat-abi=hard 和 VFP" + + #: config/arm/arm.c:4784 config/arm/arm.c:4802 config/avr/avr.c:4936 + #: config/avr/avr.c:4952 config/bfin/bfin.c:5562 config/bfin/bfin.c:5623 +@@ -21647,12 +21589,12 @@ msgstr "经初始化的变量%q+D被标记为 dllimport" + #: config/avr/avr.c:249 + #, fuzzy, gcc-internal-format + msgid "unrecognized argument to -mmcu= option: %qs" +-msgstr "-mcpu= 选项参数‘%s’不可识别" ++msgstr "警告:--help= 选项的参数不可识别:%.*s\n" + + #: config/avr/avr.c:250 + #, gcc-internal-format + msgid "See --target-help for supported MCUs" +-msgstr "" ++msgstr "请使用 --target-help 查看支持的 MCU" + + #: config/avr/avr.c:497 + #, gcc-internal-format +@@ -21836,12 +21778,12 @@ msgid "that particular -g option is invalid with -maout and -melinux" + msgstr "此 -g 选项与 -maout 和 -melinux 并用时无效" + + #: config/cris/cris.c:2732 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "unknown src" + msgstr "未知源" + + #: config/cris/cris.c:2793 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "unknown dest" + msgstr "未知目标" + +@@ -21990,7 +21932,7 @@ msgid "-mn is used without -mh or -ms" + msgstr "-mn 未与 -mh 或 -ms 一起使用" + + #: config/i386/host-cygwin.c:62 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t extend PCH file: %m" + msgstr "无法扩展 PCH 文件:%m" + +@@ -22005,9 +21947,9 @@ msgid "bad value (%s) for %stune=%s %s" + msgstr "%2$stune=%3$s%4$s所带参数(%1$s)不正确" + + #: config/i386/i386.c:3517 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead as appropriate" +-msgstr "不建议使用%stune=x86-64%s。请视情况改用%stune=k8%s或%stune=generic%s等。" ++msgstr "不建议使用%stune=x86-64%s;请视情况改用%stune=k8%s或%stune=generic%s" + + #: config/i386/i386.c:3563 + #, gcc-internal-format, gfc-internal-format +@@ -22115,14 +22057,14 @@ msgid "%srtd%s is ignored in 64bit mode" + msgstr "%srtd%s 在 64 位模式下被忽略" + + #: config/i386/i386.c:4038 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "%spreferred-stack-boundary%s is not supported for this target" +-msgstr "-fprefetch-loop-arrays 在此目标机上不受支持" ++msgstr "%spreferred-stack-boundary%s 在此目标机上不被支持" + + #: config/i386/i386.c:4041 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "%spreferred-stack-boundary=%d%s is not between %d and %d" +-msgstr "%spreferred-stack-boundary=%d%s 不在 %d 和 12 之间" ++msgstr "%spreferred-stack-boundary=%d%s 不在 %d 和 %d 之间" + + #: config/i386/i386.c:4061 + #, gcc-internal-format, gfc-internal-format +@@ -22167,7 +22109,7 @@ msgstr "堆栈探针目前需要框架指针或 %saccumulate-outgoing-args%s 来 + #: config/i386/i386.c:4247 + #, gcc-internal-format + msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic" +-msgstr "" ++msgstr "-mfentry 在 32 位下不能和 -pic 同时使用" + + #: config/i386/i386.c:4254 + #, fuzzy, gcc-internal-format +@@ -22192,7 +22134,7 @@ msgstr "fastcall 和 regparm 属性互不兼容" + #: config/i386/i386.c:5309 + #, fuzzy, gcc-internal-format + msgid "regparam and thiscall attributes are not compatible" +-msgstr "fastcall 和 stdcall 属性互不兼容" ++msgstr "fastcall 和 regparm 属性互不兼容" + + #: config/i386/i386.c:5316 config/i386/i386.c:29385 + #, gcc-internal-format +@@ -22215,9 +22157,9 @@ msgid "fastcall and stdcall attributes are not compatible" + msgstr "fastcall 和 stdcall 属性互不兼容" + + #: config/i386/i386.c:5359 config/i386/i386.c:5408 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "fastcall and thiscall attributes are not compatible" +-msgstr "fastcall 和 stdcall 属性互不兼容" ++msgstr "fastcall 和 thiscall 属性互不兼容" + + #: config/i386/i386.c:5369 config/i386/i386.c:5386 + #, gcc-internal-format +@@ -22230,27 +22172,27 @@ msgid "stdcall and fastcall attributes are not compatible" + msgstr "stdcall 和 fastcall 属性互不兼容" + + #: config/i386/i386.c:5377 config/i386/i386.c:5404 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "stdcall and thiscall attributes are not compatible" +-msgstr "stdcall 和 fastcall 属性互不兼容" ++msgstr "stdcall 和 thiscall 属性互不兼容" + + #: config/i386/i386.c:5394 config/i386/i386.c:5412 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "cdecl and thiscall attributes are not compatible" +-msgstr "stdcall 和 fastcall 属性互不兼容" ++msgstr "cdecl 和 thiscall 属性互不兼容" + + #: config/i386/i386.c:5400 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qE attribute is used for none class-method" +-msgstr "%qE属性在不是类的类型上被忽略" ++msgstr "%qE属性用于非类方法" + + #: config/i386/i386.c:5554 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled" + msgstr "带属性 sseregparm 调用%qD却没有启用 SSE/SSE2" + + #: config/i386/i386.c:5557 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled" + msgstr "带属性 sseregparm 调用%qT却没有启用 SSE/SSE2" + +@@ -22270,19 +22212,19 @@ msgid "AVX vector argument without AVX enabled changes the ABI" + msgstr "没有启用 AVX,却出现了 AVX 向量实参,这改变了 ABI" + + #: config/i386/i386.c:6231 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "the ABI of passing struct with a flexible array member has changed in GCC 4.4" + msgstr "在 GCC 4.4 中传递带有一个可变数组成员的结构的 ABI 有了改变" + + #: config/i386/i386.c:6347 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "the ABI of passing union with long double has changed in GCC 4.4" + msgstr "在 GCC 4.4 中传递有 long double 的联合的 ABI 有改变" + + #: config/i386/i386.c:6462 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "the ABI of passing structure with complex float member has changed in GCC 4.4" +-msgstr "在 GCC 4.4 中传递带有浮点复数成员结构的 ABI 有了改变" ++msgstr "在 GCC 4.4 中传递带有复数浮点成员结构的 ABI 有了改变" + + #: config/i386/i386.c:6608 + #, gcc-internal-format +@@ -22327,7 +22269,7 @@ msgstr "没有启用 MMX却返回 MMX 向量,这改变了 ABI" + #: config/i386/i386.c:9163 + #, gcc-internal-format + msgid "%<-fsplit-stack%> currently only supported on GNU/Linux" +-msgstr "" ++msgstr "%<-fsplit-stack%>只在 GNU/Linux 下被支持" + + #: config/i386/i386.c:9169 + #, gcc-internal-format +@@ -22347,7 +22289,7 @@ msgstr "ms_hook_prologue 与嵌套函数不兼容" + #: config/i386/i386.c:11312 + #, gcc-internal-format + msgid "-fsplit-stack does not support 2 register parameters for a nested function" +-msgstr "" ++msgstr "-fsplit-stack 不支持在嵌套函数中使用两个寄存器参数" + + #. FIXME: We could make this work by pushing a register + #. around the addition and comparison. +@@ -22639,12 +22581,12 @@ msgstr "#pragma GCC memregs 需要 [0..16] 范围内的数" + #: config/m32c/m32c-pragma.c:111 + #, fuzzy, gcc-internal-format + msgid "junk at end of #pragma ADDRESS" +-msgstr "#pragma %s 末尾有垃圾字符" ++msgstr "%<#pragma pack%>末尾有垃圾字符" + + #: config/m32c/m32c-pragma.c:116 + #, fuzzy, gcc-internal-format + msgid "malformed #pragma ADDRESS variable address" +-msgstr "#pragma GCC visibility push 格式错误" ++msgstr "返回了局部变量的%q+D的地址" + + #: config/m32c/m32c.c:441 + #, gcc-internal-format, gfc-internal-format +@@ -23020,7 +22962,7 @@ msgstr "" + #: config/microblaze/microblaze.c:1311 + #, fuzzy, gcc-internal-format + msgid "%qs is an invalid argument to -mcpu=" +-msgstr "gimple 调用中参数无效" ++msgstr "-fdebug-prefix-map 的参数%qs无效" + + #: config/microblaze/microblaze.c:1360 + #, gcc-internal-format +@@ -23140,12 +23082,12 @@ msgstr "不支持的组合:%s" + #: config/mips/mips.c:15618 + #, gcc-internal-format + msgid "%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the mfhc1 and mthc1 instructions" +-msgstr "%<-mgp32%> 和 %<-mfp64%>只有当目标机支持 mfhc1 和 mthc1 指令时才能一起使用" ++msgstr "%<-mgp32%>和%<-mfp64%>只有当目标机支持 mfhc1 和 mthc1 指令时才能一起使用" + + #: config/mips/mips.c:15621 + #, gcc-internal-format + msgid "%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI" +-msgstr "%<-mgp32%> 和 %<-mfp64%>只有当使用 o32 ABI 时才能一起使用" ++msgstr "%<-mgp32%>和%<-mfp64%>只有当使用 o32 ABI 时才能一起使用" + + #: config/mips/mips.c:15675 + #, gcc-internal-format +@@ -23155,7 +23097,7 @@ msgstr "%qs架构不支持 Branch-Likely 指令" + #: config/mips/mips.c:15715 + #, gcc-internal-format + msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>" +-msgstr "%<-mno-gpopt%> 需要 %<-mexplicit-relocs%>" ++msgstr "%<-mno-gpopt%>需要%<-mexplicit-relocs%>" + + #: config/mips/mips.c:15723 config/mips/mips.c:15726 + #, gcc-internal-format +@@ -23251,7 +23193,7 @@ msgstr "MMIX 内部错误:%s 不是一个可移位的整数" + #: config/mn10300/mn10300.c:154 + #, gcc-internal-format + msgid "-mtune= expects mn10300, am33, am33-2, or am34" +-msgstr "" ++msgstr "-mtune= 需要 mn10300、am33、am33-2 或 am34" + + #: config/pa/pa.c:563 + #, gcc-internal-format +@@ -23291,27 +23233,27 @@ msgstr "指定了无效的 AE 类型(%s)\n" + #: config/picochip/picochip.c:461 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "invalid mul type specified (%s) - expected mac, mul or none" +-msgstr "指定了无效的 mul 类型(%s) - 需要 mac、mul 或 none" ++msgstr "指定了无效的 mul 类型(%s) - 期待的是 mac、mul 或 none" + + #: config/picochip/picochip.c:756 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "unexpected mode %s encountered in picochip_emit_save_register" +-msgstr "picochip_emit_save_register 遇到非预期的模式 %s\n" ++msgstr "在 picochip_emit_save_register 中遇到意外的方式 %s\n" + + #: config/picochip/picochip.c:923 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "defaulting to stack for %s register creation" +-msgstr "默认在堆栈上创建 %s 寄存器\n" ++msgstr "对于 %s 寄存器创建默认为堆栈\n" + + #: config/picochip/picochip.c:1607 + #, fuzzy, gcc-internal-format + msgid "LCFI labels have already been deferred" +-msgstr "LCFI 标号已经被推迟。" ++msgstr "LCFI 标记已经被推迟。" + + #: config/picochip/picochip.c:1670 + #, fuzzy, gcc-internal-format + msgid "LM label has already been deferred" +-msgstr "LM 标号已经被推迟。" ++msgstr "LM 标记已经被推迟。" + + #: config/picochip/picochip.c:1680 + #, gcc-internal-format +@@ -23326,22 +23268,22 @@ msgstr "picochip_asm_output_opcode - 在 VLIW 包 %s 中找到多行\n" + #: config/picochip/picochip.c:2065 + #, fuzzy, gcc-internal-format + msgid "picochip_asm_output_opcode - can%'t output unknown operator %c" +-msgstr "picochip_asm_output_opcode - 无法输出未知的运算符 %c\n" ++msgstr "picochip_asm_output_opcode - 无法输出未知的操作符 %c\n" + + #: config/picochip/picochip.c:2316 config/picochip/picochip.c:2376 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%s: at least one operand can%'t be handled" +-msgstr "%s:至少有一个操作数不能被处理" ++msgstr "%s: 至少一个操作数不能被处理" + + #: config/picochip/picochip.c:2457 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "unknown short branch in %s (type %d)" +-msgstr "%s 中的短跳转未知(类型 %d)\n" ++msgstr "%s 中的短跳转未知(类型 %d)" + + #: config/picochip/picochip.c:2494 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "unknown long branch in %s (type %d)" +-msgstr "%s 中的长跳转未知(类型 %d)\n" ++msgstr "%s 中的长跳转未知(类型 %d)" + + #: config/picochip/picochip.c:2534 config/picochip/picochip.c:2602 + #, gcc-internal-format, gfc-internal-format +@@ -23354,9 +23296,9 @@ msgid "GET uses port array index %d, which is out of range [%d..%d)" + msgstr "GET 使用端口数组索引 %d,而该索引在范围 [%d..%d)之外" + + #: config/picochip/picochip.c:3439 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "too many ALU instructions emitted (%d)" +-msgstr "生成了太多的 ALU 指令(%d 条)\n" ++msgstr "生成了太多的 ALU 指令(%d 条)" + + #: config/picochip/picochip.c:4071 config/picochip/picochip.c:4164 + #, gcc-internal-format, gfc-internal-format +@@ -23476,17 +23418,17 @@ msgstr "对 AltiVec 内建函数来说无效的参数组合" + #: config/rs6000/rs6000.c:2524 + #, gcc-internal-format + msgid "-mrecip requires -ffinite-math or -ffast-math" +-msgstr "" ++msgstr "-mrecip 需要 -ffinite-math 或 -ffast-math" + + #: config/rs6000/rs6000.c:2526 + #, gcc-internal-format + msgid "-mrecip requires -fno-trapping-math or -ffast-math" +-msgstr "" ++msgstr "-mrecip 需要 -fno-trapping-math 或 -ffast-math" + + #: config/rs6000/rs6000.c:2528 + #, gcc-internal-format + msgid "-mrecip requires -freciprocal-math or -ffast-math" +-msgstr "" ++msgstr "-mrecip 需要 -freciprocal-math 或 -ffast-math" + + #: config/rs6000/rs6000.c:2622 + #, gcc-internal-format +@@ -23499,9 +23441,9 @@ msgid "AltiVec not supported in this target" + msgstr "AltiVec 在此目标机上不受支持" + + #: config/rs6000/rs6000.c:2749 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "SPE not supported in this target" +-msgstr "Spe 在此目标机上不受支持" ++msgstr "SPE 在此目标机上不受支持" + + #: config/rs6000/rs6000.c:2776 + #, gcc-internal-format +@@ -23521,37 +23463,37 @@ msgstr "%2$sveclibabi=%3$s %4$s向量库 ABI 类型(%1$s)未知" + #: config/rs6000/rs6000.c:2901 + #, gcc-internal-format + msgid "target attribute or pragma changes long double size" +-msgstr "" ++msgstr "目标属性或 pragma 改变了 long double 的大小" + + #: config/rs6000/rs6000.c:2922 config/rs6000/rs6000.c:2937 + #, gcc-internal-format + msgid "target attribute or pragma changes AltiVec ABI" +-msgstr "" ++msgstr "目标属性或 pragma 改变了 AltiVec ABI" + + #: config/rs6000/rs6000.c:2954 + #, gcc-internal-format + msgid "target attribute or pragma changes darwin64 ABI" +-msgstr "" ++msgstr "目标属性或 pragma 改变了 darwin64 ABI" + + #: config/rs6000/rs6000.c:2995 + #, gcc-internal-format + msgid "target attribute or pragma changes SPE ABI" +-msgstr "" ++msgstr "目标属性或 pragma 改变了 SPE ABI" + + #: config/rs6000/rs6000.c:3317 + #, gcc-internal-format + msgid "target attribute or pragma changes single precision floating point" +-msgstr "" ++msgstr "目标属性或 pragma 改变了单精度浮点数" + + #: config/rs6000/rs6000.c:3320 + #, gcc-internal-format + msgid "target attribute or pragma changes double precision floating point" +-msgstr "" ++msgstr "目标属性或 pragma 改变了双精度浮点数" + + #: config/rs6000/rs6000.c:3367 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "unknown option for -mrecip=%s" +-msgstr "指定了未知的 -m%s= 选项:‘%s’" ++msgstr "L%d 缓存延迟未知,对 %s 来说" + + #: config/rs6000/rs6000.c:3834 + #, gcc-internal-format, gfc-internal-format +@@ -23579,22 +23521,22 @@ msgid "not configured for ABI: '%s'" + msgstr "没有为此 ABI 配置:‘%s’" + + #: config/rs6000/rs6000.c:4472 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "using darwin64 ABI" + msgstr "使用 darwin64 ABI" + + #: config/rs6000/rs6000.c:4477 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "using old darwin ABI" + msgstr "使用旧式的 Darwin ABI" + + #: config/rs6000/rs6000.c:4484 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "using IBM extended precision long double" + msgstr "使用 IBM 扩展精度 long double" + + #: config/rs6000/rs6000.c:4490 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "using IEEE extended precision long double" + msgstr "使用 IEEE 扩展精度 long double" + +@@ -23604,14 +23546,14 @@ msgid "unknown ABI specified: '%s'" + msgstr "指定了未知的 ABI:‘%s’" + + #: config/rs6000/rs6000.c:4504 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "bad value (%s) for -mcpu" +-msgstr "-mcpu 开关的值%qs错误" ++msgstr "-mcpu 开关的值 %s 错误" + + #: config/rs6000/rs6000.c:4511 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "bad value (%s) for -mtune" +-msgstr "%2$stune=%3$s%4$s所带参数(%1$s)不正确" ++msgstr "-mtune 开关的值 %s 错误" + + #: config/rs6000/rs6000.c:4522 + #, gcc-internal-format +@@ -23766,7 +23708,7 @@ msgstr "栈帧太大" + #: config/rs6000/rs6000.c:20151 + #, fuzzy, gcc-internal-format + msgid "out-of-line save/restore routines not supported on Darwin" +-msgstr "Darwin 不支持不恰当的存储/恢复例程" ++msgstr "Darwin 不支持不恰当的存储/恢复进程" + + #: config/rs6000/rs6000.c:23023 + #, gcc-internal-format +@@ -23826,7 +23768,7 @@ msgstr "生成条件微代码指令 %s\t[%s] #%d" + #: config/rs6000/rs6000.c:27767 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "invalid cpu \"%s\" for %s\"%s\"%s" +-msgstr "对‘%%%c’的使用无效" ++msgstr "代码‘%c’的操作数无效" + + #: config/rs6000/rs6000.c:27770 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -23977,9 +23919,9 @@ msgid "unreocgnized control register number: %d - using 'psw'" + msgstr "无法识别的控制寄存器号:%d - 使用‘psw’" + + #: config/rx/rx.c:2106 +-#, gcc-internal-format, gfc-internal-format ++#, fuzzy, gcc-internal-format, gfc-internal-format + msgid "__builtin_rx_%s takes 'C', 'Z', 'S', 'O', 'I', or 'U'" +-msgstr "" ++msgstr "%q+D只带零或两个参数" + + #: config/rx/rx.c:2108 + #, gcc-internal-format +@@ -23997,14 +23939,14 @@ msgid "unrecognized argument '%s' to -mcpu= option" + msgstr "-mcpu= 选项参数‘%s’不可识别" + + #: config/rx/rx.c:2294 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "the RX200 cpu does not have FPU hardware" + msgstr "RX200 CPU 没有 FPU 硬件" + + #: config/rx/rx.c:2327 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "RX FPU instructions do not support NaNs and infinities" +-msgstr "RX FPU 指令不遵循 IEEE" ++msgstr "RX FPU 指令不支持 NaN 和无限" + + #: config/s390/s390.c:1602 + #, gcc-internal-format +@@ -24027,12 +23969,12 @@ msgid "64-bit ABI not supported in ESA/390 mode" + msgstr "64-bit ABI 在 ESA/390 模式下不受支持" + + #: config/s390/s390.c:1669 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "hardware decimal floating point instructions not available on %s" + msgstr "硬件十进制浮点指令在 %s 上不可用" + + #: config/s390/s390.c:1672 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "hardware decimal floating point instructions not available in ESA/390 mode" + msgstr "硬件十进制浮点指令在 ESA/390 模式下不可用" + +@@ -24225,12 +24167,12 @@ msgstr "形参表不匹配 %s() 的有效签名" + #: config/spu/spu.c:548 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "bad value (%s) for -march= switch" +-msgstr "-mcmodel= 值(%s)不正确" ++msgstr "-mtune= 所带参数%<%s%>不正确" + + #: config/spu/spu.c:559 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "bad value (%s) for -mtune= switch" +-msgstr "-mtune 开关的值%qs错误" ++msgstr "-mtune= 所带参数%<%s%>不正确" + + #: config/spu/spu.c:5388 config/spu/spu.c:5391 + #, gcc-internal-format +@@ -24450,7 +24392,7 @@ msgstr "%qs属性只能用于带可变参数函数" + #: ada/gcc-interface/utils.c:5247 + #, fuzzy, gcc-internal-format + msgid "%qE attribute has no effect" +-msgstr "%qE属性被忽略" ++msgstr "不建议使用。此开关不起作用。" + + #: ada/gcc-interface/utils.c:5359 + #, gcc-internal-format +@@ -24479,45 +24421,45 @@ msgid " no known conversion for argument %d from %qT to %qT" + msgstr "以从%qT转换为%qT" + + #: cp/call.c:2986 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%s%D(%T, %T, %T) <built-in>" +-msgstr "%s %D(%T, %T, %T) <内建>" ++msgstr "%s%D(%T, %T, %T) <内建>" + + #: cp/call.c:2991 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%s%D(%T, %T) <built-in>" +-msgstr "%s %D(%T, %T) <内建>" ++msgstr "%s%D(%T, %T) <内建>" + + #: cp/call.c:2995 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%s%D(%T) <built-in>" +-msgstr "%s %D(%T) <内建>" ++msgstr "%s%D(%T) <内建>" + + #: cp/call.c:2999 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%s%T <conversion>" +-msgstr "%s %T <转换>" ++msgstr "%s%T <转换>" + + #: cp/call.c:3001 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%s%#D <near match>" +-msgstr "%s %+#D <就近匹配>" ++msgstr "%s%#D <就近匹配>" + + #: cp/call.c:3003 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%s%#D <deleted>" +-msgstr "%s %+#D <已删除>" ++msgstr "%s%#D <删除的>" + + #: cp/call.c:3005 + #, gcc-internal-format + msgid "%s%#D" +-msgstr "" ++msgstr "%s%#D" + + #: cp/call.c:3015 + #, gcc-internal-format, gfc-internal-format + msgid " candidate expects %d argument, %d provided" + msgid_plural " candidate expects %d arguments, %d provided" +-msgstr[0] "" ++msgstr[0] " 备选需要 %d 实参,但提供了 %d 个" + + #: cp/call.c:3349 + #, gcc-internal-format +@@ -25086,7 +25028,7 @@ msgstr "有拷贝赋值运算符的成员%q+#D不能用在联合中" + #: cp/class.c:2936 + #, fuzzy, gcc-internal-format + msgid "unrestricted unions only available with -std=c++0x or -std=gnu++0x" +-msgstr "带作用域的枚举只在 -std=c++0x 或 -std=gnu++0x 下可用" ++msgstr "可变参数模板只在 -std=c++0x 或 -std=gnu++0x 下可用" + + #: cp/class.c:2970 + #, gcc-internal-format +@@ -25161,7 +25103,7 @@ msgstr "为非虚方法%q+D指定了初始值设定项" + #: cp/class.c:4568 + #, fuzzy, gcc-internal-format + msgid "enclosing class of %q+D is not a literal type" +-msgstr "函数%2$qD的返回值类型%1$qT不是一个字面类型" ++msgstr "%3$L处 CLASS 变量‘%2$s’的类型‘%1$s’不能被扩展" + + #: cp/class.c:4677 + #, gcc-internal-format +@@ -25306,7 +25248,7 @@ msgid "%qE implicitly determined as %<firstprivate%> has reference type" + msgstr "%qE隐式地被确定,因为%<firstprivate%>有引用类型" + + #: cp/cvt.c:90 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t convert from incomplete type %qT to %qT" + msgstr "无法从不完全类型%qT转换到%qT" + +@@ -25448,7 +25390,7 @@ msgstr "" + #: cp/cvt.c:1029 + #, gcc-internal-format + msgid "implicit dereference will not access object of type %qT in statement" +-msgstr "" ++msgstr "隐式提领不会访问语句中类型为%qT的对象" + + #: cp/cvt.c:1033 + #, gcc-internal-format +@@ -25611,14 +25553,14 @@ msgid "left operand of comma operator has no effect" + msgstr "逗号表达式的左操作数不起作用" + + #: cp/cvt.c:1300 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "statement has no effect" + msgstr "语句不起作用" + + #: cp/cvt.c:1304 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "for increment expression has no effect" +-msgstr "逗号表达式的左操作数不起作用" ++msgstr "for 循环増量表达式不起作用" + + #: cp/cvt.c:1453 + #, gcc-internal-format +@@ -25661,14 +25603,14 @@ msgid "from previous declaration %q+F" + msgstr "从先前的声明%q+F" + + #: cp/decl.c:1161 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "redeclaration %qD differs in %<constexpr%>" +-msgstr "%qT重声明为非模板" ++msgstr "对%qD的重声明在%<constexpr%>中" + + #: cp/decl.c:1162 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "from previous declaration %q+D" +-msgstr "从先前的声明%q+F" ++msgstr "与先前的声明%q+D不同" + + #: cp/decl.c:1218 + #, gcc-internal-format +@@ -26085,7 +26027,7 @@ msgstr "只能为对象和函数指定类型限定" + #: cp/decl.c:4083 + #, gcc-internal-format + msgid "%<typedef%> was ignored in this declaration" +-msgstr "此声明中的 %<typedef%> 被忽略" ++msgstr "此声明中的%<typedef%>被忽略" + + #: cp/decl.c:4085 + #, fuzzy, gcc-internal-format +@@ -26217,14 +26159,14 @@ msgstr "大小为 0 的数组%qD" + #. Don't talk about array types here, since we took care of that + #. message in grokdeclarator. + #: cp/decl.c:4715 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "storage size of %qD isn%'t known" +-msgstr "%q+D的存储大小未知" ++msgstr "%qD的存储大小未知" + + #: cp/decl.c:4738 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "storage size of %qD isn%'t constant" +-msgstr "%q+D的存储大小不是常量" ++msgstr "%qD的存储大小不是常量" + + #: cp/decl.c:4784 + #, fuzzy, gcc-internal-format +@@ -26244,7 +26186,7 @@ msgstr "未初始化的常量%qD" + #: cp/decl.c:4825 + #, fuzzy, gcc-internal-format + msgid "%q#T has no user-provided default constructor" +-msgstr "且%qT没有模板构造函数" ++msgstr "类型%qE没有可以调用的默认构造函数" + + #: cp/decl.c:4829 + #, gcc-internal-format +@@ -26383,14 +26325,14 @@ msgid "constructor for alien class %qT cannot be a member" + msgstr "其他类%qT的构造函数不能用作成员" + + #: cp/decl.c:6722 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD declared as a %<virtual%> variable" +-msgstr "%qD声明为%<virtual%>%s" ++msgstr "%qD声明为%<virtual%>变量" + + #: cp/decl.c:6724 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD declared as an %<inline%> variable" +-msgstr "%qD声明为%<inline%>%s" ++msgstr "%qD声明为%<inline%>变量" + + #: cp/decl.c:6726 + #, fuzzy, gcc-internal-format +@@ -26398,14 +26340,14 @@ msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in variable + msgstr "为%qD指定的%<const%>和%<volatile%>在 %s 声明中无效" + + #: cp/decl.c:6731 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD declared as a %<virtual%> parameter" +-msgstr "%qD声明为%<virtual%>%s" ++msgstr "%qD声明为%<virtual%>参数" + + #: cp/decl.c:6733 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD declared as an %<inline%> parameter" +-msgstr "%qD声明为%<inline%>%s" ++msgstr "%qD声明为%<inline%>参数" + + #: cp/decl.c:6735 + #, fuzzy, gcc-internal-format +@@ -26413,14 +26355,14 @@ msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in paramete + msgstr "为%qD指定的%<const%>和%<volatile%>在 %s 声明中无效" + + #: cp/decl.c:6740 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD declared as a %<virtual%> type" +-msgstr "%qD声明为%<virtual%>%s" ++msgstr "%qD声明为%<virtual%>类型" + + #: cp/decl.c:6742 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD declared as an %<inline%> type" +-msgstr "%qD声明为%<inline%>%s" ++msgstr "%qD声明为%<inline%>类型" + + #: cp/decl.c:6744 + #, fuzzy, gcc-internal-format +@@ -26428,14 +26370,14 @@ msgid "%<const%> and %<volatile%> function specifiers on %qD invalid in type dec + msgstr "为%qD指定的%<const%>和%<volatile%>在 %s 声明中无效" + + #: cp/decl.c:6749 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD declared as a %<virtual%> field" +-msgstr "%qD声明为%<virtual%>%s" ++msgstr "%qD声明为%<virtual%>字段" + + #: cp/decl.c:6751 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD declared as an %<inline%> field" +-msgstr "%qD声明为%<inline%>%s" ++msgstr "%qD声明为%<inline%>字段" + + #: cp/decl.c:6753 + #, fuzzy, gcc-internal-format +@@ -26783,9 +26725,9 @@ msgid "%<long long%> invalid for %qs" + msgstr "%<long long%>对%qs无效" + + #: cp/decl.c:8331 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<__int128%> invalid for %qs" +-msgstr "%<long%>对%qs无效" ++msgstr "%<__int128%>对%qs无效" + + #: cp/decl.c:8333 + #, gcc-internal-format +@@ -26803,9 +26745,9 @@ msgid "%<long%> or %<short%> invalid for %qs" + msgstr "%<long%>或%<short%>对%qs无效" + + #: cp/decl.c:8339 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs" +-msgstr "%<long%>或%<short%>对%qs无效" ++msgstr "%<long%>、%<int%>、%<short%>或%<char%>对%qs无效" + + #: cp/decl.c:8341 + #, gcc-internal-format +@@ -26828,14 +26770,14 @@ msgid "long, short, signed or unsigned used invalidly for %qs" + msgstr "为%qs使用 long、short、signed 或 unsigned 无效" + + #: cp/decl.c:8366 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<__int128%> is not supported by this target" +-msgstr "__builtin_saveregs 不为此目标所支持" ++msgstr "%<__int128%>不为此目标所支持" + + #: cp/decl.c:8372 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "ISO C++ does not support %<__int128%> for %qs" +-msgstr "ISO C++ 1998 不支持%<long long%>" ++msgstr "ISO C++ 对%qs不支持%<__int128%>" + + #: cp/decl.c:8442 + #, gcc-internal-format +@@ -26963,7 +26905,7 @@ msgid "constructors cannot be declared virtual" + msgstr "构造函数不能被声明为虚函数" + + #: cp/decl.c:8818 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t initialize friend function %qs" + msgstr "无法初始化友元函数%qs" + +@@ -27184,7 +27126,7 @@ msgstr "错误地使用了%<::%>" + #: cp/decl.c:9570 + #, fuzzy, gcc-internal-format + msgid "declaration of function %qD in invalid context" +-msgstr "C 函数%q#D的声明" ++msgstr "%qD的声明中类名无效" + + #: cp/decl.c:9579 + #, gcc-internal-format +@@ -27239,7 +27181,7 @@ msgstr "%qE既不是函数也不是成员函数;不能声明为友元" + #: cp/decl.c:9743 + #, fuzzy, gcc-internal-format + msgid "non-static data member initializers" +-msgstr "%qT没有名为%qD的非静态数据成员" ++msgstr "对非静态数据成员%q+D的无效使用" + + #: cp/decl.c:9747 + #, gcc-internal-format +@@ -27637,9 +27579,9 @@ msgid "previous definition here" + msgstr "先前的定义在这里" + + #: cp/decl.c:11552 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "underlying type mismatch in enum %q#T" +-msgstr "" ++msgstr "条件表达式中类型不匹配" + + #: cp/decl.c:11564 + #, gcc-internal-format +@@ -27778,7 +27720,7 @@ msgstr "Java 方法%qD有非 Java 类型形参%qT" + #: cp/decl2.c:628 + #, fuzzy, gcc-internal-format + msgid "template parameter lists provided don%'t match the template parameters of %qD" +-msgstr "提供的模板参数列表与%qD的模板参数不符" ++msgstr "提供的模板参数列表与 %qD 的模板不符" + + #: cp/decl2.c:696 + #, gcc-internal-format +@@ -27947,9 +27889,9 @@ msgid "converting lambda which uses %<...%> to function pointer" + msgstr "将使用了%<...%>的 Lambda 转换为函数指针" + + #: cp/decl2.c:4167 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "use of deleted function %qD" +-msgstr "函数%q+D已删除" ++msgstr "使用了被删除的函数%qD" + + #: cp/error.c:3108 + #, gcc-internal-format +@@ -28208,9 +28150,9 @@ msgid "uninitialized reference member %qD" + msgstr "未初始化的引用成员%qD" + + #: cp/init.c:582 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "uninitialized member %qD in %<constexpr%> constructor" +-msgstr "未初始化的成员%qD具有%<const%>类型%qT" ++msgstr "成员%qD在%<constexpr%>构造函数里未初始化" + + #: cp/init.c:739 + #, gcc-internal-format +@@ -28258,9 +28200,9 @@ msgid "base class %q#T should be explicitly initialized in the copy constructor" + msgstr "基类%q#T应该在复制构造函数中显式地初始化" + + #: cp/init.c:941 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "uninitialized base %qT in %<constexpr%> constructor" +-msgstr "未初始化的成员%qD具有%<const%>类型%qT" ++msgstr "基类%qT在%<constexpr%>构造函数里未初始化" + + #: cp/init.c:1167 cp/init.c:1186 + #, gcc-internal-format +@@ -28338,9 +28280,9 @@ msgid "uninitialized reference member in %q#T using %<new%> without new-initiali + msgstr "未初始化的引用成员%qD" + + #: cp/init.c:1917 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "uninitialized reference member in %q#T" +-msgstr "未初始化的引用成员%qD" ++msgstr "%q#T中有未初始化的引用成员" + + #: cp/init.c:1929 + #, fuzzy, gcc-internal-format +@@ -28350,7 +28292,7 @@ msgstr "%<new%>%q#T时常量未初始化" + #: cp/init.c:1932 + #, fuzzy, gcc-internal-format + msgid "uninitialized const member in %q#T" +-msgstr "未初始化的常量成员%qD" ++msgstr "%<new%>%q#T时常量未初始化" + + #: cp/init.c:2029 + #, gcc-internal-format +@@ -28530,7 +28472,7 @@ msgstr "省略的%<?:%>中操作数不能被修饰" + #: cp/mangle.c:2768 + #, gcc-internal-format + msgid "string literal in function template signature" +-msgstr "" ++msgstr "函数模板签名里有字面字符串" + + #: cp/mangle.c:3040 + #, gcc-internal-format +@@ -28570,12 +28512,12 @@ msgstr "未初始化的成员%qD具有%<const%>类型%qT" + #: cp/method.c:1014 + #, fuzzy, gcc-internal-format + msgid "uninitialized non-static const member %q#D" +-msgstr "未初始化的常量成员%qD" ++msgstr "对可变数组成员非静态地初始化" + + #: cp/method.c:1020 + #, fuzzy, gcc-internal-format + msgid "uninitialized non-static reference member %q#D" +-msgstr "未初始化的引用成员%qD" ++msgstr "成员%qD是未初始化的引用" + + #: cp/method.c:1253 + #, gcc-internal-format +@@ -28883,12 +28825,12 @@ msgstr "" + #, gcc-internal-format + msgid "suggested alternative:" + msgid_plural "suggested alternatives:" +-msgstr[0] "" ++msgstr[0] "建议的替代:" + + #: cp/name-lookup.c:3994 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid " %qE" +-msgstr "%q+#D" ++msgstr " %qE" + + #: cp/name-lookup.c:5184 + #, gcc-internal-format +@@ -28946,14 +28888,14 @@ msgid "%qE has not been declared" + msgstr "%qE未声明" + + #: cp/parser.c:2373 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<%E::%E%> is not a type" +-msgstr "%<%T::%E%>不是一个类型" ++msgstr "%<%E::%E%>不是一个类型" + + #: cp/parser.c:2377 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<%E::%E%> is not a class or namespace" +-msgstr "%qT既不是类也不是命名空间" ++msgstr "%<%E::%E%>既不是类也不是命名空间" + + #: cp/parser.c:2382 + #, fuzzy, gcc-internal-format +@@ -28968,7 +28910,7 @@ msgstr "%<%T::%E%>不是一个类型" + #: cp/parser.c:2398 + #, fuzzy, gcc-internal-format + msgid "%<::%E%> is not a class or namespace" +-msgstr "%qT既不是类也不是命名空间" ++msgstr "%q#T 不是类或命名空间" + + #: cp/parser.c:2402 + #, fuzzy, gcc-internal-format +@@ -28976,19 +28918,19 @@ msgid "%<::%E%> is not a class, namespace, or enumeration" + msgstr "%qT既不是类也不是命名空间" + + #: cp/parser.c:2414 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qE is not a type" +-msgstr "%qD不是一个类型" ++msgstr "%qE不是一个类型" + + #: cp/parser.c:2417 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qE is not a class or namespace" +-msgstr "%qT既不是类也不是命名空间" ++msgstr "%qE既不是类也不是命名空间" + + #: cp/parser.c:2421 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qE is not a class, namespace, or enumeration" +-msgstr "%qT既不是类也不是命名空间" ++msgstr "%qE不是一个类、命名空间或枚举" + + #: cp/parser.c:2464 + #, gcc-internal-format +@@ -29026,9 +28968,9 @@ msgid "invalid template-id" + msgstr "无效的模板 ID" + + #: cp/parser.c:2589 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "floating-point literal cannot appear in a constant-expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "浮点字面值不能出现在常量表达式中" + + #: cp/parser.c:2593 cp/pt.c:12595 + #, gcc-internal-format +@@ -29118,9 +29060,9 @@ msgid "%qE does not name a type" + msgstr "%qE不是一个类型名" + + #: cp/parser.c:2730 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "C++0x %<constexpr%> only available with -std=c++0x or -std=gnu++0x" +-msgstr "C++0x auto 只在 -std=c++0x 或 -std=gnu++0x 下可用" ++msgstr "C++0x %<constexpr%>只在 -std=c++0x 或 -std=gnu++0x 下可用" + + #: cp/parser.c:2757 + #, gcc-internal-format +@@ -29154,19 +29096,19 @@ msgid "%qE in class %qT does not name a type" + msgstr "%qE不是类%qT中的一个类型名" + + #: cp/parser.c:3340 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected string-literal" + msgstr "需要字面字符串" + + #: cp/parser.c:3392 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "a wide string is invalid in this context" +-msgstr "%L处上下文中不允许使用按值传递的实参" ++msgstr "此上下文中宽字符串无效" + + #: cp/parser.c:3487 cp/parser.c:9657 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected declaration" +-msgstr "空声明" ++msgstr "需要声明" + + #: cp/parser.c:3582 + #, gcc-internal-format +@@ -29184,9 +29126,9 @@ msgid "statement-expressions are not allowed outside functions nor in template-a + msgstr "语句表达式只能用于函数或模板实参列表内" + + #: cp/parser.c:3728 cp/parser.c:3877 cp/parser.c:4030 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected primary-expression" +-msgstr "需要表达式" ++msgstr "需要元表达式" + + #: cp/parser.c:3758 + #, gcc-internal-format +@@ -29206,7 +29148,7 @@ msgstr "局部变量%qD不应出现在此上下文中" + #: cp/parser.c:4170 + #, fuzzy, gcc-internal-format + msgid "expected id-expression" +-msgstr "需要表达式" ++msgstr "需要表达式类型" + + #: cp/parser.c:4300 + #, gcc-internal-format +@@ -29226,17 +29168,17 @@ msgstr "typedef 名%qD用于析构函数声明" + #: cp/parser.c:4472 cp/parser.c:15219 + #, fuzzy, gcc-internal-format + msgid "expected unqualified-id" +-msgstr "需要指定符-限制符列表" ++msgstr "无效的模板 ID" + + #: cp/parser.c:4576 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "found %<:%> in nested-name-specifier, expected %<::%>" +-msgstr "" ++msgstr "嵌套名指定中使用了不完全的类型%qT" + + #: cp/parser.c:4793 + #, fuzzy, gcc-internal-format + msgid "expected nested-name-specifier" +-msgstr "需要指定声明" ++msgstr "%C 期待访问指定符" + + #: cp/parser.c:4975 cp/parser.c:6644 + #, gcc-internal-format +@@ -29268,7 +29210,7 @@ msgstr "错误地使用了%qD" + #: cp/parser.c:5868 + #, gcc-internal-format + msgid "non-scalar type" +-msgstr "" ++msgstr "非标准类型" + + #: cp/parser.c:5957 + #, fuzzy, gcc-internal-format +@@ -29316,14 +29258,14 @@ msgid "suggest parentheses around %<>>%> expression" + msgstr "建议%<>>%>表达式周围加上括号" + + #: cp/parser.c:6986 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "ISO C++ does not allow ?: with omitted middle operand" +-msgstr "ISO C++ 不允许指定元素初始值设定" ++msgstr "ISO C++ 不允许省略 ?: 的中间操作数" + + #: cp/parser.c:7582 + #, fuzzy, gcc-internal-format + msgid "lambda-expression in unevaluated context" +-msgstr "没有捕获的 Lambda 表达式声明为 mutable" ++msgstr "已经在 Lambda 表达式中捕获了%<this%>" + + #: cp/parser.c:7705 + #, gcc-internal-format +@@ -29343,7 +29285,7 @@ msgstr "为 lambda 形参指定了默认参数" + #: cp/parser.c:8211 + #, fuzzy, gcc-internal-format + msgid "expected labeled-statement" +-msgstr "需要语句" ++msgstr "需要 %s 语句在%L处" + + #: cp/parser.c:8249 + #, gcc-internal-format +@@ -29363,7 +29305,7 @@ msgstr "%<%T::%D%>命名了一个构造函数而非类型" + #: cp/parser.c:8590 cp/parser.c:20971 + #, fuzzy, gcc-internal-format + msgid "expected selection-statement" +-msgstr "需要声明或语句" ++msgstr "需要 %s 语句在%L处" + + #: cp/parser.c:8623 + #, gcc-internal-format +@@ -29378,7 +29320,7 @@ msgstr "对%qT不一致的演绎:先是%qT然后是%qT" + #: cp/parser.c:9044 cp/parser.c:20974 + #, fuzzy, gcc-internal-format + msgid "expected iteration-statement" +-msgstr "需要声明或语句" ++msgstr "需要 %s 语句在%L处" + + #: cp/parser.c:9091 + #, fuzzy, gcc-internal-format +@@ -29394,7 +29336,7 @@ msgstr "ISO C++ 不允许计算转移" + #: cp/parser.c:9226 cp/parser.c:20977 + #, fuzzy, gcc-internal-format + msgid "expected jump-statement" +-msgstr "需要语句" ++msgstr "需要 %s 语句在%L处" + + #: cp/parser.c:9358 cp/parser.c:17788 + #, gcc-internal-format +@@ -29426,7 +29368,7 @@ msgstr "%<auto%>的语义在 C++0x 中将被改变;请考虑删除它" + #: cp/parser.c:9974 + #, fuzzy, gcc-internal-format + msgid "decl-specifier invalid in condition" +-msgstr "函数定义上有 pure 指定" ++msgstr "%C处 NAME= 限定符中 C 名字无效" + + #: cp/parser.c:10065 + #, gcc-internal-format +@@ -29474,9 +29416,9 @@ msgid "keyword %<typename%> not allowed in this context (a qualified member init + msgstr "关键字%<typename%>不允许用在此上下文中(限定的初始值设定隐式地是一个类型)" + + #: cp/parser.c:11095 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected operator" +-msgstr "非预期的操作数" ++msgstr "需要操作符" + + #. Warn that we do not support `export'. + #: cp/parser.c:11132 +@@ -29500,14 +29442,14 @@ msgid "template parameter packs cannot have default arguments" + msgstr "模板参数包不能有默认参数" + + #: cp/parser.c:11616 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected template-id" +-msgstr "需要语句" ++msgstr "需要模板 ID" + + #: cp/parser.c:11663 cp/parser.c:20935 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<<%>" +-msgstr "需要%<;%>" ++msgstr "需要%<<%>" + + #: cp/parser.c:11670 + #, gcc-internal-format +@@ -29526,9 +29468,9 @@ msgstr "模板实参表语法错误" + + #. The name does not name a template. + #: cp/parser.c:11820 cp/parser.c:11935 cp/parser.c:12145 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected template-name" +-msgstr "需要语句" ++msgstr "需要模板名" + + #. Explain what went wrong. + #: cp/parser.c:11866 +@@ -29547,14 +29489,14 @@ msgid "expected parameter pack before %<...%>" + msgstr "%<...%>前需要形参包" + + #: cp/parser.c:12110 cp/parser.c:12128 cp/parser.c:12269 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected template-argument" +-msgstr "需要语句" ++msgstr "需要模板实参" + + #: cp/parser.c:12252 + #, fuzzy, gcc-internal-format + msgid "invalid non-type template argument" +-msgstr "无效的类型参数" ++msgstr "%qs(有%qT)的实参类型无效" + + #: cp/parser.c:12366 + #, fuzzy, gcc-internal-format +@@ -29574,17 +29516,17 @@ msgstr "特例化模板有 C 链接" + #: cp/parser.c:12646 + #, fuzzy, gcc-internal-format + msgid "expected type specifier" +-msgstr "需要指定声明" ++msgstr "需要表达式类型" + + #: cp/parser.c:12863 + #, fuzzy, gcc-internal-format + msgid "expected template-id for type" +-msgstr "需要表达式类型" ++msgstr " 需要有%qD类型的模板,却得到了%qT" + + #: cp/parser.c:12890 + #, fuzzy, gcc-internal-format + msgid "expected type-name" +-msgstr "需要名字" ++msgstr "需要类名" + + #: cp/parser.c:13077 + #, gcc-internal-format +@@ -29612,14 +29554,14 @@ msgid "attributes ignored on elaborated-type-specifier that is not a forward dec + msgstr "类型在非前向声明的详尽类型限定符中被忽略" + + #: cp/parser.c:13480 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD is an enumeration template" +-msgstr "%qD不是一个函数模板" ++msgstr "%qD不是一个枚举模板" + + #: cp/parser.c:13488 + #, fuzzy, gcc-internal-format + msgid "%qD is not an enumerator-name" +-msgstr "%qD不是一个命名空间名" ++msgstr "%qD不是一个命名空间" + + #: cp/parser.c:13551 + #, fuzzy, gcc-internal-format +@@ -29700,12 +29642,12 @@ msgstr "" + #: cp/parser.c:14616 cp/parser.c:16529 + #, fuzzy, gcc-internal-format + msgid "expected initializer" +-msgstr "需要标识符" ++msgstr "无效的初始值设定" + + #: cp/parser.c:14636 + #, fuzzy, gcc-internal-format + msgid "invalid type in declaration" +-msgstr "无效的函数声明" ++msgstr "形参声明中出现的 typedef 声明无效" + + #: cp/parser.c:14712 + #, gcc-internal-format +@@ -29749,12 +29691,12 @@ msgstr "使用%<%T::%D%>而不是%<%T::%D%>来以限定名指定构造函数" + #: cp/parser.c:15314 + #, fuzzy, gcc-internal-format + msgid "invalid declarator" +-msgstr "无效的函数声明" ++msgstr "无效的初始值设定" + + #: cp/parser.c:15380 + #, fuzzy, gcc-internal-format + msgid "expected declarator" +-msgstr "需要指定声明" ++msgstr "在%C处需要‘(’" + + #: cp/parser.c:15475 + #, gcc-internal-format +@@ -29764,7 +29706,7 @@ msgstr "%qD是一个命名空间" + #: cp/parser.c:15491 + #, fuzzy, gcc-internal-format + msgid "expected ptr-operator" +-msgstr "非预期的操作数" ++msgstr "未知的操作符‘%s’在 %%L处" + + #: cp/parser.c:15550 + #, gcc-internal-format +@@ -29779,17 +29721,17 @@ msgstr "错误地使用了%<auto%>" + #: cp/parser.c:15691 + #, fuzzy, gcc-internal-format + msgid "types may not be defined in template arguments" +-msgstr "类型不能定义在参数类型中" ++msgstr "不能%<typeid%>中定义类型" + + #: cp/parser.c:15772 + #, fuzzy, gcc-internal-format + msgid "expected type-specifier" +-msgstr "需要标识符" ++msgstr "需要表达式类型" + + #: cp/parser.c:16016 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<,%> or %<...%>" +-msgstr "需要%<:%>或%<...%>" ++msgstr "需要%<,%>或%<...%>" + + #: cp/parser.c:16073 + #, gcc-internal-format +@@ -29822,24 +29764,24 @@ msgid "expected class-name" + msgstr "需要类名" + + #: cp/parser.c:17053 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<;%> after class definition" +-msgstr "非预期的 %d 字节 cop 指令" ++msgstr "类定义后需要%<;%>" + + #: cp/parser.c:17055 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<;%> after struct definition" +-msgstr "非预期的 %d 字节 cop 指令" ++msgstr "结构定义后需要%<;%>" + + #: cp/parser.c:17057 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<;%> after union definition" +-msgstr "%C处的函数声明后有非预期的垃圾字符" ++msgstr "联合定义后需要%<;%>" + + #: cp/parser.c:17341 + #, fuzzy, gcc-internal-format + msgid "expected %<{%> or %<:%>" +-msgstr "需要 %<,%> 或 % <)%>" ++msgstr "需要%<,%>或%<;%>" + + #: cp/parser.c:17353 + #, gcc-internal-format +@@ -29849,7 +29791,7 @@ msgstr "" + #: cp/parser.c:17360 + #, fuzzy, gcc-internal-format + msgid "qualified name does not name a class" +-msgstr "友元声明没有指定类或函数名" ++msgstr "%qE不是一个类" + + #: cp/parser.c:17372 + #, gcc-internal-format +@@ -29874,7 +29816,7 @@ msgstr "函数模板%qD重声明为类模板" + #: cp/parser.c:17478 + #, fuzzy, gcc-internal-format + msgid "could not resolve typename type" +-msgstr "不能解析 16 进制数" ++msgstr "%<typename %T::%D%>指定了%q#T,但后者不是一个类型" + + #: cp/parser.c:17530 + #, gcc-internal-format +@@ -29904,7 +29846,7 @@ msgstr "函数定义上有 pure 指定" + #: cp/parser.c:18054 + #, fuzzy, gcc-internal-format + msgid "expected %<;%> at end of member declaration" +-msgstr "需要%<(%>或行尾" ++msgstr "在%C处需要“,”或语句尾" + + #: cp/parser.c:18120 + #, fuzzy, gcc-internal-format +@@ -29919,7 +29861,7 @@ msgstr "<花括号内的初始值列表>" + #: cp/parser.c:18287 + #, gcc-internal-format + msgid "%<virtual%> specified more than once in base-specified" +-msgstr "" ++msgstr "在基类限定中指定了多于一次的%<virtual%>" + + #: cp/parser.c:18307 + #, gcc-internal-format +@@ -29993,12 +29935,12 @@ msgstr "模板有 C 链接" + #: cp/parser.c:19941 + #, fuzzy, gcc-internal-format + msgid "invalid explicit specialization" +-msgstr "无效的基类" ++msgstr "显式特例化非模板%qT" + + #: cp/parser.c:20071 + #, gcc-internal-format + msgid "template declaration of %<typedef%>" +-msgstr "%<typedef%> 的模板声明" ++msgstr "%<typedef%>的模板声明" + + #: cp/parser.c:20148 + #, gcc-internal-format +@@ -30026,134 +29968,134 @@ msgid "%<__thread%> before %qD" + msgstr "%<__thread%>出现在%qD之前" + + #: cp/parser.c:20844 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<new%>" +-msgstr "需要%<;%>" ++msgstr "需要%<new%>" + + #: cp/parser.c:20847 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<delete%>" +-msgstr "需要 %<while%>" ++msgstr "需要%<delete%>" + + #: cp/parser.c:20850 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<return%>" +-msgstr "需要 %<@end%>" ++msgstr "需要%<return%>" + + #: cp/parser.c:20856 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<extern%>" +-msgstr "需要 %<@end%>" ++msgstr "需要%<extern%>" + + #: cp/parser.c:20859 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<static_assert%>" +-msgstr "需要 %<while%>" ++msgstr "需要%<static_assert%>" + + #: cp/parser.c:20862 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<decltype%>" +-msgstr "需要 %<while%>" ++msgstr "需要%<decltype%>" + + #: cp/parser.c:20865 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<operator%>" +-msgstr "需要%<;%>" ++msgstr "需要%<operator%>" + + #: cp/parser.c:20868 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<class%>" +-msgstr "需要%<;%>" ++msgstr "需要%<class%>" + + #: cp/parser.c:20871 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<template%>" +-msgstr "需要 %<while%>" ++msgstr "需要%<template%>" + + #: cp/parser.c:20874 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<namespace%>" +-msgstr "需要%<;%>" ++msgstr "需要%<namespace%>" + + #: cp/parser.c:20877 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<using%>" +-msgstr "需要%<;%>" ++msgstr "需要%<using%>" + + #: cp/parser.c:20880 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<asm%>" +-msgstr "需要%<;%>" ++msgstr "需要%<asm%>" + + #: cp/parser.c:20883 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<try%>" +-msgstr "需要%<;%>" ++msgstr "需要%<try%>" + + #: cp/parser.c:20886 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<catch%>" +-msgstr "需要%<;%>" ++msgstr "需要%<catch%>" + + #: cp/parser.c:20889 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<throw%>" +-msgstr "需要%<;%>" ++msgstr "需要%<throw%>" + + #: cp/parser.c:20892 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<__label__%>" +-msgstr "需要 %<while%>" ++msgstr "需要%<__label__%>" + + #: cp/parser.c:20895 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<@try%>" +-msgstr "需要%<;%>" ++msgstr "需要%<@try%>" + + #: cp/parser.c:20898 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<@synchronized%>" +-msgstr "需要 %<@end%>" ++msgstr "需要%<@synchronized%>" + + #: cp/parser.c:20901 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<@throw%>" +-msgstr "需要%<;%>" ++msgstr "需要%<@throw%>" + + #: cp/parser.c:20926 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<[%>" +-msgstr "需要%<;%>" ++msgstr "需要%<[%>" + + #: cp/parser.c:20932 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<::%>" +-msgstr "需要 %<:%>" ++msgstr "需要%<::%>" + + #: cp/parser.c:20944 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<...%>" +-msgstr "需要%<;%>" ++msgstr "需要%<...%>" + + #: cp/parser.c:20947 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<*%>" +-msgstr "需要%<;%>" ++msgstr "需要%<*%>" + + #: cp/parser.c:20950 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<~%>" +-msgstr "需要%<;%>" ++msgstr "需要%<~%>" + + #: cp/parser.c:20956 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<:%> or %<::%>" +-msgstr "需要%<:%>或%<...%>" ++msgstr "需要%<:%>或%<::%>" + + #: cp/parser.c:20984 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<class%>, %<typename%>, or %<template%>" +-msgstr "需要 %<;%>、%<,%> 或 %<)%>" ++msgstr "需要%<class%>、%<typename%>或%<template%>" + + #: cp/parser.c:21215 + #, gcc-internal-format +@@ -30228,7 +30170,7 @@ msgstr "%qE属性为%qE所忽略" + #: cp/parser.c:22995 cp/parser.c:23002 cp/parser.c:23009 + #, fuzzy, gcc-internal-format + msgid "invalid type for property" +-msgstr "无效的类型参数" ++msgstr "%q+D的抽象类型无效" + + #: cp/parser.c:24440 + #, gcc-internal-format +@@ -30501,7 +30443,7 @@ msgstr[0] "模板实参%2$qE的类型%1$qT取决于模板参数" + #: cp/pt.c:4410 + #, fuzzy, gcc-internal-format + msgid "partial specialization of %qT after instantiation of %qT" +-msgstr "%qT的实例化在%qT的特例化之后" ++msgstr "部分特例化模板%qT声明为%<friend%>" + + #: cp/pt.c:4503 + #, gcc-internal-format +@@ -30670,7 +30612,7 @@ msgstr "%qE不是类型%qT的有效模板实参,因为字面字符串不能用 + #: cp/pt.c:5403 + #, fuzzy, gcc-internal-format + msgid "in template argument for type %qT " +-msgstr "%qE不是类型%qT的有效模板参数" ++msgstr "%qD的模板实参使用了局部类型%qT" + + #: cp/pt.c:5443 + #, gcc-internal-format +@@ -31122,7 +31064,7 @@ msgstr "从花括号中的初始化列表演绎需要 #include <initializer_list + #: cp/pt.c:18972 + #, gcc-internal-format + msgid "variable %q#D with %<auto%> type used in its own initializer" +-msgstr "变量‘%q#D’在其自身的初始值设定中使用了%<auto%>类型" ++msgstr "变量%q#D在其自身的初始值设定中使用了%<auto%>类型" + + #. If type is error_mark_node a diagnostic must have been + #. emitted by now. Also, having a mention to '<type error>' +@@ -31513,17 +31455,17 @@ msgstr "constexpr 变量%2$qD的类型%1$qT不是字面常量" + #: cp/semantics.c:5390 + #, fuzzy, gcc-internal-format + msgid "invalid type for parameter %q#D of constexpr function" +-msgstr "在静态成员函数中使用成员%q+D无效" ++msgstr "函数%q+#D的抽象返回类型无效" + + #: cp/semantics.c:5401 + #, fuzzy, gcc-internal-format + msgid "invalid return type %qT of constexpr function %qD" +-msgstr "函数%q+#D的抽象返回类型无效" ++msgstr "函数%2$qD的返回值类型%1$qT不是一个字面类型" + + #: cp/semantics.c:5411 + #, fuzzy, gcc-internal-format + msgid "enclosing class of %q#D is not a literal type" +-msgstr "形参%q#D不是一个字面类型" ++msgstr "%3$L处 CLASS 变量‘%2$s’的类型‘%1$s’不能被扩展" + + #: cp/semantics.c:5584 + #, gcc-internal-format +@@ -31543,7 +31485,7 @@ msgstr "友元声明没有指定类或函数名" + #: cp/semantics.c:5995 + #, fuzzy, gcc-internal-format + msgid "%qD is not a constexpr function" +-msgstr "%qD不是一个模板函数" ++msgstr "%qD不是一个函数模板" + + #: cp/semantics.c:6022 + #, fuzzy, gcc-internal-format +@@ -31558,17 +31500,17 @@ msgstr "协议%qE存在循环依赖" + #: cp/semantics.c:6135 + #, fuzzy, gcc-internal-format + msgid "%q+E is not a constant expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "整型表达式%qE不是常量" + + #: cp/semantics.c:6252 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "array subscript out of bound" +-msgstr "数组下标越过了数组边界" ++msgstr "数组下标越界" + + #: cp/semantics.c:6291 cp/semantics.c:6337 cp/semantics.c:6807 + #, fuzzy, gcc-internal-format + msgid "%qE is not a constant expression" +-msgstr "常量表达式中类型错误" ++msgstr "整型表达式%qE不是常量" + + #: cp/semantics.c:6305 + #, fuzzy, gcc-internal-format +@@ -31593,12 +31535,12 @@ msgstr "变量‘%q#D’在其自身的初始值设定中使用了%<auto%>类型 + #: cp/semantics.c:6727 + #, fuzzy, gcc-internal-format + msgid "%q#D is not const" +-msgstr "%qD未被捕获" ++msgstr "%q#T不是一个类" + + #: cp/semantics.c:6730 + #, fuzzy, gcc-internal-format + msgid "%q#D is volatile" +-msgstr "%q+#D是私有的" ++msgstr "重复的%<volatile%>" + + #: cp/semantics.c:6733 + #, fuzzy, gcc-internal-format +@@ -31608,7 +31550,7 @@ msgstr "%qD不能出现在常量表达式中" + #: cp/semantics.c:6742 + #, fuzzy, gcc-internal-format + msgid "%qD was not declared %<constexpr%>" +-msgstr "形参不能被声明为%<constexpr%>" ++msgstr "%qD在此作用域中尚未声明" + + #: cp/semantics.c:6745 + #, fuzzy, gcc-internal-format +@@ -31628,27 +31570,27 @@ msgstr "整型表达式%qE不是常量" + #: cp/semantics.c:7067 + #, fuzzy, gcc-internal-format + msgid "unexpected expression %qE of kind %s" +-msgstr "需要表达式" ++msgstr "%qE定义为类型错误的标记" + + #: cp/semantics.c:7274 + #, gcc-internal-format + msgid "expression %qE has side-effects" +-msgstr "" ++msgstr "表达式%qE有副作用" + + #: cp/semantics.c:7319 + #, fuzzy, gcc-internal-format + msgid "%qE is not a potential constant expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "整型表达式%qE不是常量" + + #: cp/semantics.c:7337 + #, fuzzy, gcc-internal-format + msgid "%qE is not a function name" +-msgstr "%qD不是一个函数模板" ++msgstr "被调用的对象%qE不是一个函数" + + #: cp/semantics.c:7352 + #, fuzzy, gcc-internal-format + msgid "%qD is not %<constexpr%>" +-msgstr "析构函数不能是 %<constexpr%>" ++msgstr "%qD不是一个变量" + + #: cp/semantics.c:7370 + #, fuzzy, gcc-internal-format +@@ -31678,7 +31620,7 @@ msgstr "初始值设定中元素不是常量表达式" + #: cp/semantics.c:7551 + #, fuzzy, gcc-internal-format + msgid "pointer comparison expression is not a constant expression" +-msgstr "初始值设定中元素不是常量表达式" ++msgstr "整型表达式%qE不是常量" + + #: cp/semantics.c:7636 + #, fuzzy, gcc-internal-format +@@ -31688,12 +31630,12 @@ msgstr "初始值设定中元素不是常量表达式" + #: cp/semantics.c:7739 + #, fuzzy, gcc-internal-format + msgid "non-constant array initialization" +-msgstr "初始值设定中数组索引不是常数" ++msgstr "%L处需要标量初始化表达式" + + #: cp/semantics.c:7745 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "unexpected ast of kind %s" +-msgstr "‘%s’中非预期的文件结尾" ++msgstr "无效的调度类型" + + #: cp/semantics.c:7915 + #, gcc-internal-format +@@ -31978,12 +31920,12 @@ msgstr "%qE不能用作函数" + #: cp/typeck.c:3287 + #, fuzzy, gcc-internal-format + msgid "too many arguments to constructor %q#D" +-msgstr "给予 %s%q+#D的参数太多" ++msgstr "给予函数 %s 的参数太多,于 %L" + + #: cp/typeck.c:3288 + #, fuzzy, gcc-internal-format + msgid "too few arguments to constructor %q#D" +-msgstr "给予 %s%q+#D的参数太少" ++msgstr "给 %qE 的实递参数太少" + + #: cp/typeck.c:3293 + #, fuzzy, gcc-internal-format +@@ -31998,22 +31940,22 @@ msgstr "提供给函数%qE的实参太少" + #: cp/typeck.c:3300 + #, fuzzy, gcc-internal-format + msgid "too many arguments to function %q#D" +-msgstr "提供给函数%qE的实参太多" ++msgstr "给予函数的实参太多" + + #: cp/typeck.c:3301 + #, fuzzy, gcc-internal-format + msgid "too few arguments to function %q#D" +-msgstr "提供给函数%qE的实参太少" ++msgstr "给予函数的实参太少" + + #: cp/typeck.c:3311 + #, fuzzy, gcc-internal-format + msgid "too many arguments to method %q#D" +-msgstr "给予 %s%q+#D的参数太多" ++msgstr "给予函数 %s 的参数太多,于 %L" + + #: cp/typeck.c:3312 + #, fuzzy, gcc-internal-format + msgid "too few arguments to method %q#D" +-msgstr "给予 %s%q+#D的参数太少" ++msgstr "给 %qE 的实递参数太少" + + #: cp/typeck.c:3315 + #, gcc-internal-format +@@ -32384,34 +32326,34 @@ msgid "cannot convert %qT to %qT for argument %qP to %qD" + msgstr "不能将%4$qD的实参%3$qP从%1$qT转换到%2$qT" + + #: cp/typeck.c:7272 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "cannot convert %qT to %qT in default argument" +-msgstr "不能将%4$qD的实参%3$qP从%1$qT转换到%2$qT" ++msgstr "不能在参数默认时将%qT转换为%qT" + + #: cp/typeck.c:7276 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "cannot convert %qT to %qT in argument passing" +-msgstr "不能将%qT转换为%qT,在 %s 中" ++msgstr "不能在传参时将%qT转换为%qT" + + #: cp/typeck.c:7280 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "cannot convert %qT to %qT" +-msgstr "不能将%qT转换为%qT,在 %s 中" ++msgstr "不能将%qT转换为%qT" + + #: cp/typeck.c:7284 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "cannot convert %qT to %qT in initialization" +-msgstr "不能将%qT转换为%qT,在 %s 中" ++msgstr "不能在初始化时将%qT转换为%qT" + + #: cp/typeck.c:7288 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "cannot convert %qT to %qT in return" +-msgstr "不能将%qT转换为%qT,在 %s 中" ++msgstr "不能在返回时将%qT转换为%qT" + + #: cp/typeck.c:7292 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "cannot convert %qT to %qT in assignment" +-msgstr "不能将%qT转换为%qT,在 %s 中" ++msgstr "不能在赋值时将%qT转换为%qT" + + #: cp/typeck.c:7315 + #, fuzzy, gcc-internal-format +@@ -32421,17 +32363,17 @@ msgstr "%2$qE的第 %1$d 个实参可能是 format 属性的备选" + #: cp/typeck.c:7319 + #, fuzzy, gcc-internal-format + msgid "parameter might be a candidate for a format attribute" +-msgstr "返回类型可能是 format 属性的备选" ++msgstr "%2$qE的第 %1$d 个实参可能是 format 属性的备选" + + #: cp/typeck.c:7324 + #, fuzzy, gcc-internal-format + msgid "target of conversion might be a candidate for a format attribute" +-msgstr "函数的实参可能是 format 属性的备选" ++msgstr "%2$qE的第 %1$d 个实参可能是 format 属性的备选" + + #: cp/typeck.c:7329 + #, fuzzy, gcc-internal-format + msgid "target of initialization might be a candidate for a format attribute" +-msgstr "函数的实参可能是 format 属性的备选" ++msgstr "初始化的左手边可能是 format 属性的备选时" + + #: cp/typeck.c:7339 + #, fuzzy, gcc-internal-format +@@ -32508,14 +32450,14 @@ msgstr "%<operator new%>不能返回 NULL,除非它被声明为%<throw()%>(或 + + #. Make this a permerror because we used to accept it. + #: cp/typeck.c:8231 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "using temporary as lvalue" +-msgstr "" ++msgstr "自增操作数必须是左值" + + #: cp/typeck.c:8233 + #, gcc-internal-format + msgid "using xvalue (rvalue reference) as lvalue" +-msgstr "" ++msgstr "右值的引用用作左值" + + #: cp/typeck2.c:53 + #, gcc-internal-format +@@ -32530,7 +32472,7 @@ msgstr "向只读字段%qD赋值" + #: cp/typeck2.c:109 + #, fuzzy, gcc-internal-format + msgid "constant field %qD used as %<asm%> output" +-msgstr "只读变量%qD被用作%<asm%>的输出" ++msgstr "通过‘asm’输出向只读字段%qD赋值" + + #: cp/typeck2.c:111 + #, gcc-internal-format +@@ -32791,7 +32733,7 @@ msgstr "成员指针类型%qT与对象类型%qT不兼容" + #: cp/typeck2.c:1530 + #, fuzzy, gcc-internal-format + msgid "invalid value-initialization of reference type" +-msgstr "引用类型的值初始化无效" ++msgstr "引用类型的非法值初始化" + + #: cp/typeck2.c:1729 + #, gcc-internal-format +@@ -32866,7 +32808,7 @@ msgstr "%C处需要数组下标" + #: fortran/array.c:106 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected '*' in coarray subscript at %C" +-msgstr "%C处需要数组下标" ++msgstr "非预期的 %s 语句出现在%C处的 MODULE 中" + + #: fortran/array.c:130 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -32893,12 +32835,12 @@ msgstr "%C处的任何引用都不能多于 %d 维" + #: fortran/match.c:1758 fortran/match.c:2339 fortran/simplify.c:4590 + #, gcc-internal-format, gfc-internal-format + msgid "Coarrays disabled at %C, use -fcoarray= to enable" +-msgstr "" ++msgstr "集合数组在%C处被禁用,使用 -fcoarray= 来启用" + + #: fortran/array.c:221 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected coarray designator at %C" +-msgstr "%C处需要数组下标" ++msgstr "%C处非预期的 END 语句" + + #: fortran/array.c:236 + #, gcc-internal-format, gfc-internal-format +@@ -32908,7 +32850,7 @@ msgstr "" + #: fortran/array.c:246 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected '*' for codimension %d of %d at %C" +-msgstr "%C处数组声明需要另外一维" ++msgstr "%2$L处 %1$s 种别无效" + + #: fortran/array.c:249 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -32938,7 +32880,7 @@ msgstr "%C处数组规格中需要表达式" + #: fortran/array.c:479 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Bad array specification for implied-shape array at %C" +-msgstr "%C处假定外形数组的数组规格说明错误" ++msgstr "%L 处假定外形数组的坏的数组规格说明" + + #: fortran/array.c:495 fortran/array.c:600 + #, gcc-internal-format, gfc-internal-format +@@ -32978,7 +32920,7 @@ msgstr "Fortran 2008:%C处多于 7 维的数组规格" + #: fortran/array.c:563 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Fortran 2008: Coarray declaration at %C" +-msgstr "Fortran 2003:%C处的的 FINAL 过程声明" ++msgstr "Fortran 2008:%C处的 BLOCK 结构" + + #: fortran/array.c:651 + #, gcc-internal-format, gfc-internal-format +@@ -33100,7 +33042,7 @@ msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是一个数组" + #: fortran/check.c:292 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "'%s' at %L must be nonnegative" +-msgstr "%L处的语句中 UNIT 数必须为非负的数" ++msgstr "%s (%L处)必须是一个标量" + + #: fortran/check.c:318 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -33108,9 +33050,9 @@ msgid "'%s' at %L must be less than or equal to BIT_SIZE('%s')" + msgstr "%L处 LOG 的实参不可以小于或等于零" + + #: fortran/check.c:328 +-#, gcc-internal-format, gfc-internal-format ++#, fuzzy, gcc-internal-format, gfc-internal-format + msgid "'%s' at %L must be less than BIT_SIZE('%s')" +-msgstr "" ++msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’秩必须小于 %4$d" + + #: fortran/check.c:355 + #, gcc-internal-format, gfc-internal-format +@@ -33211,7 +33153,7 @@ msgstr "%L 的 NULL 指针不能用作内建函数‘%s’的实参" + #: fortran/check.c:963 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Extension: Negative argument N at %L" +-msgstr "扩展:%C处的参数列表函数" ++msgstr "%2$L 处的 %1$s 函数的参数是负的" + + #: fortran/check.c:1135 fortran/check.c:1294 + #, gcc-internal-format, gfc-internal-format +@@ -33324,7 +33266,7 @@ msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’的秩必须为 1 或 2" + #: fortran/check.c:2499 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER" +-msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是一个 POINTER" ++msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须为整数型或实数型" + + #: fortran/check.c:2568 + #, gcc-internal-format, gfc-internal-format +@@ -33586,7 +33528,7 @@ msgstr "%C处错误的 INTENT 规格" + #: fortran/decl.c:671 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Fortran 2003: deferred type parameter at %C" +-msgstr "Fortran 2003:%C处的过程指针" ++msgstr "Fortran 2003:%C 处的类型限定过程" + + #: fortran/decl.c:708 + #, gcc-internal-format, gfc-internal-format +@@ -33626,7 +33568,7 @@ msgstr "%2$L处的过程‘%1$s’必须有属性才能与 C 互操作" + #: fortran/decl.c:1011 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Type '%s' at %L is a parameter to the BIND(C) procedure '%s' but is not C interoperable because derived type '%s' is not C interoperable" +-msgstr "%2$L处类型‘%1$s’是 BIND(C) 过程‘%3$s’的参数,但它不能与 C 互操作,因为派生类型‘%4$s’不能与 C 互操作" ++msgstr "%2$L 处类型“%1$s”是去到 BIND(C) 过程“%3$s”的参数,但不能与 C 互操作,因为派生类型“%4$s”不是与 C 可互操作的" + + #: fortran/decl.c:1018 + #, gcc-internal-format, gfc-internal-format +@@ -33741,7 +33683,7 @@ msgstr "%C处对指针的初始化不允许出现在 PURE 过程中" + #: fortran/decl.c:1709 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Error in pointer initialization at %C" +-msgstr "扩展:%C处旧式的初始化" ++msgstr "%C处过程指针组件语法错误" + + #: fortran/decl.c:1716 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -33872,7 +33814,7 @@ msgstr "Fortran 2003:%C处的 VOLATILE 属性" + #: fortran/decl.c:2582 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Extension: DOUBLE COMPLEX at %C" +-msgstr "扩展:%C处的 BYTE 类型" ++msgstr "扩展:‘%s’重初始化于 %L" + + #: fortran/decl.c:2620 + #, gcc-internal-format, gfc-internal-format +@@ -33938,7 +33880,7 @@ msgstr "%C处的 IMPORT 语句语法错误" + #: fortran/decl.c:3344 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Missing codimension specification at %C" +-msgstr "%C处没有维数规格" ++msgstr "%C处没有指定维数" + + #: fortran/decl.c:3346 + #, gcc-internal-format, gfc-internal-format +@@ -33978,7 +33920,7 @@ msgstr "Fortran 2003:%C处的 ASYNCHRONOUS 属性" + #: fortran/decl.c:3515 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Fortran 2008: CONTIGUOUS attribute at %C" +-msgstr "Fortran 2003:%C处的 ASYNCHRONOUS 属性" ++msgstr "Fortran 2003:%C处的 PROTECT 属性" + + #: fortran/decl.c:3561 fortran/decl.c:6524 + #, gcc-internal-format, gfc-internal-format +@@ -34082,7 +34024,7 @@ msgstr "%C处数据声明语法错误" + #: fortran/decl.c:4185 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Fortran 2008: IMPURE procedure at %C" +-msgstr "Fortran 2003:%C处的过程指针" ++msgstr "Fortran 2003:%C处的 PROCEDURE 语句" + + #: fortran/decl.c:4198 + #, gcc-internal-format, gfc-internal-format +@@ -34355,7 +34297,7 @@ msgstr "%2$L处在初始化后为 %1$s 指定了维数" + #: fortran/decl.c:6019 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Missing array specification at %L in CODIMENSION statement" +-msgstr "%L处的 DIMENSION 语句缺少数组规格" ++msgstr "%L处的 DIMENSION 语句缺少数组指定" + + #: fortran/decl.c:6028 + #, gcc-internal-format, gfc-internal-format +@@ -34420,7 +34362,7 @@ msgstr "%C处的 Cray 指针声明需要 -fcray-pointer 标记" + #: fortran/decl.c:6395 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Fortran 2008: CONTIGUOUS statement at %C" +-msgstr "Fortran 2003:%C处的 ASYNCHRONOUS 语句" ++msgstr "Fortran 2003:%C处的 IMPORT 语句" + + #: fortran/decl.c:6475 + #, gcc-internal-format, gfc-internal-format +@@ -34735,7 +34677,7 @@ msgstr "%2$C处包含 DEFERRED 绑定的类型‘%1$s’不能是 ABSTRACT" + #: fortran/decl.c:7926 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "There is already a procedure with binding name '%s' for the derived type '%s' at %C" +-msgstr "%3$C处已经有一个过程对派生类型‘%2$s’使用绑定名‘%1$s’" ++msgstr "在 %3$C 处对于派生类型“%2$s”已经有一个非普通的过程用限定名“%1$s”" + + #: fortran/decl.c:7975 + #, gcc-internal-format, gfc-internal-format +@@ -35120,7 +35062,7 @@ msgstr "" + #: fortran/expr.c:3294 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Stride must not be present at %L" +-msgstr "%L处赋值中的变量类型不能是多态的" ++msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’不能为可选的" + + #: fortran/expr.c:3306 + #, gcc-internal-format, gfc-internal-format +@@ -35230,12 +35172,12 @@ msgstr "在%C处的指针初始化需要‘=>’,而不是‘=’" + #: fortran/expr.c:3615 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Pointer initialization target at %C must have the TARGET attribute" +-msgstr "%C处的组件必须有 POINTER 属性" ++msgstr "%L 处指针赋值目标对象有 PROTECTED 属性" + + #: fortran/expr.c:3621 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Pointer initialization target at %C must have the SAVE attribute" +-msgstr "%C处的组件必须有 POINTER 属性" ++msgstr "%2$L 处的对象“%1$s”对于成分的默认初始化必须有 SAVE 属性," + + #: fortran/expr.c:3633 + #, gcc-internal-format, gfc-internal-format +@@ -35253,14 +35195,14 @@ msgid "Non-variable expression in variable definition context (%s) at %L" + msgstr "" + + #: fortran/expr.c:4402 +-#, gcc-internal-format, gfc-internal-format ++#, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Named constant '%s' in variable definition context (%s) at %L" +-msgstr "" ++msgstr "变量‘%s’在%L处上下文中必须是常量" + + #: fortran/expr.c:4411 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "'%s' in variable definition context (%s) at %L is not a variable" +-msgstr "%2$L处‘%1$s’的实参不是一个变量" ++msgstr "%L处的属性不允许出现在 TYPE 定义中" + + #: fortran/expr.c:4423 + #, gcc-internal-format, gfc-internal-format +@@ -35545,7 +35487,7 @@ msgstr "" + #: fortran/interface.c:1698 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Polymorphic scalar passed to array dummy argument '%s' at %L" +-msgstr "%2$L处非多态的传递对象虚参‘%1$s’" ++msgstr "%2$L 处假定外形的数组的元素传递给哑参数“%1$s”" + + #: fortran/interface.c:1707 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -35760,7 +35702,7 @@ msgstr "" + #: fortran/interface.c:2729 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Allocatable function '%s' at %L must have an explicit function interface" +-msgstr "%2$L处的不定长字符长度函数‘%1$s’必须有一个显式的接口" ++msgstr "%2$L处的自动字符长度函数‘%1$s’必须有一个显式的接口" + + #: fortran/interface.c:2739 + #, gcc-internal-format, gfc-internal-format +@@ -35805,7 +35747,7 @@ msgstr "%3$L处对‘%2$s’的调用中找不到名为‘%1$s’的关键字" + #: fortran/intrinsic.c:3525 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Argument '%s' appears twice in call to '%s' at %L" +-msgstr "%3$L处参数‘%1$s’在调用‘%2$s’时出现两次" ++msgstr "参数“%1$s”,在 %3$L 处调用“%2$s”时出现两次" + + #: fortran/intrinsic.c:3539 + #, gcc-internal-format, gfc-internal-format +@@ -36060,7 +36002,7 @@ msgstr "Fortran 95 在%2$L处的 %1$s 标记中需要默认的 INTEGER" + #: fortran/io.c:1513 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Fortran 2008: NEWUNIT specifier at %L" +-msgstr "Fortran 2008:%L处格式中的‘G0’" ++msgstr "Fortran 2008:%C处的 BLOCK 结构" + + #: fortran/io.c:1531 + #, gcc-internal-format, gfc-internal-format +@@ -36481,27 +36423,27 @@ msgstr "PRINT 语句不允许出现在%C处的 PURE 过程中" + #: fortran/match.c:1752 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Fortran 2008: CRITICAL statement at %C" +-msgstr "Fortran 2003:%C处的 CLASS 语句" ++msgstr "Fortran 2003:%C处的 IMPORT 语句" + + #: fortran/match.c:1764 +-#, gcc-internal-format, gfc-internal-format ++#, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Nested CRITICAL block at %C" +-msgstr "" ++msgstr "没有在%C处发现 COMMON 块 /%s/" + + #: fortran/match.c:1816 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Expected association list at %C" +-msgstr "%C处 I/O 列表中需要逗号" ++msgstr "%C处需要实参列表" + + #: fortran/match.c:1829 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Expected association at %C" +-msgstr "%C处需要数组下标" ++msgstr "需要 %s 语句在%L处" + + #: fortran/match.c:1838 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Duplicate name '%s' in association at %C" +-msgstr "%2$C处重复的 %1$s 规格" ++msgstr "%C处的名字中有非法字符" + + #: fortran/match.c:1846 + #, gcc-internal-format, gfc-internal-format +@@ -36511,22 +36453,22 @@ msgstr "" + #: fortran/match.c:1864 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Expected ')' or ',' at %C" +-msgstr "在%C处需要‘,’" ++msgstr "在%C处需要“,”或语句尾" + + #: fortran/match.c:1882 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Junk after ASSOCIATE statement at %C" +-msgstr "%C处重复的 PRIVATE 语句" ++msgstr "%C处 ELSE 语句后有非预期的垃圾字符" + + #: fortran/match.c:2029 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Name '%s' in %s statement at %C is unknown" +-msgstr "%3$C处 %2$s 语句中的名字‘%1$s’不是一个循环名" ++msgstr "DATA 叙述不允许出现在 %C 处 %s 叙述中的名称“%s”不是个回圈名称" + + #: fortran/match.c:2037 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Name '%s' in %s statement at %C is not a construct name" +-msgstr "%3$C处 %2$s 语句中的名字‘%1$s’不是一个循环名" ++msgstr "DATA 叙述不允许出现在 %C 处 %s 叙述中的名称“%s”不是个回圈名称" + + #: fortran/match.c:2049 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -36541,7 +36483,7 @@ msgstr "%s 语句在%C处不在循环内" + #: fortran/match.c:2062 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "%s statement at %C is not within construct '%s'" +-msgstr "%s 语句在%C处不在循环‘%s’内" ++msgstr "%s 语句在%C处不在循环内" + + #: fortran/match.c:2086 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -36586,7 +36528,7 @@ msgstr "%L处的 UNIT 规格必须是 INTEGER 表达式或一个 CHARACTER 变 + #: fortran/match.c:2215 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "STOP code at %L must be scalar" +-msgstr "%L处数组索引必须是标量" ++msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是一个标量" + + #: fortran/match.c:2223 + #, gcc-internal-format, gfc-internal-format +@@ -36616,7 +36558,7 @@ msgstr "PRINT 语句不允许出现在%C处的 PURE 过程中" + #: fortran/match.c:2333 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Fortran 2008: SYNC statement at %C" +-msgstr "Fortran 2003:%C处的 CLASS 语句" ++msgstr "Fortran 2003:%C处的 IMPORT 语句" + + #: fortran/match.c:2345 + #, gcc-internal-format, gfc-internal-format +@@ -36666,7 +36608,7 @@ msgstr "%C处类型指定无效" + #: fortran/match.c:2879 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Error in type-spec at %L" +-msgstr "%C处类型指定无效" ++msgstr "%C处指定 TYPE IS 语法错误" + + #: fortran/match.c:2889 + #, gcc-internal-format, gfc-internal-format +@@ -37180,17 +37122,17 @@ msgstr "%C处的 COLLAPSE 分句参数不是正整数常量" + #: fortran/openmp.c:469 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected junk after TASKWAIT clause at %C" +-msgstr "%C处 ELSE 语句后有非预期的垃圾字符" ++msgstr "%C处的函数声明后有非预期的垃圾字符" + + #: fortran/openmp.c:487 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected junk after $OMP CRITICAL statement at %C" +-msgstr "%C处 ELSE 语句后有非预期的垃圾字符" ++msgstr "%C处 ELSE IF 语句后有非预期的垃圾字符" + + #: fortran/openmp.c:515 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected junk after $OMP FLUSH statement at %C" +-msgstr "%C处 ELSE 语句后有非预期的垃圾字符" ++msgstr "%C处 ELSE IF 语句后有非预期的垃圾字符" + + #: fortran/openmp.c:547 + #, gcc-internal-format, gfc-internal-format +@@ -37205,17 +37147,17 @@ msgstr "%C处 !$OMP THREADPRIVATE 列表语法错误" + #: fortran/openmp.c:663 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected junk after $OMP WORKSHARE statement at %C" +-msgstr "%C处 ELSE 语句后有非预期的垃圾字符" ++msgstr "%C处 ELSE IF 语句后有非预期的垃圾字符" + + #: fortran/openmp.c:677 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected junk after $OMP MASTER statement at %C" +-msgstr "%C处 ELSE 语句后有非预期的垃圾字符" ++msgstr "%C处 ELSE IF 语句后有非预期的垃圾字符" + + #: fortran/openmp.c:691 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected junk after $OMP ORDERED statement at %C" +-msgstr "%C处 ELSE 语句后有非预期的垃圾字符" ++msgstr "%C处 ELSE IF 语句后有非预期的垃圾字符" + + #: fortran/openmp.c:705 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -37225,12 +37167,12 @@ msgstr "%C处 ELSE IF 语句后有非预期的垃圾字符" + #: fortran/openmp.c:719 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected junk after $OMP BARRIER statement at %C" +-msgstr "%C处 ELSE 语句后有非预期的垃圾字符" ++msgstr "%C处 ELSE IF 语句后有非预期的垃圾字符" + + #: fortran/openmp.c:736 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Unexpected junk after NOWAIT clause at %C" +-msgstr "%C处 ELSE 语句后有非预期的垃圾字符" ++msgstr "%C处的函数声明后有非预期的垃圾字符" + + #: fortran/openmp.c:783 fortran/resolve.c:8673 fortran/resolve.c:9133 + #, gcc-internal-format, gfc-internal-format +@@ -37541,7 +37483,7 @@ msgstr "子记录长度不能超过 %d" + #: fortran/parse.c:470 + #, gcc-internal-format, gfc-internal-format + msgid "Unclassifiable statement at %C" +-msgstr "%C 语句无法归类" ++msgstr "%C语句无法归类" + + #: fortran/parse.c:492 + #, gcc-internal-format, gfc-internal-format +@@ -37581,7 +37523,7 @@ msgstr "忽略%L处空语句中的语句标号" + #: fortran/parse.c:718 fortran/parse.c:858 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Fortran 2008: Semicolon at %C without preceding statement" +-msgstr "%C处分号前必须是一个语句" ++msgstr "Fortran 2008:%C 处 CONTAINS 语句没有 FUNCTION 或 SUBROUTINE 语句" + + #: fortran/parse.c:794 fortran/parse.c:834 + #, gcc-internal-format, gfc-internal-format +@@ -37651,7 +37593,7 @@ msgstr "%C处 TYPE 中的 PRIVATE 语句必须在 MODULE 中" + #: fortran/parse.c:1949 + #, gcc-internal-format, gfc-internal-format + msgid "PRIVATE statement at %C must precede procedure bindings" +-msgstr "%C 处 PRIVATE 语句必须先于过程绑定" ++msgstr "%C处 PRIVATE 语句必须先于过程绑定" + + #: fortran/parse.c:1956 fortran/parse.c:2058 + #, gcc-internal-format, gfc-internal-format +@@ -38062,9 +38004,9 @@ msgid "Array section designator, e.g. '(:)', is required besides the coarray des + msgstr "" + + #: fortran/primary.c:1758 +-#, gcc-internal-format, gfc-internal-format ++#, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Coarray designator at %C but '%s' is not a coarray" +-msgstr "" ++msgstr "在 %2$L 处的函数“%1$s”是 INTRINSIC,但不是与一个内建函数不兼容" + + #: fortran/primary.c:1829 + #, gcc-internal-format, gfc-internal-format +@@ -38079,12 +38021,12 @@ msgstr "%C处需要实参列表" + #: fortran/primary.c:1908 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Procedure pointer component '%s' requires an argument list at %C" +-msgstr "函数‘%s’在 %C 需要参数列表" ++msgstr "%3$L处带有 PASS(%2$s)的过程指针组件‘%1$s’没有参数‘%4$s’" + + #: fortran/primary.c:1996 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Coindexed procedure-pointer component at %C" +-msgstr "%C处过程指针组件语法错误" ++msgstr "Fortran 2003:%C处的过程指针组件" + + #: fortran/primary.c:2245 + #, gcc-internal-format, gfc-internal-format +@@ -38264,7 +38206,7 @@ msgstr "元素过程的实参‘%s’在%L处必须是标量" + #: fortran/resolve.c:400 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Argument '%s' of elemental procedure at %L cannot have the ALLOCATABLE attribute" +-msgstr "%2$L处基本过程的参数‘%1$s’不能有 POINTER 属性" ++msgstr "在 %2$L 处基本过程的参数“%1$s”不能有 POINTER 属性" + + #: fortran/resolve.c:408 + #, gcc-internal-format, gfc-internal-format +@@ -38279,7 +38221,7 @@ msgstr "%3$L处哑过程‘%1$s’不能出现在基本过程‘%2$s’中" + #: fortran/resolve.c:424 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Argument '%s' of elemental procedure '%s' at %L must have its INTENT specified" +-msgstr "%3$L处纯子进程‘%2$s’的参数‘%1$s’必须指定其 INTENT" ++msgstr "在 %3$L 处的纯的子例程“%2$s”的参数“%1$s”必须有它的 INTENT 指定符" + + #: fortran/resolve.c:436 + #, gcc-internal-format, gfc-internal-format +@@ -38424,7 +38366,7 @@ msgstr "%2$L处‘%1$s’的传递对象虚参不能是 ALLOCATABLE" + #: fortran/resolve.c:1144 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Pointer initialization target at %L must have the SAVE attribute" +-msgstr "%C处的组件必须有 POINTER 属性" ++msgstr "%2$L 处的对象“%1$s”对于成分的默认初始化必须有 SAVE 属性," + + #: fortran/resolve.c:1155 + #, gcc-internal-format, gfc-internal-format +@@ -38544,7 +38486,7 @@ msgstr "%2$L处实参‘%1$s’秩不匹配(%3$d 和 %4$d)" + #: fortran/resolve.c:2106 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Return type mismatch of function '%s' at %L (%s/%s)" +-msgstr "%2$L处函数‘%1$s’的返回值没有设置" ++msgstr "函数不能返回函数" + + #: fortran/resolve.c:2125 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -38589,12 +38531,12 @@ msgstr "%2$L处的不定长字符长度函数‘%1$s’必须有一个显式的 + #: fortran/resolve.c:2207 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "ELEMENTAL procedure '%s' at %L must have an explicit interface" +-msgstr "%3$L处 %2$s 中的过程‘%1$s’没有显式接口" ++msgstr "在 %3$L 处过程“%2$s”的接口“%1$s”必须是显式的" + + #: fortran/resolve.c:2214 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Procedure '%s' at %L with BIND(C) attribute must have an explicit interface" +-msgstr "%2$L处的过程‘%1$s’必须有属性才能与 C 互操作" ++msgstr "“%s”是必须是一个模块过程或有显式接口的外部过程于 %L 处" + + #: fortran/resolve.c:2314 + #, gcc-internal-format, gfc-internal-format +@@ -38639,17 +38581,17 @@ msgstr "%3$L处‘%2$s’的参数‘%1$s’必须是一个 TARGET 或者相关 + #: fortran/resolve.c:2736 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Coindexed argument not permitted in '%s' call at %L" +-msgstr "指针不能用作 case 常量" ++msgstr "%3$L 处对“%2$s”的调用中参数“%1$s”的类型应该是“%1$s”,而非“%1$s”" + + #: fortran/resolve.c:2759 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Array section not permitted in '%s' call at %L" +-msgstr "%2$L处‘%1$s’调用过程时实参比形参多" ++msgstr "在 %L 处的推迟数组“%1$s”在初始化表达式中不被允许" + + #: fortran/resolve.c:2770 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Array section in '%s' call at %L" +-msgstr "函数名‘%s’不允许出现在%C处" ++msgstr "%L 处 DATA 语句中有非常量数组部分" + + #: fortran/resolve.c:2789 + #, gcc-internal-format, gfc-internal-format +@@ -38686,7 +38628,7 @@ msgstr "%3$L处‘%2$s’的形参‘%1$s’必须是一个标量" + #: fortran/resolve.c:2884 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Parameter '%s' to '%s' at %L must not be polymorphic" +-msgstr "%3$L处‘%2$s’的形参‘%1$s’必须是一个标量" ++msgstr "%L处赋值中的变量类型不能是多态的" + + #. TODO: Update this error message to allow for procedure + #. pointers once they are implemented. +@@ -38799,7 +38741,7 @@ msgstr "%2$L处 SUBROUTINE‘%1$s’不能递归调用,因为它并非 RECURSI + #: fortran/resolve.c:3669 + #, gcc-internal-format, gfc-internal-format + msgid "Shapes for operands at %L and %L are not conformable" +-msgstr "%L 和%L处的操作数外形不相容" ++msgstr "%L和%L处的操作数外形不相容" + + #: fortran/resolve.c:4167 + #, gcc-internal-format, gfc-internal-format +@@ -38819,7 +38761,7 @@ msgstr "%1$L处数组引用在第 %4$d 维中越界(%2$ld > %3$ld)" + #: fortran/resolve.c:4187 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d" +-msgstr "%1$L处数组引用在第 %4$d 维中越界(%2$ld > %3$ld)" ++msgstr "%1$L处数组引用在第 %4$d 维中越界(%2$ld < %3$ld)" + + #: fortran/resolve.c:4207 + #, gcc-internal-format, gfc-internal-format +@@ -38864,7 +38806,7 @@ msgstr "%L处数组引用中秩不匹配(%d/%d)" + #: fortran/resolve.c:4329 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Coindex of codimension %d must be a scalar at %L" +-msgstr "%2$L处第 %1$d 维下标越界" ++msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是一个标量" + + #: fortran/resolve.c:4357 + #, gcc-internal-format, gfc-internal-format +@@ -38957,9 +38899,9 @@ msgid "Variable '%s' is used at %L before the ENTRY statement in which it is a p + msgstr "变量‘%s’在%L处的使用出现在该变量是其参数的 ENTRY 语句之前" + + #: fortran/resolve.c:5118 +-#, gcc-internal-format, gfc-internal-format ++#, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Polymorphic subobject of coindexed object at %L" +-msgstr "" ++msgstr "%2$L处非多态的传递对象哑元实参‘%1$s’" + + #: fortran/resolve.c:5131 + #, gcc-internal-format, gfc-internal-format +@@ -39078,9 +39020,9 @@ msgid "Source-expr at %L and allocate-object at %L must have the same shape" + msgstr "%L处的源表达式和%L处的分配对象必须有相同的外形" + + #: fortran/resolve.c:6699 +-#, gcc-internal-format, gfc-internal-format ++#, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Coindexed allocatable object at %L" +-msgstr "" ++msgstr "%3$L 处“%1$s”分句对象“%2$s”有 ALLOCATABLE 组件" + + #: fortran/resolve.c:6744 + #, gcc-internal-format, gfc-internal-format +@@ -39105,7 +39047,7 @@ msgstr "%L处的 ALLOCATE 语句中需要数组规格说明" + #: fortran/resolve.c:6853 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Coarray specification required in ALLOCATE statement at %L" +-msgstr "%L处的 ALLOCATE 语句中需要数组规格说明" ++msgstr "%L 处的 ALLOCATE 语句中要求的数组规格说明" + + #: fortran/resolve.c:6879 + #, gcc-internal-format, gfc-internal-format +@@ -39120,12 +39062,12 @@ msgstr "‘%s’不能出现在%L处其自身被分配的 ALLOCATE 语句的数 + #: fortran/resolve.c:6913 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Expected '*' in coindex specification in ALLOCATE statement at %L" +-msgstr "%L处的 ALLOCATE 语句中有错误的数组规格" ++msgstr "%L 处的 ALLOCATE 语句中要求的数组规格说明" + + #: fortran/resolve.c:6924 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Bad coarray specification in ALLOCATE statement at %L" +-msgstr "%L处的 ALLOCATE 语句中有错误的数组规格" ++msgstr "%L 处的 ALLOCATE 语句中坏的数组规格说明" + + #: fortran/resolve.c:6931 + #, gcc-internal-format, gfc-internal-format +@@ -39165,7 +39107,7 @@ msgstr "%L处分配的对象也出现在%L处" + #: fortran/resolve.c:7064 fortran/resolve.c:7070 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Allocate-object at %L is subobject of object at %L" +-msgstr "%L处分配的对象也出现在%L处" ++msgstr "%2$L 处对象“%1$s”不是一个变量" + + #. The cases overlap, or they are the same + #. element in the list. Either way, we must +@@ -39209,7 +39151,7 @@ msgstr "%L处 SELECT 语句中的实参必须为标量" + #: fortran/resolve.c:7432 fortran/resolve.c:7440 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Expression in CASE statement at %L is not in the range of %s" +-msgstr "%L处 CASE 语句中的表达式必须具有 %s 类型" ++msgstr "%L 处 CASE 语句中的逻辑范围是不被允许的" + + #: fortran/resolve.c:7502 fortran/resolve.c:7808 + #, gcc-internal-format, gfc-internal-format +@@ -39224,7 +39166,7 @@ msgstr "%L处 CASE 语句中的逻辑范围是不被允许的" + #: fortran/resolve.c:7540 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Constant logical value in CASE statement is repeated at %L" +-msgstr "%L处 CASE 语句中的常量逻辑值重复" ++msgstr "%L 处 CASE 语句中的常量逻辑值被重复了" + + #: fortran/resolve.c:7554 + #, gcc-internal-format, gfc-internal-format +@@ -39239,7 +39181,7 @@ msgstr "%L处逻辑 SELECT CASE 块有多于两个的情况" + #: fortran/resolve.c:7721 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Associate-name '%s' at %L is used as array" +-msgstr "%2$L处的名字‘%1$s’已经在%4$L处被用作 %3$s" ++msgstr "%2$L 处的名字“%1$s”已经在 %4$L 处被用作 %3$s" + + #: fortran/resolve.c:7763 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -39385,7 +39327,7 @@ msgstr "CHARACTER 表达式在%3$L处赋值时将被截断(%1$d/%2$d)" + #: fortran/resolve.c:8865 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Coindexed expression at %L is assigned to a derived type variable with a POINTER component in a PURE procedure" +-msgstr "%L处一个非纯变量在 PURE 过程中被赋值给带有 POINTER 组件派生类型变量(12.6)" ++msgstr "在 %L 处 impure 变量被赋值到一个 PURE 过程(12.6)中的 POINTER 组件的派生类型变量" + + #: fortran/resolve.c:8870 + #, gcc-internal-format, gfc-internal-format +@@ -39395,7 +39337,7 @@ msgstr "%L处一个非纯变量在 PURE 过程中被赋值给带有 POINTER 组 + #: fortran/resolve.c:8880 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Assignment to coindexed variable at %L in a PURE procedure" +-msgstr "%L处向 FORALL 索引变量赋值" ++msgstr "不能在%2$C处的 PURE 过程中读取变量‘%1$s’" + + #: fortran/resolve.c:8911 + #, gcc-internal-format, gfc-internal-format +@@ -39996,7 +39938,7 @@ msgstr "%2$L处具有 CLASS 的组件‘%1$s’必须是可分配的或指针" + #: fortran/resolve.c:11771 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed" +-msgstr "%3$C处名字列表‘%2$s’中的假定大小数组‘%1$s’不被允许" ++msgstr "不允许 %3$L 处 %2$s 名字列表中假定大小的数组“%1$s”" + + #: fortran/resolve.c:11777 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -40068,12 +40010,12 @@ msgstr "%L处 PARAMETER 中派生类型不兼容" + #: fortran/resolve.c:12000 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L" +-msgstr "PROCEDURE 属性与%2$L处‘%1$s’中的 INTENT 属性冲突" ++msgstr "EXTERNAL 属性与在%2$L处‘%1$s’中的 FUNCTION 属性冲突" + + #: fortran/resolve.c:12003 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L" +-msgstr "PROCEDURE 属性与%2$L处‘%1$s’中的 INTENT 属性冲突" ++msgstr "PROCEDURE 属性与在 %2$L 处“%1$s”中的 SAVE 属性冲突" + + #: fortran/resolve.c:12015 + #, gcc-internal-format, gfc-internal-format +@@ -40158,7 +40100,7 @@ msgstr "数组‘%s’在%L处不能有延迟的外形" + #: fortran/resolve.c:12313 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Allocatable coarray variable '%s' at %L must have deferred shape" +-msgstr "可分配的数组‘%s’在%L处必须有延迟的外形" ++msgstr "%C处可分配的组件必须有延迟的外形" + + #: fortran/resolve.c:12321 + #, gcc-internal-format, gfc-internal-format +@@ -40188,7 +40130,7 @@ msgstr "%2$L处 BLOCK DATA 元素‘%1$s’必在前一个声明中指定" + #: fortran/resolve.c:12511 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "DATA element '%s' at %L cannot have a coindex" +-msgstr "哑元‘%s’在%L处不能有初始值设定" ++msgstr "%2$L 处数据传输元素不能有 PRIVATE 组件" + + #: fortran/resolve.c:12520 + #, gcc-internal-format, gfc-internal-format +@@ -40463,7 +40405,7 @@ msgstr "NEAREST 的结果在%L处为 NaN" + #: fortran/simplify.c:1903 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Invalid SHIFT argument of DSHIFTL at %L" +-msgstr "%L处 ISHFT 的第二个参数无效" ++msgstr "%L处 IBCLR 的第二个参数无效" + + #: fortran/simplify.c:2429 + #, gcc-internal-format, gfc-internal-format +@@ -40524,12 +40466,12 @@ msgstr "%L处 IBCLR 的第二个参数无效" + #: fortran/simplify.c:3026 fortran/simplify.c:3034 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Second argument of %s is negative at %L" +-msgstr "%L处 IBCLR 的第二个参数超过位大小" ++msgstr "%2$L 处的 %1$s 函数的参数是负的" + + #: fortran/simplify.c:3046 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "Magnitude of second argument of %s exceeds bit size at %L" +-msgstr "%L处 ISHFT 的第二个参数大小超过位大小" ++msgstr "%L 处 ISHFTC 的第二个参数大小超过比特的大小" + + #: fortran/simplify.c:3150 + #, gcc-internal-format, gfc-internal-format +@@ -40782,7 +40724,7 @@ msgstr "%L 处 ALLOCATABLE 指定在 INTERFACE 体之外" + #: fortran/symbol.c:904 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "CODIMENSION specified for '%s' outside its INTERFACE body at %L" +-msgstr "%2$L处为‘%1$s’的 DIMENSION 指定在其 INTERFACE 体之外" ++msgstr "为“%s”规定的 DIMENSION 在 %L 处它的 INTERFACE 主体外面" + + #: fortran/symbol.c:930 + #, gcc-internal-format, gfc-internal-format +@@ -41477,7 +41419,7 @@ msgstr "不使用‘--main’则无法指定‘-D’\n" + #: java/jvspec.c:399 + #, fuzzy, gcc-internal-format + msgid "%qs is not a valid class name" +-msgstr "‘%s’不是有效的类名" ++msgstr "%qs不是一个有效的输出文件" + + #: java/jvspec.c:405 + #, gcc-internal-format +@@ -41565,9 +41507,9 @@ msgid "-fwpa and -fltrans are mutually exclusive" + msgstr "-fwpa 和 -fltrans 互斥" + + #: lto/lto-object.c:112 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "open %s failed: %s" +-msgstr "pex_init 失败:%s" ++msgstr "打开 %s 失败:%s" + + #: lto/lto-object.c:153 lto/lto-object.c:186 lto/lto-object.c:271 + #: lto/lto-object.c:328 lto/lto-object.c:352 +@@ -41576,24 +41518,24 @@ msgid "%s: %s" + msgstr "%s:%s" + + #: lto/lto-object.c:155 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "%s: %s: %s" +-msgstr "%s:%s" ++msgstr "%s:%s:%s" + + #: lto/lto-object.c:195 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "close: %s" +-msgstr "fclose %s" ++msgstr "close:%s" + + #: lto/lto-object.c:240 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "two or more sections for %s" +-msgstr "%s 有两个以上的节:" ++msgstr "%s 的两个以上的节" + + #: lto/lto.c:161 + #, fuzzy, gcc-internal-format, gfc-internal-format + msgid "%s: section %s is missing" +-msgstr "‘-%s’缺少参数" ++msgstr "‘-l’缺少实参" + + #: lto/lto.c:293 + #, gcc-internal-format +@@ -41716,9 +41658,9 @@ msgid "%<@end%> must appear in an @implementation context" + msgstr "%<@end%>必须出现在 @implementation 上下文中" + + #: objc/objc-act.c:721 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "%<@package%> is not available in Objective-C 1.0" +-msgstr "" ++msgstr "%qs在 VLIW 函数中不可用" + + #: objc/objc-act.c:723 + #, gcc-internal-format +@@ -41726,14 +41668,14 @@ msgid "%<@package%> presently has the same effect as %<@public%>" + msgstr "" + + #: objc/objc-act.c:734 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "%<@optional%> is not available in Objective-C 1.0" +-msgstr "" ++msgstr "%qs在 VLIW 函数中不可用" + + #: objc/objc-act.c:736 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "%<@required%> is not available in Objective-C 1.0" +-msgstr "" ++msgstr "%qs在 VLIW 函数中不可用" + + #: objc/objc-act.c:744 + #, gcc-internal-format +@@ -41746,34 +41688,34 @@ msgid "%<@required%> is allowed in @protocol context only" + msgstr "" + + #: objc/objc-act.c:853 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "%<@property%> is not available in Objective-C 1.0" +-msgstr "" ++msgstr "%qs在 VLIW 函数中不可用" + + #: objc/objc-act.c:857 + #, fuzzy, gcc-internal-format + msgid "%<readonly%> attribute conflicts with %<readwrite%> attribute" +-msgstr "%s 属性与 %s 属性在%L处冲突" ++msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" + + #: objc/objc-act.c:874 + #, fuzzy, gcc-internal-format + msgid "%<readonly%> attribute conflicts with %<setter%> attribute" +-msgstr "%s 属性与 %s 属性在%L处冲突" ++msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" + + #: objc/objc-act.c:880 + #, fuzzy, gcc-internal-format + msgid "%<assign%> attribute conflicts with %<retain%> attribute" +-msgstr "%s 属性与 %s 属性在%L处冲突" ++msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" + + #: objc/objc-act.c:885 + #, fuzzy, gcc-internal-format + msgid "%<assign%> attribute conflicts with %<copy%> attribute" +-msgstr "%s 属性与 %s 属性在%L处冲突" ++msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" + + #: objc/objc-act.c:890 + #, fuzzy, gcc-internal-format + msgid "%<retain%> attribute conflicts with %<copy%> attribute" +-msgstr "%s 属性与 %s 属性在%L处冲突" ++msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" + + #: objc/objc-act.c:907 + #, fuzzy, gcc-internal-format +@@ -41788,7 +41730,7 @@ msgstr "无效的函数声明" + #: objc/objc-act.c:926 + #, fuzzy, gcc-internal-format + msgid "property can not be an array" +-msgstr "%L处的外部 IO UNIT 不能是数组" ++msgstr "数组大小不能确定" + + #. A @property is not an actual variable, but it is a way to + #. describe a pair of accessor methods, so its type (which is +@@ -41825,14 +41767,14 @@ msgstr "" + #: objc/objc-act.c:1044 + #, fuzzy, gcc-internal-format + msgid "redeclaration of property %qD" +-msgstr "%q#D重声明" ++msgstr "%qD已在此声明过" + + #: objc/objc-act.c:1047 objc/objc-act.c:1112 objc/objc-act.c:1122 + #: objc/objc-act.c:1135 objc/objc-act.c:1146 objc/objc-act.c:1157 + #: objc/objc-act.c:1194 objc/objc-act.c:7315 objc/objc-act.c:7378 + #: objc/objc-act.c:7400 objc/objc-act.c:7413 objc/objc-act.c:7431 + #: objc/objc-act.c:7530 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "originally specified here" + msgstr "原先在这里定义" + +@@ -41875,20 +41817,20 @@ msgstr "" + #. parser won't call this function if it is not. This is only a + #. double-check for safety. + #: objc/objc-act.c:1681 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "could not find class %qE" + msgstr "找不到类%qE" + + #. Again, this should never happen, but we do check. + #: objc/objc-act.c:1689 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "could not find interface for class %qE" +-msgstr "找不到类%qE的引用标记" ++msgstr "找不到类%qE的接口" + + #: objc/objc-act.c:1695 objc/objc-act.c:6583 objc/objc-act.c:6714 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "class %qE is deprecated" +-msgstr "不建议使用%qE" ++msgstr "不建议使用类%qE" + + #: objc/objc-act.c:1724 + #, fuzzy, gcc-internal-format +@@ -41898,7 +41840,7 @@ msgstr "找不到类%qE的引用标记" + #: objc/objc-act.c:1760 + #, gcc-internal-format + msgid "readonly property can not be set" +-msgstr "" ++msgstr "不能设置只读属性" + + #. PS: At the moment, due to how the parser works, it should be + #. impossible to get here. But it's good to have the check in +@@ -41967,7 +41909,7 @@ msgstr "静态分配的 Objective-C 类%qE的实例" + #: objc/objc-act.c:2725 + #, fuzzy, gcc-internal-format + msgid "redeclaration of Objective-C class %qs" +-msgstr "%<wchar_t%>重声明为%qT" ++msgstr "为%qs指定了存储类" + + #. This case happens when we are given an 'interface' which + #. is not a valid class name. For example if a typedef was +@@ -42096,17 +42038,17 @@ msgstr "在 @catch 块外使用%<@throw%>(rethrow)" + #: objc/objc-act.c:4117 + #, fuzzy, gcc-internal-format + msgid "%<@throw%> argument is not an object" +-msgstr "实参%qd不是一个常数" ++msgstr "%2$L 处对象“%1$s”不是一个变量" + + #: objc/objc-act.c:4138 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "%<@synchronized%> argument is not an object" +-msgstr "" ++msgstr "%2$L 处对象“%1$s”不是一个变量" + + #: objc/objc-act.c:4273 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "type %qT does not have a known size" +-msgstr "类型%q+D大小未知" ++msgstr "类型%qT大小未知" + + #: objc/objc-act.c:4450 + #, gcc-internal-format +@@ -42225,12 +42167,12 @@ msgstr "" + #: objc/objc-act.c:5768 + #, fuzzy, gcc-internal-format + msgid "previous declaration of %<%c%E%> as %<@required%>" +-msgstr "%<%c%s%>的上一个声明" ++msgstr "%q+D早先被声明为%q#D" + + #: objc/objc-act.c:5788 + #, fuzzy, gcc-internal-format + msgid "previous declaration of %<%c%E%> as %<@optional%>" +-msgstr "%<%c%s%>的上一个声明" ++msgstr "%q+D早先被声明为%q#D" + + #: objc/objc-act.c:5848 + #, fuzzy, gcc-internal-format +@@ -42240,7 +42182,7 @@ msgstr "方法%<%c%E%>的声明重复" + #: objc/objc-act.c:5852 + #, fuzzy, gcc-internal-format + msgid "previous declaration of %<%c%E%>" +-msgstr "%<%c%s%>的上一个声明" ++msgstr "%q+D的前一个声明" + + #: objc/objc-act.c:5914 + #, gcc-internal-format +@@ -42416,9 +42358,9 @@ msgid "property %qs is using the same instance variable as property %qs" + msgstr "" + + #: objc/objc-act.c:7467 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "%<@synthesize%> is not available in Objective-C 1.0" +-msgstr "" ++msgstr "%qs在 VLIW 函数中不可用" + + #. We can get here only in Objective-C; the Objective-C++ parser + #. detects the problem while parsing, outputs the error +@@ -42427,7 +42369,7 @@ msgstr "" + #: objc/objc-act.c:7478 + #, fuzzy, gcc-internal-format + msgid "%<@synthesize%> not in @implementation context" +-msgstr "实现上下文中缺少%<@end%>" ++msgstr "方法定义不在 @implementation 上下文中" + + #: objc/objc-act.c:7484 + #, fuzzy, gcc-internal-format +@@ -42440,9 +42382,9 @@ msgid "%<@synthesize%> requires the @interface of the class to be available" + msgstr "" + + #: objc/objc-act.c:7576 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "%<@dynamic%> is not available in Objective-C 1.0" +-msgstr "" ++msgstr "%qs在 VLIW 函数中不可用" + + #. We can get here only in Objective-C; the Objective-C++ parser + #. detects the problem while parsing, outputs the error +@@ -42451,7 +42393,7 @@ msgstr "" + #: objc/objc-act.c:7587 + #, fuzzy, gcc-internal-format + msgid "%<@dynamic%> not in @implementation context" +-msgstr "实现上下文中缺少%<@end%>" ++msgstr "方法定义不在 @implementation 上下文中" + + #: objc/objc-act.c:7609 + #, gcc-internal-format +@@ -42459,9 +42401,9 @@ msgid "%<@dynamic%> requires the @interface of the class to be available" + msgstr "" + + #: objc/objc-act.c:7807 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "definition of protocol %qE not found" +-msgstr "找不到%<%c%E%>的方法定义" ++msgstr "找不到协议%qE的方法定义" + + #. It would be nice to use warn_deprecated_use() here, but + #. we are using TREE_CHAIN (which is supposed to be the +@@ -42469,7 +42411,7 @@ msgstr "找不到%<%c%E%>的方法定义" + #: objc/objc-act.c:7838 + #, fuzzy, gcc-internal-format + msgid "protocol %qE is deprecated" +-msgstr "不建议使用%qE" ++msgstr "不建议使用%qE(声明于 %s:%d):%s" + + #: objc/objc-act.c:7962 + #, gcc-internal-format +@@ -42548,12 +42490,12 @@ msgstr "" + #: objc/objc-gnu-runtime-abi-01.c:129 + #, gcc-internal-format + msgid "%<-fobjc-gc%> is ignored for %<-fgnu-runtime%>" +-msgstr "" ++msgstr "%<-fobjc-gc%>为%<-fgnu-runtime%>所忽略" + + #: objc/objc-gnu-runtime-abi-01.c:137 + #, gcc-internal-format + msgid "%<-fobjc-sjlj-exceptions%> is ignored for %<-fgnu-runtime%>" +-msgstr "" ++msgstr "%<-fobjc-sjlj-exceptions%>为%<-fgnu-runtime%>所忽略" + + #: objc/objc-gnu-runtime-abi-01.c:2168 objc/objc-next-runtime-abi-01.c:2848 + #: objc/objc-next-runtime-abi-02.c:3636 +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0266-config-i386-i386.md-movxf_internal-Disable-CONST_DOU.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0266-config-i386-i386.md-movxf_internal-Disable-CONST_DOU.patch new file mode 100644 index 000000000..0318cf413 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0266-config-i386-i386.md-movxf_internal-Disable-CONST_DOU.patch @@ -0,0 +1,127 @@ +From da3b2b8ec5f3057e53934d825ff46f5f20be7362 Mon Sep 17 00:00:00 2001 +From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 16 May 2011 20:29:20 +0000 +Subject: [PATCH] * config/i386/i386.md (*movxf_internal): Disable CONST_DOUBLE + optimization for CM_MEDIUM and CM_LARGE code models. Fix usage + of standard_80387_constant_p. + (*movxf_internal_nointeger): Ditto. + (*movdf_internal): Remove dead code-size optimization. + (*movdf_internal_rex64): Fix usage of standard_80387_constant_p. + (*movdf_internal_nointeger): Ditto. + (*movsf_internal): Ditto. + (floating point move splitters): Ditto. + * config/i386/constraints.md (G): Ditto. + * config/i386/i386.c (ix86_preferred_reload_class): Ditto. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173803 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 89722bb..4bc3ed6 100644 +--- a/gcc/config/i386/constraints.md ++++ b/gcc/config/i386/constraints.md +@@ -149,7 +149,7 @@ + (define_constraint "G" + "Standard 80387 floating point constant." + (and (match_code "const_double") +- (match_test "standard_80387_constant_p (op)"))) ++ (match_test "standard_80387_constant_p (op) > 0"))) + + ;; This can theoretically be any mode's CONST0_RTX. + (define_constraint "C" +diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c +index e8210c5..e8b9af5 100644 +--- a/gcc/config/i386/i386.c ++++ b/gcc/config/i386/i386.c +@@ -28252,7 +28252,7 @@ ix86_preferred_reload_class (rtx x, reg_class_t regclass) + zero above. We only want to wind up preferring 80387 registers if + we plan on doing computation with them. */ + if (TARGET_80387 +- && standard_80387_constant_p (x)) ++ && standard_80387_constant_p (x) > 0) + { + /* Limit class to non-sse. */ + if (regclass == FLOAT_SSE_REGS) +diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md +index 9db8a74..3bfa0b3 100644 +--- a/gcc/config/i386/i386.md ++++ b/gcc/config/i386/i386.md +@@ -2836,6 +2836,7 @@ + "optimize_function_for_speed_p (cfun) + && !(MEM_P (operands[0]) && MEM_P (operands[1])) + && (reload_in_progress || reload_completed ++ || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], XFmode))" + { +@@ -2865,7 +2866,8 @@ + "optimize_function_for_size_p (cfun) + && !(MEM_P (operands[0]) && MEM_P (operands[1])) + && (reload_in_progress || reload_completed +- || standard_80387_constant_p (operands[1]) ++ || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) ++ || standard_80387_constant_p (operands[1]) > 0 + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], XFmode))" + { +@@ -2911,7 +2913,7 @@ + || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || (!(TARGET_SSE2 && TARGET_SSE_MATH) + && optimize_function_for_size_p (cfun) +- && standard_80387_constant_p (operands[1])) ++ && standard_80387_constant_p (operands[1]) > 0) + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], DFmode))" + { +@@ -3078,9 +3080,6 @@ + && TARGET_INTEGER_DFMODE_MOVES + && (reload_in_progress || reload_completed + || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) +- || (!(TARGET_SSE2 && TARGET_SSE_MATH) +- && optimize_function_for_size_p (cfun) +- && standard_80387_constant_p (operands[1])) + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], DFmode))" + { +@@ -3249,11 +3248,10 @@ + || (!(TARGET_SSE2 && TARGET_SSE_MATH) + && optimize_function_for_size_p (cfun) + && !memory_operand (operands[0], DFmode) +- && standard_80387_constant_p (operands[1])) ++ && standard_80387_constant_p (operands[1]) > 0) + || GET_CODE (operands[1]) != CONST_DOUBLE + || ((optimize_function_for_size_p (cfun) +- || !TARGET_MEMORY_MISMATCH_STALL +- || reload_in_progress || reload_completed) ++ || !TARGET_MEMORY_MISMATCH_STALL) + && memory_operand (operands[0], DFmode)))" + { + switch (which_alternative) +@@ -3427,7 +3425,7 @@ + && (reload_in_progress || reload_completed + || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || (!TARGET_SSE_MATH && optimize_function_for_size_p (cfun) +- && standard_80387_constant_p (operands[1])) ++ && standard_80387_constant_p (operands[1]) > 0) + || GET_CODE (operands[1]) != CONST_DOUBLE + || memory_operand (operands[0], SFmode))" + { +@@ -3540,7 +3538,7 @@ + } + else if (FP_REG_P (r)) + { +- if (!standard_80387_constant_p (c)) ++ if (standard_80387_constant_p (c) < 1) + FAIL; + } + else if (MMX_REG_P (r)) +@@ -3572,7 +3570,7 @@ + } + else if (FP_REG_P (r)) + { +- if (!standard_80387_constant_p (c)) ++ if (standard_80387_constant_p (c) < 1) + FAIL; + } + else if (MMX_REG_P (r)) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0267-PR-preprocessor-48677.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0267-PR-preprocessor-48677.patch new file mode 100644 index 000000000..17a39be74 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0267-PR-preprocessor-48677.patch @@ -0,0 +1,31 @@ +From 90795f71b3541c8017e573718515769080f8237d Mon Sep 17 00:00:00 2001 +From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 16 May 2011 21:23:14 +0000 +Subject: [PATCH] PR preprocessor/48677 + * cppspec.c (lang_specific_driver): Set new_decoded_options[0] + from decoded_options[0], not from itself. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173808 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 6ca1660..c9ff70e 100644 +--- a/gcc/cppspec.c ++++ b/gcc/cppspec.c +@@ -1,5 +1,5 @@ + /* Specific flags and argument handling of the C preprocessor. +- Copyright (C) 1999, 2007, 2010 Free Software Foundation, Inc. ++ Copyright (C) 1999, 2007, 2010, 2011 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -158,7 +158,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, + + new_decoded_options = XNEWVEC (struct cl_decoded_option, new_argc); + +- new_decoded_options[0] = new_decoded_options[0]; ++ new_decoded_options[0] = decoded_options[0]; + j = 1; + + if (need_E) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0269-PR-target-48986.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0269-PR-target-48986.patch new file mode 100644 index 000000000..8e20e6eea --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0269-PR-target-48986.patch @@ -0,0 +1,40 @@ +From 56cf6a6c3274fd4af2ccfc2ca019904d873d30fe Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 17 May 2011 07:42:30 +0000 +Subject: [PATCH] PR target/48986 + * config/i386/sync.md (sync_old_add<mode>): Relax operand 2 + predicate to allow CONST_INT. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173817 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 22f3648..3fdfee2 100644 +--- a/gcc/config/i386/sync.md ++++ b/gcc/config/i386/sync.md +@@ -1,5 +1,5 @@ + ;; GCC machine description for i386 synchronization instructions. +-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 ++;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 + ;; Free Software Foundation, Inc. + ;; + ;; This file is part of GCC. +@@ -164,13 +164,16 @@ + "!TARGET_64BIT && TARGET_CMPXCHG8B && flag_pic" + "xchg{l}\t%%ebx, %3\;lock{%;} cmpxchg8b\t%1\;xchg{l}\t%%ebx, %3") + ++;; For operand 2 nonmemory_operand predicate is used instead of ++;; register_operand to allow combiner to better optimize atomic ++;; additions of constants. + (define_insn "sync_old_add<mode>" + [(set (match_operand:SWI 0 "register_operand" "=<r>") + (unspec_volatile:SWI + [(match_operand:SWI 1 "memory_operand" "+m")] UNSPECV_XCHG)) + (set (match_dup 1) + (plus:SWI (match_dup 1) +- (match_operand:SWI 2 "register_operand" "0"))) ++ (match_operand:SWI 2 "nonmemory_operand" "0"))) + (clobber (reg:CC FLAGS_REG))] + "TARGET_XADD" + "lock{%;} xadd{<imodesuffix>}\t{%0, %1|%1, %0}") +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0270-config-rx-rx.md-Add-peephole-to-remove-redundant-ext.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0270-config-rx-rx.md-Add-peephole-to-remove-redundant-ext.patch new file mode 100644 index 000000000..4e133ff66 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0270-config-rx-rx.md-Add-peephole-to-remove-redundant-ext.patch @@ -0,0 +1,126 @@ +From ad1e75ff0d2af88f3845d34f3f944a9211f7d9ec Mon Sep 17 00:00:00 2001 +From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 17 May 2011 08:46:51 +0000 +Subject: [PATCH] * config/rx/rx.md: Add peephole to remove redundant extensions + after loads. + (bitset_in_memory): Use rx_restricted_mem_operand. + (bitinvert_in_memory): Likewise. + (bitclr_in_memory): Likewise. + + * config/rx/rx.md: Add peepholes to match a register move followed + by a comparison of the moved register. Replace these with an + addition of zero that does both actions in one instruction. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173823 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 641f1d4..742c0f9 100644 +--- a/gcc/config/rx/rx.md ++++ b/gcc/config/rx/rx.md +@@ -904,6 +904,39 @@ + (set_attr "length" "3,4,5,6,7,6")] + ) + ++;; Peepholes to match: ++;; (set (reg A) (reg B)) ++;; (set (CC) (compare:CC (reg A/reg B) (const_int 0))) ++;; and replace them with the addsi3_flags pattern, using an add ++;; of zero to copy the register and set the condition code bits. ++(define_peephole2 ++ [(set (match_operand:SI 0 "register_operand") ++ (match_operand:SI 1 "register_operand")) ++ (set (reg:CC CC_REG) ++ (compare:CC (match_dup 0) ++ (const_int 0)))] ++ "" ++ [(parallel [(set (match_dup 0) ++ (plus:SI (match_dup 1) (const_int 0))) ++ (set (reg:CC_ZSC CC_REG) ++ (compare:CC_ZSC (plus:SI (match_dup 1) (const_int 0)) ++ (const_int 0)))])] ++) ++ ++(define_peephole2 ++ [(set (match_operand:SI 0 "register_operand") ++ (match_operand:SI 1 "register_operand")) ++ (set (reg:CC CC_REG) ++ (compare:CC (match_dup 1) ++ (const_int 0)))] ++ "" ++ [(parallel [(set (match_dup 0) ++ (plus:SI (match_dup 1) (const_int 0))) ++ (set (reg:CC_ZSC CC_REG) ++ (compare:CC_ZSC (plus:SI (match_dup 1) (const_int 0)) ++ (const_int 0)))])] ++) ++ + (define_expand "adddi3" + [(set (match_operand:DI 0 "register_operand") + (plus:DI (match_operand:DI 1 "register_operand") +@@ -1668,6 +1701,35 @@ + (extend_types:SI (match_dup 1))))] + ) + ++;; Convert: ++;; (set (reg1) (sign_extend (mem)) ++;; (set (reg2) (zero_extend (reg1)) ++;; into ++;; (set (reg2) (zero_extend (mem))) ++(define_peephole2 ++ [(set (match_operand:SI 0 "register_operand") ++ (sign_extend:SI (match_operand:small_int_modes 1 "memory_operand"))) ++ (set (match_operand:SI 2 "register_operand") ++ (zero_extend:SI (match_operand:small_int_modes 3 "register_operand")))] ++ "REGNO (operands[0]) == REGNO (operands[3]) ++ && (REGNO (operands[0]) == REGNO (operands[2]) ++ || peep2_regno_dead_p (2, REGNO (operands[0])))" ++ [(set (match_dup 2) ++ (zero_extend:SI (match_dup 1)))] ++) ++ ++;; Remove the redundant sign extension from: ++;; (set (reg) (extend (mem))) ++;; (set (reg) (extend (reg))) ++(define_peephole2 ++ [(set (match_operand:SI 0 "register_operand") ++ (extend_types:SI (match_operand:small_int_modes 1 "memory_operand"))) ++ (set (match_dup 0) ++ (extend_types:SI (match_operand:small_int_modes 2 "register_operand")))] ++ "REGNO (operands[0]) == REGNO (operands[2])" ++ [(set (match_dup 0) (extend_types:SI (match_dup 1)))] ++) ++ + (define_insn "*comparesi3_<extend_types:code><small_int_modes:mode>" + [(set (reg:CC CC_REG) + (compare:CC (match_operand:SI 0 "register_operand" "=r") +@@ -1769,7 +1831,7 @@ + ) + + (define_insn "*bitset_in_memory" +- [(set (match_operand:QI 0 "memory_operand" "+Q") ++ [(set (match_operand:QI 0 "rx_restricted_mem_operand" "+Q") + (ior:QI (ashift:QI (const_int 1) + (match_operand:QI 1 "nonmemory_operand" "ri")) + (match_dup 0)))] +@@ -1790,7 +1852,7 @@ + ) + + (define_insn "*bitinvert_in_memory" +- [(set (match_operand:QI 0 "memory_operand" "+Q") ++ [(set (match_operand:QI 0 "rx_restricted_mem_operand" "+Q") + (xor:QI (ashift:QI (const_int 1) + (match_operand:QI 1 "nonmemory_operand" "ri")) + (match_dup 0)))] +@@ -1813,7 +1875,7 @@ + ) + + (define_insn "*bitclr_in_memory" +- [(set (match_operand:QI 0 "memory_operand" "+Q") ++ [(set (match_operand:QI 0 "rx_restricted_mem_operand" "+Q") + (and:QI (not:QI + (ashift:QI + (const_int 1) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0271-config-rx-rx.c-rx_memory_move_cost-Include-cost-of-r.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0271-config-rx-rx.c-rx_memory_move_cost-Include-cost-of-r.patch new file mode 100644 index 000000000..e740b72f1 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0271-config-rx-rx.c-rx_memory_move_cost-Include-cost-of-r.patch @@ -0,0 +1,28 @@ +From af42375ce311b2bab14f7b4eb83a2060a71d73f4 Mon Sep 17 00:00:00 2001 +From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 17 May 2011 08:59:10 +0000 +Subject: [PATCH] * config/rx/rx.c (rx_memory_move_cost): Include cost of register + moves. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173825 138bc75d-0d04-0410-961f-82ee72b054a4 + +index e0bd176..a2d48ab 100644 +--- a/gcc/config/rx/rx.c ++++ b/gcc/config/rx/rx.c +@@ -2592,9 +2592,11 @@ rx_trampoline_init (rtx tramp, tree fndecl, rtx chain) + } + + static int +-rx_memory_move_cost (enum machine_mode mode, reg_class_t regclass, bool in) ++rx_memory_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED, ++ reg_class_t regclass ATTRIBUTE_UNUSED, ++ bool in) + { +- return (in ? 2:0) + memory_move_secondary_cost (mode, regclass, in); ++ return (in ? 2 : 0) + REGISTER_MOVE_COST (mode, regclass, regclass); + } + + /* Convert a CC_MODE to the set of flags that it represents. */ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0273-PR-tree-optimization-49000.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0273-PR-tree-optimization-49000.patch new file mode 100644 index 000000000..6d146eca2 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0273-PR-tree-optimization-49000.patch @@ -0,0 +1,39 @@ +From f06cb0f7aea5a275c4ae4b35f19db407fa65a3f7 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 18 May 2011 09:29:46 +0000 +Subject: [PATCH] PR tree-optimization/49000 + * tree-ssa.c (execute_update_addresses_taken): Call + maybe_rewrite_mem_ref_base on debug stmt value. If it couldn't + be rewritten and decl has been marked for renaming, reset + the debug stmt. + + * gcc.dg/pr49000.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173850 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 12ceb8e..d3585ce 100644 +index 0455680..649f625 100644 +--- a/gcc/tree-ssa.c ++++ b/gcc/tree-ssa.c +@@ -2205,6 +2205,17 @@ execute_update_addresses_taken (void) + } + } + ++ else if (gimple_debug_bind_p (stmt) ++ && gimple_debug_bind_has_value_p (stmt)) ++ { ++ tree *valuep = gimple_debug_bind_get_value_ptr (stmt); ++ tree decl; ++ maybe_rewrite_mem_ref_base (valuep); ++ decl = non_rewritable_mem_ref_base (*valuep); ++ if (decl && symbol_marked_for_renaming (decl)) ++ gimple_debug_bind_reset_value (stmt); ++ } ++ + if (gimple_references_memory_p (stmt) + || is_gimple_debug (stmt)) + update_stmt (stmt); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0274-PR-tree-optimization-49000.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0274-PR-tree-optimization-49000.patch new file mode 100644 index 000000000..dfc7a3cd5 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0274-PR-tree-optimization-49000.patch @@ -0,0 +1,52 @@ +From 2d5c4b99176636cc96004730fb540a66ee5c209b Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 18 May 2011 09:31:25 +0000 +Subject: [PATCH] PR tree-optimization/49000 + * tree-ssa.c (execute_update_addresses_taken): Call + maybe_rewrite_mem_ref_base on debug stmt value. If it couldn't + be rewritten and decl has been marked for renaming, reset + the debug stmt. + + * gcc.dg/pr49000.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173851 138bc75d-0d04-0410-961f-82ee72b054a4 + +diff --git a/gcc/testsuite/gcc.dg/pr49000.c b/gcc/testsuite/gcc.dg/pr49000.c +new file mode 100644 +index 0000000..32a1cdb +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr49000.c +@@ -0,0 +1,29 @@ ++/* PR tree-optimization/49000 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -g" } */ ++ ++static ++foo (int x, int y) ++{ ++ return x * y; ++} ++ ++static int ++bar (int *z) ++{ ++ return *z; ++} ++ ++void ++baz (void) ++{ ++ int a = 42; ++ int *b = &a; ++ foo (bar (&a), 3); ++} ++ ++void ++test (void) ++{ ++ baz (); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0275-2011-05-18-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0275-2011-05-18-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..b47545cc6 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0275-2011-05-18-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,138 @@ +From f7dad9af02c21ad7f0b6d01ffecc0b7d1a6b03ed Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 18 May 2011 13:24:05 +0000 +Subject: [PATCH] 2011-05-18 Richard Guenther <rguenther@suse.de> + + Backport from mainline + 2011-05-12 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/48172 + * tree-vect-loop-manip.c (vect_vfa_segment_size): Do not exclude + the number of iterations from the segment size calculation. + (vect_create_cond_for_alias_checks): Adjust. + + 2011-05-13 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/48172 + * tree-vect-loop-manip.c (vect_vfa_segment_size): Avoid + multiplying by number of iterations for equal step. + (vect_create_cond_for_alias_checks): Likewise. + + * gcc.dg/vect/pr48172.c: New testcase. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173859 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d3585ce..28581a0 100644 +new file mode 100644 +index 0000000..892aeca +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/vect/pr48172.c +@@ -0,0 +1,33 @@ ++/* { dg-do run } */ ++ ++extern void *memset(void *s, int c, __SIZE_TYPE__ n); ++extern void abort (void); ++ ++#define ASIZE 1028 ++#define HALF (ASIZE/2) ++ ++int main() { ++ unsigned int array[ASIZE]; ++ int i; ++ ++ memset(array, 0, sizeof(array)); ++ ++ /* initialize first half of the array */ ++ for (i = 0; i < HALF; i++) ++ array[i] = i; ++ ++ /* fill second half of array in by summing earlier elements of the array ++ gcc 4.5.1 and 4.5.2 incorrectly vectorize this loop! aray[1025] is left ++ at 0 for ASIZE=1028 */ ++ for (i = 0; i < HALF-1; i++) ++ array[HALF+i] = array[2*i] + array[2*i + 1]; ++ ++ /* see if we have any failures */ ++ for (i = 0; i < HALF - 1; i++) ++ if (array[HALF+i] != array[2*i] + array[2*i + 1]) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c +index 28b75f1..b691cd2 100644 +--- a/gcc/tree-vect-loop-manip.c ++++ b/gcc/tree-vect-loop-manip.c +@@ -2353,27 +2353,27 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo, + + Input: + DR: The data reference. +- VECT_FACTOR: vectorization factor. ++ LENGTH_FACTOR: segment length to consider. + + Return an expression whose value is the size of segment which will be + accessed by DR. */ + + static tree +-vect_vfa_segment_size (struct data_reference *dr, tree vect_factor) ++vect_vfa_segment_size (struct data_reference *dr, tree length_factor) + { +- tree segment_length = fold_build2 (MULT_EXPR, integer_type_node, +- DR_STEP (dr), vect_factor); +- ++ tree segment_length; ++ segment_length = size_binop (MULT_EXPR, ++ fold_convert (sizetype, DR_STEP (dr)), ++ fold_convert (sizetype, length_factor)); + if (vect_supportable_dr_alignment (dr, false) + == dr_explicit_realign_optimized) + { + tree vector_size = TYPE_SIZE_UNIT + (STMT_VINFO_VECTYPE (vinfo_for_stmt (DR_STMT (dr)))); + +- segment_length = fold_build2 (PLUS_EXPR, integer_type_node, +- segment_length, vector_size); ++ segment_length = size_binop (PLUS_EXPR, segment_length, vector_size); + } +- return fold_convert (sizetype, segment_length); ++ return segment_length; + } + + +@@ -2407,12 +2407,12 @@ vect_create_cond_for_alias_checks (loop_vec_info loop_vinfo, + struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo); + VEC (ddr_p, heap) * may_alias_ddrs = + LOOP_VINFO_MAY_ALIAS_DDRS (loop_vinfo); +- tree vect_factor = +- build_int_cst (integer_type_node, LOOP_VINFO_VECT_FACTOR (loop_vinfo)); ++ int vect_factor = LOOP_VINFO_VECT_FACTOR (loop_vinfo); ++ tree scalar_loop_iters = LOOP_VINFO_NITERS (loop_vinfo); + + ddr_p ddr; + unsigned int i; +- tree part_cond_expr; ++ tree part_cond_expr, length_factor; + + /* Create expression + ((store_ptr_0 + store_segment_length_0) < load_ptr_0) +@@ -2460,8 +2460,12 @@ vect_create_cond_for_alias_checks (loop_vec_info loop_vinfo, + vect_create_addr_base_for_vector_ref (stmt_b, cond_expr_stmt_list, + NULL_TREE, loop); + +- segment_length_a = vect_vfa_segment_size (dr_a, vect_factor); +- segment_length_b = vect_vfa_segment_size (dr_b, vect_factor); ++ if (!operand_equal_p (DR_STEP (dr_a), DR_STEP (dr_b), 0)) ++ length_factor = scalar_loop_iters; ++ else ++ length_factor = size_int (vect_factor); ++ segment_length_a = vect_vfa_segment_size (dr_a, length_factor); ++ segment_length_b = vect_vfa_segment_size (dr_b, length_factor); + + if (vect_print_dump_info (REPORT_DR_DETAILS)) + { +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..533afe855 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,111 @@ +From 750d46458c0af423bb1976c7b4bb0a89de10e58f Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 18 May 2011 13:29:24 +0000 +Subject: [PATCH] 2011-05-18 Richard Guenther <rguenther@suse.de> + + Backport from mainline + 2011-04-19 Richard Guenther <rguenther@suse.de> + + PR lto/48207 + * tree.c (free_lang_data): Do not reset the decl-assembler-name + langhook. + + * g++.dg/lto/pr48207_0.C: New testcase. + + 2011-04-21 Richard Guenther <rguenther@suse.de> + + PR lto/48703 + * tree.c (free_lang_data_in_decl): Do not zero TREE_TYPE of + DECL_NAME. + + * g++.dg/lto/pr48207-2_0.C: New testcase. + * g++.dg/lto/pr48207-3_0.C: Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173860 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 28581a0..25f9804 100644 +new file mode 100644 +index 0000000..6801b85 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/lto/pr48207-2_0.C +@@ -0,0 +1,10 @@ ++// { dg-lto-do link } ++// { dg-lto-options { { -flto -g } } } ++ ++namespace { ++ typedef struct { ++ int x; ++ } Foo; ++} ++ ++int main () {} +diff --git a/gcc/testsuite/g++.dg/lto/pr48207-3_0.C b/gcc/testsuite/g++.dg/lto/pr48207-3_0.C +new file mode 100644 +index 0000000..ef02dda +--- /dev/null ++++ b/gcc/testsuite/g++.dg/lto/pr48207-3_0.C +@@ -0,0 +1,12 @@ ++// { dg-lto-do link } ++// { dg-lto-options { { -flto -g } } } ++ ++void bar(void) {} ++ ++void foo(void) ++{ ++ typedef enum { ABC } DEF; ++ bar(); ++} ++ ++int main () {} +diff --git a/gcc/testsuite/g++.dg/lto/pr48207_0.C b/gcc/testsuite/g++.dg/lto/pr48207_0.C +new file mode 100644 +index 0000000..e66cb49 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/lto/pr48207_0.C +@@ -0,0 +1,13 @@ ++// { dg-lto-do link } ++// { dg-lto-options { { -flto -g } } } ++ ++void bar(int) {} ++ ++void foo(void) ++{ ++ typedef enum { ABC } DEF; ++ DEF a; ++ bar((int)a); ++} ++ ++int main() {} +diff --git a/gcc/tree.c b/gcc/tree.c +index 4d6ca36..1c78b61 100644 +--- a/gcc/tree.c ++++ b/gcc/tree.c +@@ -4532,10 +4532,6 @@ free_lang_data_in_decl (tree decl) + TREE_LANG_FLAG_5 (decl) = 0; + TREE_LANG_FLAG_6 (decl) = 0; + +- /* Identifiers need not have a type. */ +- if (DECL_NAME (decl)) +- TREE_TYPE (DECL_NAME (decl)) = NULL_TREE; +- + free_lang_data_in_one_sizepos (&DECL_SIZE (decl)); + free_lang_data_in_one_sizepos (&DECL_SIZE_UNIT (decl)); + if (TREE_CODE (decl) == FIELD_DECL) +@@ -5140,7 +5136,12 @@ free_lang_data (void) + lang_hooks.callgraph.analyze_expr = NULL; + lang_hooks.dwarf_name = lhd_dwarf_name; + lang_hooks.decl_printable_name = gimple_decl_printable_name; +- lang_hooks.set_decl_assembler_name = lhd_set_decl_assembler_name; ++ /* We do not want the default decl_assembler_name implementation, ++ rather if we have fixed everything we want a wrapper around it ++ asserting that all non-local symbols already got their assembler ++ name and only produce assembler names for local symbols. Or rather ++ make sure we never call decl_assembler_name on local symbols and ++ devise a separate, middle-end private scheme for it. */ + + /* Reset diagnostic machinery. */ + diagnostic_starter (global_dc) = default_tree_diagnostic_starter; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0277-2011-05-18-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0277-2011-05-18-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..faa5a0523 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0277-2011-05-18-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,81 @@ +From 0394622853ff7c35417625979782f19fa3682122 Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 18 May 2011 13:33:53 +0000 +Subject: [PATCH] 2011-05-18 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/49018 + * gimple.c (gimple_has_side_effects): Volatile asms have side-effects. + * tree-ssa-ifcombine.c (bb_no_side_effects_p): Use + gimple_has_side_effects. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173862 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 9a94f06..233a4f5 100644 +--- a/gcc/gimple.c ++++ b/gcc/gimple.c +@@ -2286,6 +2286,10 @@ gimple_has_side_effects (const_gimple s) + if (gimple_has_volatile_ops (s)) + return true; + ++ if (gimple_code (s) == GIMPLE_ASM ++ && gimple_asm_volatile_p (s)) ++ return true; ++ + if (is_gimple_call (s)) + { + unsigned nargs = gimple_call_num_args (s); +@@ -2299,7 +2303,7 @@ gimple_has_side_effects (const_gimple s) + if (gimple_call_lhs (s) + && TREE_SIDE_EFFECTS (gimple_call_lhs (s))) + { +- gcc_assert (gimple_has_volatile_ops (s)); ++ gcc_checking_assert (gimple_has_volatile_ops (s)); + return true; + } + +@@ -2309,7 +2313,7 @@ gimple_has_side_effects (const_gimple s) + for (i = 0; i < nargs; i++) + if (TREE_SIDE_EFFECTS (gimple_call_arg (s, i))) + { +- gcc_assert (gimple_has_volatile_ops (s)); ++ gcc_checking_assert (gimple_has_volatile_ops (s)); + return true; + } + +@@ -2318,11 +2322,14 @@ gimple_has_side_effects (const_gimple s) + else + { + for (i = 0; i < gimple_num_ops (s); i++) +- if (TREE_SIDE_EFFECTS (gimple_op (s, i))) +- { +- gcc_assert (gimple_has_volatile_ops (s)); +- return true; +- } ++ { ++ tree op = gimple_op (s, i); ++ if (op && TREE_SIDE_EFFECTS (op)) ++ { ++ gcc_checking_assert (gimple_has_volatile_ops (s)); ++ return true; ++ } ++ } + } + + return false; +diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c +index bc551b2..e23bb76 100644 +--- a/gcc/tree-ssa-ifcombine.c ++++ b/gcc/tree-ssa-ifcombine.c +@@ -107,7 +107,7 @@ bb_no_side_effects_p (basic_block bb) + { + gimple stmt = gsi_stmt (gsi); + +- if (gimple_has_volatile_ops (stmt) ++ if (gimple_has_side_effects (stmt) + || gimple_vuse (stmt)) + return false; + } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0278-PR-tree-optimization-49039.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0278-PR-tree-optimization-49039.patch new file mode 100644 index 000000000..49232cdca --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0278-PR-tree-optimization-49039.patch @@ -0,0 +1,217 @@ +From 2961db51d944dc693c16502ef40dc47ee4f92143 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 18 May 2011 20:43:44 +0000 +Subject: [PATCH] PR tree-optimization/49039 + * tree-vrp.c (extract_range_from_binary_expr): For + MIN_EXPR <~[a, b], ~[c, d]> and MAX_EXPR <~[a, b], ~[c, d]> + return ~[MAX_EXPR <a, c>, MIN_EXPR <b, d>]. + + * gcc.c-torture/execute/pr49039.c: New test. + * gcc.dg/tree-ssa/pr49039.c: New test. + * g++.dg/torture/pr49039.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173877 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 25f9804..cb6627c 100644 +new file mode 100644 +index 0000000..f576cba +--- /dev/null ++++ b/gcc/testsuite/g++.dg/torture/pr49039.C +@@ -0,0 +1,76 @@ ++// PR tree-optimization/49039 ++// { dg-do run } ++ ++template <class T1, class T2> ++struct pair ++{ ++ T1 first; ++ T2 second; ++ pair (const T1 & a, const T2 & b):first (a), second (b) {} ++}; ++ ++template <class T1, class T2> ++inline pair <T1, T2> ++make_pair (T1 x, T2 y) ++{ ++ return pair <T1, T2> (x, y); ++} ++ ++typedef __SIZE_TYPE__ size_t; ++struct S ++{ ++ const char *Data; ++ size_t Length; ++ static size_t min (size_t a, size_t b) { return a < b ? a : b; } ++ static size_t max (size_t a, size_t b) { return a > b ? a : b; } ++ S () :Data (0), Length (0) { } ++ S (const char *Str) : Data (Str), Length (__builtin_strlen (Str)) {} ++ S (const char *data, size_t length) : Data (data), Length (length) {} ++ bool empty () const { return Length == 0; } ++ size_t size () const { return Length; } ++ S slice (size_t Start, size_t End) const ++ { ++ Start = min (Start, Length); ++ End = min (max (Start, End), Length); ++ return S (Data + Start, End - Start); ++ } ++ pair <S, S> split (char Separator) const ++ { ++ size_t Idx = find (Separator); ++ if (Idx == ~size_t (0)) ++ return make_pair (*this, S ()); ++ return make_pair (slice (0, Idx), slice (Idx + 1, ~size_t (0))); ++ } ++ size_t find (char C, size_t From = 0) const ++ { ++ for (size_t i = min (From, Length), e = Length; i != e; ++i) ++ if (Data[i] == C) ++ return i; ++ return ~size_t (0); ++ } ++}; ++ ++void ++Test (const char *arg) ++{ ++ S Desc (arg); ++ while (!Desc.empty ()) ++ { ++ pair <S, S> Split = Desc.split ('-'); ++ S Token = Split.first; ++ Desc = Split.second; ++ if (Token.empty ()) ++ continue; ++ Split = Token.split (':'); ++ S Specifier = Split.first; ++ if (Specifier.empty ()) ++ __builtin_abort (); ++ } ++} ++ ++int ++main () ++{ ++ Test ("-"); ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.c-torture/execute/pr49039.c b/gcc/testsuite/gcc.c-torture/execute/pr49039.c +new file mode 100644 +index 0000000..546d114 +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/execute/pr49039.c +@@ -0,0 +1,26 @@ ++/* PR tree-optimization/49039 */ ++extern void abort (void); ++int cnt; ++ ++__attribute__((noinline, noclone)) void ++foo (unsigned int x, unsigned int y) ++{ ++ unsigned int minv, maxv; ++ if (x == 1 || y == -2U) ++ return; ++ minv = x < y ? x : y; ++ maxv = x > y ? x : y; ++ if (minv == 1) ++ ++cnt; ++ if (maxv == -2U) ++ ++cnt; ++} ++ ++int ++main () ++{ ++ foo (-2U, 1); ++ if (cnt != 2) ++ abort (); ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr49039.c b/gcc/testsuite/gcc.dg/tree-ssa/pr49039.c +new file mode 100644 +index 0000000..3500dbf +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/tree-ssa/pr49039.c +@@ -0,0 +1,31 @@ ++/* PR tree-optimization/49039 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-vrp1" } */ ++ ++extern void bar (void); ++ ++void ++foo (unsigned int x, unsigned int y) ++{ ++ unsigned int minv, maxv; ++ if (x >= 3 && x <= 6) ++ return; ++ if (y >= 5 && y <= 8) ++ return; ++ minv = x < y ? x : y; ++ maxv = x > y ? x : y; ++ if (minv == 5) ++ bar (); ++ if (minv == 6) ++ bar (); ++ if (maxv == 5) ++ bar (); ++ if (maxv == 6) ++ bar (); ++} ++ ++/* { dg-final { scan-tree-dump "Folding predicate minv_\[0-9\]* == 5 to 0" "vrp1" } } */ ++/* { dg-final { scan-tree-dump "Folding predicate minv_\[0-9\]* == 6 to 0" "vrp1" } } */ ++/* { dg-final { scan-tree-dump "Folding predicate maxv_\[0-9\]* == 5 to 0" "vrp1" } } */ ++/* { dg-final { scan-tree-dump "Folding predicate maxv_\[0-9\]* == 6 to 0" "vrp1" } } */ ++/* { dg-final { cleanup-tree-dump "vrp1" } } */ +diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c +index 280e6da..7bff5fa 100644 +--- a/gcc/tree-vrp.c ++++ b/gcc/tree-vrp.c +@@ -1,5 +1,5 @@ + /* Support routines for Value Range Propagation (VRP). +- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 ++ Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. + Contributed by Diego Novillo <dnovillo@redhat.com>. + +@@ -2357,17 +2357,27 @@ extract_range_from_binary_expr (value_range_t *vr, + op0 + op1 == 0, so we cannot claim that the sum is in ~[0,0]. + Note that we are guaranteed to have vr0.type == vr1.type at + this point. */ +- if (code == PLUS_EXPR && vr0.type == VR_ANTI_RANGE) ++ if (vr0.type == VR_ANTI_RANGE) + { +- set_value_range_to_varying (vr); +- return; ++ if (code == PLUS_EXPR) ++ { ++ set_value_range_to_varying (vr); ++ return; ++ } ++ /* For MIN_EXPR and MAX_EXPR with two VR_ANTI_RANGEs, ++ the resulting VR_ANTI_RANGE is the same - intersection ++ of the two ranges. */ ++ min = vrp_int_const_binop (MAX_EXPR, vr0.min, vr1.min); ++ max = vrp_int_const_binop (MIN_EXPR, vr0.max, vr1.max); ++ } ++ else ++ { ++ /* For operations that make the resulting range directly ++ proportional to the original ranges, apply the operation to ++ the same end of each range. */ ++ min = vrp_int_const_binop (code, vr0.min, vr1.min); ++ max = vrp_int_const_binop (code, vr0.max, vr1.max); + } +- +- /* For operations that make the resulting range directly +- proportional to the original ranges, apply the operation to +- the same end of each range. */ +- min = vrp_int_const_binop (code, vr0.min, vr1.min); +- max = vrp_int_const_binop (code, vr0.max, vr1.max); + + /* If both additions overflowed the range kind is still correct. + This happens regularly with subtracting something in unsigned +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0279-Properly-handle-256bit-load-cast.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0279-Properly-handle-256bit-load-cast.patch new file mode 100644 index 000000000..0239d7294 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0279-Properly-handle-256bit-load-cast.patch @@ -0,0 +1,95 @@ +From 97183693743a66a02a18a6e9170b2e4bdf9461ac Mon Sep 17 00:00:00 2001 +From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 18 May 2011 22:56:35 +0000 +Subject: [PATCH] Properly handle 256bit load cast. + +gcc/ + +2011-05-18 H.J. Lu <hongjiu.lu@intel.com> + + Backport from mainline + 2011-05-18 H.J. Lu <hongjiu.lu@intel.com> + + PR target/49002 + * config/i386/sse.md (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): + Properly handle load cast. + +gcc/testsuite/ + +2011-05-18 H.J. Lu <hongjiu.lu@intel.com> + + Backport from mainline + 2011-05-18 H.J. Lu <hongjiu.lu@intel.com> + + PR target/49002 + * gcc.target/i386/pr49002-1.c: New test. + * gcc.target/i386/pr49002-2.c: Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173881 138bc75d-0d04-0410-961f-82ee72b054a4 + +index db252c8..c9866f0 100644 +--- a/gcc/config/i386/sse.md ++++ b/gcc/config/i386/sse.md +@@ -12017,12 +12017,13 @@ + "&& reload_completed" + [(const_int 0)] + { ++ rtx op0 = operands[0]; + rtx op1 = operands[1]; +- if (REG_P (op1)) ++ if (REG_P (op0)) ++ op0 = gen_rtx_REG (<avxhalfvecmode>mode, REGNO (op0)); ++ else + op1 = gen_rtx_REG (<MODE>mode, REGNO (op1)); +- else +- op1 = gen_lowpart (<MODE>mode, op1); +- emit_move_insn (operands[0], op1); ++ emit_move_insn (op0, op1); + DONE; + }) + +new file mode 100644 +index 0000000..7553e82 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/i386/pr49002-1.c +@@ -0,0 +1,16 @@ ++/* PR target/49002 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -mavx" } */ ++ ++#include <immintrin.h> ++ ++void foo(const __m128d *from, __m256d *to, int s) ++{ ++ __m256d var = _mm256_castpd128_pd256(from[0]); ++ var = _mm256_insertf128_pd(var, from[s], 1); ++ to[0] = var; ++} ++ ++/* Ensure we load into xmm, not ymm. */ ++/* { dg-final { scan-assembler-not "vmovapd\[\t \]*\[^,\]*,\[\t \]*%ymm" } } */ ++/* { dg-final { scan-assembler "vmovapd\[\t \]*\[^,\]*,\[\t \]*%xmm" } } */ +diff --git a/gcc/testsuite/gcc.target/i386/pr49002-2.c b/gcc/testsuite/gcc.target/i386/pr49002-2.c +new file mode 100644 +index 0000000..b0e1009 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/i386/pr49002-2.c +@@ -0,0 +1,14 @@ ++/* PR target/49002 */ ++/* { dg-do compile } */ ++/* { dg-options "-O -mavx" } */ ++ ++#include <immintrin.h> ++ ++void foo(const __m128d from, __m256d *to) ++{ ++ *to = _mm256_castpd128_pd256(from); ++} ++ ++/* Ensure we store ymm, not xmm. */ ++/* { dg-final { scan-assembler-not "vmovapd\[\t \]*%xmm\[0-9\]\+,\[^,\]*" } } */ ++/* { dg-final { scan-assembler "vmovapd\[\t \]*%ymm\[0-9\]\+,\[^,\]*" } } */ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0281-PR-c-48869.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0281-PR-c-48869.patch new file mode 100644 index 000000000..a3b18bf0f --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0281-PR-c-48869.patch @@ -0,0 +1,460 @@ +From 727aac5bae5c8b9e10e7b4ff1756cc722dd9ef2f Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 19 May 2011 08:00:50 +0000 +Subject: [PATCH] PR c++/48869 + * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument, + pass it down to locate_fn_flags. + * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes. + * semantics.c (cxx_omp_create_clause_info): Adjust callers. + * cp-gimplify.c: Include splay-tree.h. + (splay_tree_compare_decl_uid, omp_var_to_track, + omp_cxx_notice_variable): New functions. + (struct cp_genericize_omp_taskreg): New type. + (struct cp_genericize_data): Add omp_ctx field. + (cp_genericize_r): Attempt to determine implicitly determined + firstprivate class type variables. + (cp_genericize): Clear omp_ctx. + * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H). + + * testsuite/libgomp.c++/pr48869.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173889 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 3734714..d0a9e58 100644 +--- a/gcc/cp/Make-lang.in ++++ b/gcc/cp/Make-lang.in +@@ -1,6 +1,6 @@ + # Top level -*- makefile -*- fragment for GNU C++. + # Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +-# 2005, 2007, 2008, 2009, 2010 ++# 2005, 2007, 2008, 2009, 2010, 2011 + # Free Software Foundation, Inc. + + #This file is part of GCC. +@@ -318,7 +318,7 @@ cp/parser.o: cp/parser.c $(CXX_TREE_H) $(TM_H) $(DIAGNOSTIC_CORE_H) \ + gt-cp-parser.h output.h $(TARGET_H) $(PLUGIN_H) intl.h \ + c-family/c-objc.h + cp/cp-gimplify.o: cp/cp-gimplify.c $(CXX_TREE_H) $(C_COMMON_H) \ +- $(TM_H) coretypes.h pointer-set.h tree-iterator.h ++ $(TM_H) coretypes.h pointer-set.h tree-iterator.h $(SPLAY_TREE_H) + + cp/name-lookup.o: cp/name-lookup.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ + $(TM_H) $(CXX_TREE_H) $(TIMEVAR_H) gt-cp-name-lookup.h \ +diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c +index ca62df3..d26c0e0 100644 +--- a/gcc/cp/cp-gimplify.c ++++ b/gcc/cp/cp-gimplify.c +@@ -1,6 +1,6 @@ + /* C++-specific tree lowering bits; see also c-gimplify.c and tree-gimple.c. + +- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ++ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. + Contributed by Jason Merrill <jason@redhat.com> + +@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3. If not see + #include "hashtab.h" + #include "pointer-set.h" + #include "flags.h" ++#include "splay-tree.h" + + /* Local declarations. */ + +@@ -731,10 +732,105 @@ cxx_int_tree_map_hash (const void *item) + return ((const struct cxx_int_tree_map *)item)->uid; + } + ++/* A stable comparison routine for use with splay trees and DECLs. */ ++ ++static int ++splay_tree_compare_decl_uid (splay_tree_key xa, splay_tree_key xb) ++{ ++ tree a = (tree) xa; ++ tree b = (tree) xb; ++ ++ return DECL_UID (a) - DECL_UID (b); ++} ++ ++/* OpenMP context during genericization. */ ++ ++struct cp_genericize_omp_taskreg ++{ ++ bool is_parallel; ++ bool default_shared; ++ struct cp_genericize_omp_taskreg *outer; ++ splay_tree variables; ++}; ++ ++/* Return true if genericization should try to determine if ++ DECL is firstprivate or shared within task regions. */ ++ ++static bool ++omp_var_to_track (tree decl) ++{ ++ tree type = TREE_TYPE (decl); ++ if (is_invisiref_parm (decl)) ++ type = TREE_TYPE (type); ++ while (TREE_CODE (type) == ARRAY_TYPE) ++ type = TREE_TYPE (type); ++ if (type == error_mark_node || !CLASS_TYPE_P (type)) ++ return false; ++ if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL_P (decl)) ++ return false; ++ if (cxx_omp_predetermined_sharing (decl) != OMP_CLAUSE_DEFAULT_UNSPECIFIED) ++ return false; ++ return true; ++} ++ ++/* Note DECL use in OpenMP region OMP_CTX during genericization. */ ++ ++static void ++omp_cxx_notice_variable (struct cp_genericize_omp_taskreg *omp_ctx, tree decl) ++{ ++ splay_tree_node n = splay_tree_lookup (omp_ctx->variables, ++ (splay_tree_key) decl); ++ if (n == NULL) ++ { ++ int flags = OMP_CLAUSE_DEFAULT_SHARED; ++ if (omp_ctx->outer) ++ omp_cxx_notice_variable (omp_ctx->outer, decl); ++ if (!omp_ctx->default_shared) ++ { ++ struct cp_genericize_omp_taskreg *octx; ++ ++ for (octx = omp_ctx->outer; octx; octx = octx->outer) ++ { ++ n = splay_tree_lookup (octx->variables, (splay_tree_key) decl); ++ if (n && n->value != OMP_CLAUSE_DEFAULT_SHARED) ++ { ++ flags = OMP_CLAUSE_DEFAULT_FIRSTPRIVATE; ++ break; ++ } ++ if (octx->is_parallel) ++ break; ++ } ++ if (octx == NULL ++ && (TREE_CODE (decl) == PARM_DECL ++ || (!(TREE_STATIC (decl) || DECL_EXTERNAL (decl)) ++ && DECL_CONTEXT (decl) == current_function_decl))) ++ flags = OMP_CLAUSE_DEFAULT_FIRSTPRIVATE; ++ if (flags == OMP_CLAUSE_DEFAULT_FIRSTPRIVATE) ++ { ++ /* DECL is implicitly determined firstprivate in ++ the current task construct. Ensure copy ctor and ++ dtor are instantiated, because during gimplification ++ it will be already too late. */ ++ tree type = TREE_TYPE (decl); ++ if (is_invisiref_parm (decl)) ++ type = TREE_TYPE (type); ++ while (TREE_CODE (type) == ARRAY_TYPE) ++ type = TREE_TYPE (type); ++ get_copy_ctor (type, tf_none); ++ get_dtor (type, tf_none); ++ } ++ } ++ splay_tree_insert (omp_ctx->variables, (splay_tree_key) decl, flags); ++ } ++} ++ ++/* Genericization context. */ ++ + struct cp_genericize_data + { + struct pointer_set_t *p_set; + VEC (tree, heap) *bind_expr_stack; ++ struct cp_genericize_omp_taskreg *omp_ctx; + }; + + /* Perform any pre-gimplification lowering of C++ front end trees to +@@ -747,6 +843,14 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data) + struct cp_genericize_data *wtd = (struct cp_genericize_data *) data; + struct pointer_set_t *p_set = wtd->p_set; + ++ /* If in an OpenMP context, note var uses. */ ++ if (__builtin_expect (wtd->omp_ctx != NULL, 0) ++ && (TREE_CODE (stmt) == VAR_DECL ++ || TREE_CODE (stmt) == PARM_DECL ++ || TREE_CODE (stmt) == RESULT_DECL) ++ && omp_var_to_track (stmt)) ++ omp_cxx_notice_variable (wtd->omp_ctx, stmt); ++ + if (is_invisiref_parm (stmt) + /* Don't dereference parms in a thunk, pass the references through. */ + && !(DECL_THUNK_P (current_function_decl) +@@ -786,6 +890,10 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data) + if (TREE_CODE (stmt) == ADDR_EXPR + && is_invisiref_parm (TREE_OPERAND (stmt, 0))) + { ++ /* If in an OpenMP context, note var uses. */ ++ if (__builtin_expect (wtd->omp_ctx != NULL, 0) ++ && omp_var_to_track (TREE_OPERAND (stmt, 0))) ++ omp_cxx_notice_variable (wtd->omp_ctx, TREE_OPERAND (stmt, 0)); + *stmt_p = convert (TREE_TYPE (stmt), TREE_OPERAND (stmt, 0)); + *walk_subtrees = 0; + } +@@ -808,6 +916,22 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data) + } + break; + case OMP_CLAUSE_PRIVATE: ++ /* Don't dereference an invisiref in OpenMP clauses. */ ++ if (is_invisiref_parm (OMP_CLAUSE_DECL (stmt))) ++ *walk_subtrees = 0; ++ else if (wtd->omp_ctx != NULL) ++ { ++ /* Private clause doesn't cause any references to the ++ var in outer contexts, avoid calling ++ omp_cxx_notice_variable for it. */ ++ struct cp_genericize_omp_taskreg *old = wtd->omp_ctx; ++ wtd->omp_ctx = NULL; ++ cp_walk_tree (&OMP_CLAUSE_DECL (stmt), cp_genericize_r, ++ data, NULL); ++ wtd->omp_ctx = old; ++ *walk_subtrees = 0; ++ } ++ break; + case OMP_CLAUSE_SHARED: + case OMP_CLAUSE_FIRSTPRIVATE: + case OMP_CLAUSE_COPYIN: +@@ -876,6 +1000,25 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data) + + else if (TREE_CODE (stmt) == BIND_EXPR) + { ++ if (__builtin_expect (wtd->omp_ctx != NULL, 0)) ++ { ++ tree decl; ++ for (decl = BIND_EXPR_VARS (stmt); decl; decl = DECL_CHAIN (decl)) ++ if (TREE_CODE (decl) == VAR_DECL ++ && !DECL_EXTERNAL (decl) ++ && omp_var_to_track (decl)) ++ { ++ splay_tree_node n ++ = splay_tree_lookup (wtd->omp_ctx->variables, ++ (splay_tree_key) decl); ++ if (n == NULL) ++ splay_tree_insert (wtd->omp_ctx->variables, ++ (splay_tree_key) decl, ++ TREE_STATIC (decl) ++ ? OMP_CLAUSE_DEFAULT_SHARED ++ : OMP_CLAUSE_DEFAULT_PRIVATE); ++ } ++ } + VEC_safe_push (tree, heap, wtd->bind_expr_stack, stmt); + cp_walk_tree (&BIND_EXPR_BODY (stmt), + cp_genericize_r, data, NULL); +@@ -922,6 +1065,50 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data) + *stmt_p = build1 (NOP_EXPR, void_type_node, integer_zero_node); + *walk_subtrees = 0; + } ++ else if (TREE_CODE (stmt) == OMP_PARALLEL || TREE_CODE (stmt) == OMP_TASK) ++ { ++ struct cp_genericize_omp_taskreg omp_ctx; ++ tree c, decl; ++ splay_tree_node n; ++ ++ *walk_subtrees = 0; ++ cp_walk_tree (&OMP_CLAUSES (stmt), cp_genericize_r, data, NULL); ++ omp_ctx.is_parallel = TREE_CODE (stmt) == OMP_PARALLEL; ++ omp_ctx.default_shared = omp_ctx.is_parallel; ++ omp_ctx.outer = wtd->omp_ctx; ++ omp_ctx.variables = splay_tree_new (splay_tree_compare_decl_uid, 0, 0); ++ wtd->omp_ctx = &omp_ctx; ++ for (c = OMP_CLAUSES (stmt); c; c = OMP_CLAUSE_CHAIN (c)) ++ switch (OMP_CLAUSE_CODE (c)) ++ { ++ case OMP_CLAUSE_SHARED: ++ case OMP_CLAUSE_PRIVATE: ++ case OMP_CLAUSE_FIRSTPRIVATE: ++ case OMP_CLAUSE_LASTPRIVATE: ++ decl = OMP_CLAUSE_DECL (c); ++ if (decl == error_mark_node || !omp_var_to_track (decl)) ++ break; ++ n = splay_tree_lookup (omp_ctx.variables, (splay_tree_key) decl); ++ if (n != NULL) ++ break; ++ splay_tree_insert (omp_ctx.variables, (splay_tree_key) decl, ++ OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED ++ ? OMP_CLAUSE_DEFAULT_SHARED ++ : OMP_CLAUSE_DEFAULT_PRIVATE); ++ if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_PRIVATE ++ && omp_ctx.outer) ++ omp_cxx_notice_variable (omp_ctx.outer, decl); ++ break; ++ case OMP_CLAUSE_DEFAULT: ++ if (OMP_CLAUSE_DEFAULT_KIND (c) == OMP_CLAUSE_DEFAULT_SHARED) ++ omp_ctx.default_shared = true; ++ default: ++ break; ++ } ++ cp_walk_tree (&OMP_BODY (stmt), cp_genericize_r, data, NULL); ++ wtd->omp_ctx = omp_ctx.outer; ++ splay_tree_delete (omp_ctx.variables); ++ } + + pointer_set_insert (p_set, *stmt_p); + +@@ -985,6 +1172,7 @@ cp_genericize (tree fndecl) + walk_tree's hash functionality. */ + wtd.p_set = pointer_set_create (); + wtd.bind_expr_stack = NULL; ++ wtd.omp_ctx = NULL; + cp_walk_tree (&DECL_SAVED_TREE (fndecl), cp_genericize_r, &wtd, NULL); + pointer_set_destroy (wtd.p_set); + VEC_free (tree, heap, wtd.bind_expr_stack); +diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h +index be61dad..c7ca180 100644 +--- a/gcc/cp/cp-tree.h ++++ b/gcc/cp/cp-tree.h +@@ -5003,10 +5003,10 @@ extern tree lazily_declare_fn (special_function_kind, + extern tree skip_artificial_parms_for (const_tree, tree); + extern int num_artificial_parms_for (const_tree); + extern tree make_alias_for (tree, tree); +-extern tree get_copy_ctor (tree); ++extern tree get_copy_ctor (tree, tsubst_flags_t); + extern tree get_copy_assign (tree); + extern tree get_default_ctor (tree); +-extern tree get_dtor (tree); ++extern tree get_dtor (tree, tsubst_flags_t); + extern tree locate_ctor (tree); + + /* In optimize.c */ +diff --git a/gcc/cp/method.c b/gcc/cp/method.c +index e6f3c25..a693222 100644 +--- a/gcc/cp/method.c ++++ b/gcc/cp/method.c +@@ -1,7 +1,7 @@ + /* Handle the hair of processing (but not expanding) inline functions. + Also manage function and variable name overloading. + Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, +- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 ++ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. + Contributed by Michael Tiemann (tiemann@cygnus.com) + +@@ -838,10 +838,10 @@ locate_fn_flags (tree type, tree name, tree argtype, int flags, + /* Locate the dtor of TYPE. */ + + tree +-get_dtor (tree type) ++get_dtor (tree type, tsubst_flags_t complain) + { + tree fn = locate_fn_flags (type, complete_dtor_identifier, NULL_TREE, +- LOOKUP_NORMAL, tf_warning_or_error); ++ LOOKUP_NORMAL, complain); + if (fn == error_mark_node) + return NULL_TREE; + return fn; +@@ -878,13 +878,13 @@ get_default_ctor (tree type) + /* Locate the copy ctor of TYPE. */ + + tree +-get_copy_ctor (tree type) ++get_copy_ctor (tree type, tsubst_flags_t complain) + { + int quals = (TYPE_HAS_CONST_COPY_CTOR (type) + ? TYPE_QUAL_CONST : TYPE_UNQUALIFIED); + tree argtype = build_stub_type (type, quals, false); + tree fn = locate_fn_flags (type, complete_ctor_identifier, argtype, +- LOOKUP_NORMAL, tf_warning_or_error); ++ LOOKUP_NORMAL, complain); + if (fn == error_mark_node) + return NULL_TREE; + return fn; +diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c +index 6b7ec39..48b37cf 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -3667,7 +3667,7 @@ cxx_omp_create_clause_info (tree c, tree type, bool need_default_ctor, + if (need_default_ctor) + t = get_default_ctor (type); + else +- t = get_copy_ctor (type); ++ t = get_copy_ctor (type, tf_warning_or_error); + + if (t && !trivial_fn_p (t)) + TREE_VEC_ELT (info, 0) = t; +@@ -3675,7 +3675,7 @@ cxx_omp_create_clause_info (tree c, tree type, bool need_default_ctor, + + if ((need_default_ctor || need_copy_ctor) + && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)) +- TREE_VEC_ELT (info, 1) = get_dtor (type); ++ TREE_VEC_ELT (info, 1) = get_dtor (type, tf_warning_or_error); + + if (need_copy_assignment) + { +new file mode 100644 +index 0000000..ec952d9 +--- /dev/null ++++ b/libgomp/testsuite/libgomp.c++/pr48869.C +@@ -0,0 +1,68 @@ ++// PR c++/48869 ++// { dg-do run } ++// { dg-options "-std=gnu++0x" } ++ ++template <const int N> ++struct A ++{ ++ A () {} ++ A (const A&) = delete; ++ void foo () {} ++ ~A () {} ++}; ++ ++template <const int N> ++struct B ++{ ++ B () {} ++ B (const B&) {} ++ void foo () {} ++ ~B () {} ++}; ++ ++void __attribute__((used)) ++foo (B<6> b6) ++{ ++ #pragma omp task ++ b6.foo (); ++} ++ ++int ++main () ++{ ++ A<0> a0; ++ #pragma omp task shared(a0) ++ a0.foo (); ++ #pragma omp task default(shared) ++ a0.foo (); ++ #pragma omp parallel shared(a0) ++ #pragma omp task ++ a0.foo (); ++ #pragma omp task ++ { ++ A<1> a1; ++ a1.foo (); ++ } ++ B<0> b0; ++ #pragma omp task shared(b0) ++ b0.foo (); ++ B<1> b1; ++ #pragma omp task default(shared) ++ b1.foo (); ++ B<2> b2; ++ #pragma omp parallel shared(b2) ++ #pragma omp task ++ b2.foo (); ++ B<3> b3; ++ #pragma omp task ++ b3.foo (); ++ B<4> b4; ++ #pragma omp parallel private (b4) ++ #pragma omp task ++ b4.foo (); ++ B<5> b5; ++ #pragma omp parallel firstprivate (b5) ++ #pragma omp task ++ b5.foo (); ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0282-gcc.c-torture-execute-960321-1.x-Remove.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0282-gcc.c-torture-execute-960321-1.x-Remove.patch new file mode 100644 index 000000000..5ad78e6af --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0282-gcc.c-torture-execute-960321-1.x-Remove.patch @@ -0,0 +1,30 @@ +From 74848914e56814b2e9c5983cb8c0dfb25b7db233 Mon Sep 17 00:00:00 2001 +From: ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 19 May 2011 08:03:10 +0000 +Subject: [PATCH] * gcc.c-torture/execute/960321-1.x: Remove. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173891 138bc75d-0d04-0410-961f-82ee72b054a4 + +deleted file mode 100644 +index 44cc702..0000000 +--- a/gcc/testsuite/gcc.c-torture/execute/960321-1.x ++++ /dev/null +@@ -1,15 +0,0 @@ +-# This test fails to link on 64-bit Solaris 2/x86 due to a Sun as bug. +-if { [istarget "i?86-*-solaris2*"] +- && ! [check_effective_target_ilp32] +- && ! [check_effective_target_gas] } { +- set torture_eval_before_compile { +- global compiler_conditional_xfail_data +- set compiler_conditional_xfail_data { +- "64-bit Sun as bug" \ +- { "i?86-*-solaris2*" } \ +- { "-O[1-3s]" } \ +- { "" } +- } +- } +-} +-return 0 +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0283-zh_CN.po-Update.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0283-zh_CN.po-Update.patch new file mode 100644 index 000000000..8d8e78699 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0283-zh_CN.po-Update.patch @@ -0,0 +1,1529 @@ +From de69adc282d3bdceef69886045a0638fb97b71c8 Mon Sep 17 00:00:00 2001 +From: jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 19 May 2011 10:00:01 +0000 +Subject: [PATCH] * zh_CN.po: Update. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173898 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 595043a..7025eae 100644 +--- a/gcc/po/zh_CN.po ++++ b/gcc/po/zh_CN.po +@@ -1,14 +1,14 @@ + # Simplified Chinese translation for gcc. + # Copyright (C) 2005 Free Software Foundation, Inc. + # This file is distributed under the same license as the gcc package. +-# Meng Jie <zuxy.meng@gmail.com>, 2005-2010. ++# Meng Jie <zuxy.meng@gmail.com>, 2005-2011. + # + msgid "" + msgstr "" + "Project-Id-Version: gcc 4.6.0\n" + "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" + "POT-Creation-Date: 2011-03-24 16:45+0000\n" +-"PO-Revision-Date: 2011-05-14 20:50+0800\n" ++"PO-Revision-Date: 2011-05-19 15:04+0800\n" + "Last-Translator: Meng Jie <zuxy.meng@gmail.com>\n" + "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" + "Language: zh_CN\n" +@@ -1449,7 +1449,6 @@ msgid "VOIDmode on an output" + msgstr "输出有 VOIDmode" + + #: reload1.c:8619 +-#, fuzzy + msgid "failure trying to reload:" + msgstr "试图重新载入时失败:" + +@@ -1637,9 +1636,8 @@ msgid "indirect function call with a yet undetermined callee" + msgstr "间接函数调用目标未定义" + + #: cif-code.def:92 +-#, fuzzy + msgid "function body can be overwriten at linktime" +-msgstr "函数体不可用" ++msgstr "函数体可能在链接时被改写" + + #. The remainder are real diagnostic types. + #: diagnostic.def:33 +@@ -3848,14 +3846,14 @@ msgid "%s:%d: [ skipping %d instantiation contexts ]\n" + msgstr "%s:%d:[ 跳过 %d 个实例化上下文 ]\n" + + #: cp/error.c:3009 +-#, fuzzy, c-format ++#, c-format + msgid "%s:%d:%d: in constexpr expansion of %qs" +-msgstr "在成员函数%qs中" ++msgstr "%s:%d:%d:在%qs的广义常表达式扩展中" + + #: cp/error.c:3013 +-#, fuzzy, c-format ++#, c-format + msgid "%s:%d: in constexpr expansion of %qs" +-msgstr "在成员函数%qs中" ++msgstr "%s:%d:在%qs的广义常表达式扩展中" + + #: cp/pt.c:1725 + msgid "candidates are:" +@@ -4445,7 +4443,7 @@ msgstr "内存分配失败" + + #: fortran/trans.c:639 fortran/trans.c:1039 + msgid "Allocation would exceed memory limit" +-msgstr "" ++msgstr "内存分配将超过内存上限" + + #: fortran/trans.c:729 + #, fuzzy, c-format +@@ -4705,9 +4703,8 @@ msgid "objc-cpp-output is deprecated; please use objective-c-cpp-output instead" + msgstr "" + + #: config/i386/nwld.h:34 +-#, fuzzy + msgid "static linking is not supported" +-msgstr "不支持静态链接。\n" ++msgstr "不支持静态链接" + + #: config/pa/pa-hpux10.h:89 config/pa/pa-hpux10.h:92 config/pa/pa-hpux10.h:100 + #: config/pa/pa-hpux10.h:103 config/pa/pa-hpux11.h:108 +@@ -4941,9 +4938,8 @@ msgid "Warn about truncated character expressions" + msgstr "对被截断的字符表达式给出警告" + + #: fortran/lang.opt:223 +-#, fuzzy + msgid "Warn about most implicit conversions" +-msgstr "对隐式函数声明给出警告" ++msgstr "对大多数隐式类型转换给出警告" + + #: fortran/lang.opt:227 + msgid "Warn about calls with implicit interface" +@@ -4978,9 +4974,8 @@ msgid "Warn if a user-procedure has the same name as an intrinsic" + msgstr "如果用户过程有与内建过程相同的名字则警告" + + #: fortran/lang.opt:263 +-#, fuzzy + msgid "Warn about unused dummy arguments." +-msgstr "为可能的哑元重叠给出警告" ++msgstr "对未使用的哑元给出警告。" + + #: fortran/lang.opt:267 + msgid "Enable preprocessing" +@@ -5177,9 +5172,8 @@ msgid "Enable range checking during compilation" + msgstr "启用编译时范围检查" + + #: fortran/lang.opt:479 +-#, fuzzy + msgid "Reallocate the LHS in assignments" +-msgstr "不返回的调用中有左值" ++msgstr "在赋值中重分配左值" + + #: fortran/lang.opt:483 + msgid "Use a 4-byte record marker for unformatted files" +@@ -6796,9 +6790,8 @@ msgid "Call mcount for profiling before a function prologue" + msgstr "为取样在函数前言中调用 mcount" + + #: config/rs6000/linux64.opt:28 +-#, fuzzy + msgid "Select code model" +-msgstr "未知的 tls-model“%s”" ++msgstr "选择代码模型" + + #: config/rs6000/sysv4.opt:24 + msgid "Select ABI calling convention" +@@ -9458,9 +9451,8 @@ msgid "Downgrade conformance errors to warnings" + msgstr "将兼容性错误降格为警告" + + #: c-family/c.opt:918 +-#, fuzzy + msgid "Enable Plan 9 language extensions" +-msgstr "启用链接器松弛" ++msgstr "启用九号计划语言扩展" + + #: c-family/c.opt:922 + msgid "Treat the input file as already preprocessed" +@@ -9643,9 +9635,8 @@ msgid "Conform to the ISO 1998 C++ standard, with extensions that are likely to" + msgstr "遵循 ISO 1998 C++ 标准,也支持可能集成在下一个 ISO C++ 标准中的扩展" + + #: c-family/c.opt:1147 +-#, fuzzy + msgid "Conform to the ISO 201X C standard draft (experimental and incomplete support)" +-msgstr "遵循 ISO 1990 C 标准于 1994 年修订的版本" ++msgstr "遵循 ISO 201X C 标准草案(试验性质的不完全支持)" + + #: c-family/c.opt:1151 c-family/c.opt:1155 c-family/c.opt:1198 + msgid "Conform to the ISO 1990 C standard" +@@ -9668,9 +9659,8 @@ msgid "Conform to the ISO 1998 C++ standard, with GNU extensions and" + msgstr "遵循 ISO 1998 C++ 标准,也支持 GNU 扩展和可能集成在下一代 ISO C++ 标准中的扩展" + + #: c-family/c.opt:1178 +-#, fuzzy + msgid "Conform to the ISO 201X C standard draft with GNU extensions (experimental and incomplete support)" +-msgstr "遵循 ISO 1998 C++ 标准,也支持 GNU 扩展和可能集成在下一代 ISO C++ 标准中的扩展" ++msgstr "遵循 ISO 201X C 标准草案和 GNU 扩展(试验性质的不完全支持)" + + #: c-family/c.opt:1182 c-family/c.opt:1186 + msgid "Conform to the ISO 1990 C standard with GNU extensions" +@@ -10258,9 +10248,8 @@ msgid "Enable Loop Blocking transformation" + msgstr "启用循环分块转换" + + #: common.opt:1140 +-#, fuzzy + msgid "Enable Loop Flattening transformation" +-msgstr "启用循环交换转换" ++msgstr "启用循环扁平化转换" + + #: common.opt:1144 + msgid "Force bitfield accesses to match their type width" +@@ -10371,7 +10360,7 @@ msgstr "-fira-algorithm=|CB|priority] 设置使用的 IRA 算法" + #: common.opt:1265 + #, fuzzy, c-format + msgid "unknown IRA algorithm %qs" +-msgstr "%<asm%>中出现未知的寄存器名%qs" ++msgstr "未知的 TLS 模型%qs" + + #: common.opt:1275 + msgid "-fira-region=[one|all|mixed] Set regions for IRA" +@@ -10380,7 +10369,7 @@ msgstr "-fira-region=[one|all|mixed] 设置 IRA 的区域" + #: common.opt:1278 + #, fuzzy, c-format + msgid "unknown IRA region %qs" +-msgstr "%<asm%>中出现未知的寄存器名%qs" ++msgstr "未知的 TLS 模型%qs" + + #: common.opt:1291 + msgid "Use IRA based register pressure calculation" +@@ -10452,7 +10441,6 @@ msgid "Set errno after built-in math functions" + msgstr "执行内建数学函数后设置 errno" + + #: common.opt:1365 +-#, fuzzy + msgid "-fmax-errors=<number>\tMaximum number of errors to report" + msgstr "-fmax-errors=<n>\t报告错误数量的上限值" + +@@ -10863,9 +10851,9 @@ msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet t + msgstr "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\t设定默认的线程局部存储代码生成模式" + + #: common.opt:1821 +-#, fuzzy, c-format ++#, c-format + msgid "unknown TLS model %qs" +-msgstr "tls_model 的实参不是一个字符串" ++msgstr "未知的 TLS 模型%qs" + + #: common.opt:1837 + msgid "Reorder top level functions, variables, and asms" +@@ -11282,7 +11270,7 @@ msgstr "实参太多" + #: go/gofrontend/expressions.cc:7395 + #, fuzzy + msgid "argument must be array or slice or channel" +-msgstr "实参必须是常数" ++msgstr "右实参必须是一个切片或字符串" + + #: go/gofrontend/expressions.cc:7405 + msgid "argument must be string or array or slice or map or channel" +@@ -11492,20 +11480,19 @@ msgid "different parameter types" + msgstr "形参类型不同" + + #: go/gofrontend/types.cc:2535 +-#, fuzzy + msgid "different varargs" +-msgstr "在不同命名空间中特例化%q#T" ++msgstr "不同的可变参数" + + #: go/gofrontend/types.cc:2544 go/gofrontend/types.cc:2557 + #: go/gofrontend/types.cc:2572 + #, fuzzy + msgid "different number of results" +-msgstr "无效的版本号‘%s’" ++msgstr "形参数量不同" + + #: go/gofrontend/types.cc:2565 + #, fuzzy + msgid "different result types" +-msgstr "与%q+D类型冲突" ++msgstr "不同的接收器类型" + + #: go/gofrontend/types.cc:3546 + #, c-format +@@ -11541,7 +11528,7 @@ msgstr "方法%s%s%s类型不兼容" + #: go/gofrontend/types.cc:5891 go/gofrontend/types.cc:6026 + #, fuzzy, c-format + msgid "incompatible type for method %s%s%s (%s)" +-msgstr "%2$qE的第 %1$d 个实参类型不兼容" ++msgstr "方法%s%s%s类型不兼容" + + #: go/gofrontend/types.cc:5963 go/gofrontend/types.cc:5976 + msgid "pointer to interface type has no methods" +@@ -11838,9 +11825,9 @@ msgid "unused variable %q+D" + msgstr "未使用的变量%q+D" + + #: c-decl.c:1183 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "variable %qD set but not used" +-msgstr "标号%q+D定义后未使用" ++msgstr "变量%qD被设定但未被使用" + + #: c-decl.c:1188 + #, gcc-internal-format +@@ -11953,9 +11940,9 @@ msgid "conflicting type qualifiers for %q+D" + msgstr "%q+D的类型限定冲突" + + #: c-decl.c:1805 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "redefinition of typedef %q+D with different type" +-msgstr "typedef%q+D重定义" ++msgstr "typedef%q+D重定义时具有不同类型" + + #: c-decl.c:1818 + #, fuzzy, gcc-internal-format +@@ -13119,9 +13106,9 @@ msgid "no return statement in function returning non-void" + msgstr "在有返回值的函数中未发现 return 语句" + + #: c-decl.c:8299 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "parameter %qD set but not used" +-msgstr "形参%qD已初始化" ++msgstr "形参%qD被设定但未被使用" + + #. If we get here, declarations have been used in a for loop without + #. the C99 for loop scope. This doesn't make much sense, so don't +@@ -13337,9 +13324,9 @@ msgid "prefix attributes are ignored for implementations" + msgstr "属性在模板实例化上被忽略" + + #: c-parser.c:1554 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "unexpected attribute" +-msgstr "属性声明" ++msgstr "非预期的属性" + + #: c-parser.c:1596 + #, gcc-internal-format +@@ -13595,7 +13582,7 @@ msgstr "此指令中寄存器无效" + #: c-parser.c:4880 + #, fuzzy, gcc-internal-format + msgid "missing collection in fast enumeration" +-msgstr "函数调用中缺少哨兵" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #: c-parser.c:4951 + #, gcc-internal-format +@@ -15267,9 +15254,9 @@ msgid "nonempty exits list of loop %d, but exits are not recorded" + msgstr "循环 %d 退出列表非空,但是退出未被记录" + + #: cfgloop.c:1514 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "exit %d->%d not recorded" +-msgstr "退出 %d->%d 不记录" ++msgstr "退出 %d->%d 未被记录" + + #: cfgloop.c:1532 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -16368,14 +16355,14 @@ msgid "multilib exclusion %qs is invalid" + msgstr "C++ 不允许在%qs表达式中定义类型" + + #: gcc.c:7775 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "environment variable %qs not defined" +-msgstr "没有定义 DJGPP 环境变量" ++msgstr "环境变量%qs未定义" + + #: gcc.c:7887 gcc.c:7892 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "invalid version number %qs" +-msgstr "%qs的版本是%q.*s,需要的版本%q.*s" ++msgstr "无效的版本号%qs" + + #: gcc.c:7935 + #, gcc-internal-format, gfc-internal-format +@@ -16901,14 +16888,14 @@ msgid "unrecognized command line option %<-fdump-%s%>" + msgstr "命令行选项文件“%s”不存在" + + #: opts-global.c:387 opts-global.c:395 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "plugin support is disabled; configure with --enable-plugin" +-msgstr "插件支持被禁用。配置时需带 -enable-plugin。" ++msgstr "插件支持被禁用;配置时需带 -enable-plugin" + + #: opts-global.c:419 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "unrecognized register name %qs" +-msgstr "%<asm%>中出现未知的寄存器名%qs" ++msgstr "不可识别的寄存名%qs" + + #: opts.c:86 + #, gcc-internal-format +@@ -17046,7 +17033,7 @@ msgid "unrecognized gcc debugging option: %c" + msgstr "无法识别的 gcc 调试选项:%c" + + #: opts.c:1968 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "-Werror=%s: no option -%s" + msgstr "-Werror=%s:没有选项 -%s" + +@@ -17642,9 +17629,9 @@ msgid "-frecord-gcc-switches is not supported by the current target" + msgstr "-frecord-gcc-switches 在此目标机上不受支持" + + #: toplev.c:1058 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "-fstack-usage not supported for this target" +-msgstr "-fstack-protector 在此目标机上不受支持" ++msgstr "-fstack-usage 在此目标机上不受支持" + + #: toplev.c:1295 + #, gcc-internal-format +@@ -19453,9 +19440,9 @@ msgid "invalid pointer mode %qs" + msgstr "无效的指针模式%qs" + + #: c-family/c-common.c:6446 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "signedness of type and machine mode %qs don%'t match" +-msgstr "类型的符号与机器模式 %qs 不匹配" ++msgstr "类型的符号与机器模式%qs不匹配" + + #: c-family/c-common.c:6457 + #, gcc-internal-format +@@ -19554,7 +19541,7 @@ msgid "attribute %qE argument not a string" + msgstr "%qE属性需要一个字符串常量作为实参" + + #: c-family/c-common.c:6809 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "indirect function %q+D cannot be declared weakref" + msgstr "内联函数%q+D不能声明为有弱链接" + +@@ -19723,14 +19710,14 @@ msgid "requested position is less than zero" + msgstr "要求的位置小于 0" + + #: c-family/c-common.c:7801 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "bad option %s to optimize attribute" +-msgstr "optimize 属性的选项 %s 无效。" ++msgstr "optimize 属性选项 %s 无效" + + #: c-family/c-common.c:7804 +-#, fuzzy, gcc-internal-format, gfc-internal-format ++#, gcc-internal-format, gfc-internal-format + msgid "bad option %s to pragma attribute" +-msgstr "pragma attribute 选项 %s 无效" ++msgstr "pragma 属性选项 %s 无效" + + #: c-family/c-common.c:8033 + #, gcc-internal-format +@@ -19898,9 +19885,9 @@ msgid "decrement of function %qD" + msgstr "令函数%qD自减" + + #: c-family/c-common.c:8630 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "function %qD used as %<asm%> output" +-msgstr "只读成员%qD用作%<asm%>的输出" ++msgstr "函数%qD用作%<asm%>的输出" + + #: c-family/c-common.c:8636 + #, gcc-internal-format +@@ -21084,7 +21071,7 @@ msgstr "静态断言错误:%E" + #: config/darwin-driver.c:136 + #, gcc-internal-format + msgid "couldn%'t understand kern.osversion %q.*s" +-msgstr "" ++msgstr "不能识别 kern.osversion%q.*s" + + #: config/darwin.c:1608 + #, gcc-internal-format +@@ -21127,9 +21114,9 @@ msgid "built-in function %qD requires the %<-mconstant-cfstrings%> flag" + msgstr "内建函数%q+D未被声明为函数" + + #: config/darwin.c:3124 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "built-in function %qD takes one argument only" +-msgstr "内建函数%q+D未被声明为函数" ++msgstr "内建函数%qD只需要一个实参" + + #: config/darwin.c:3197 + #, gcc-internal-format +@@ -21221,7 +21208,7 @@ msgstr "PIC 只在 RTP 上受支持" + #: config/darwin.h:150 + #, gcc-internal-format + msgid "%<-fobjc-abi-version%> >= 2 is only supported on %<-m64%> targets for %<-fnext-runtime%>" +-msgstr "" ++msgstr "%<-fobjc-abi-version%> >= 2 只在%<-m64%>目标下支持%<-fnext-runtime%>" + + #. Mach-O supports 'weak imports', and 'weak definitions' in coalesced + #. sections. machopic_select_section ensures that weak variables go in +@@ -21521,9 +21508,9 @@ msgid "PCS variant" + msgstr "PCS 变动" + + #: config/arm/arm.c:4076 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "Thumb-1 hard-float VFP ABI" +-msgstr "-mfloat-abi=hard 和 VFP" ++msgstr "Thumb-1 硬件浮点 VFP ABI" + + #: config/arm/arm.c:4784 config/arm/arm.c:4802 config/avr/avr.c:4936 + #: config/avr/avr.c:4952 config/bfin/bfin.c:5562 config/bfin/bfin.c:5623 +@@ -22112,9 +22099,9 @@ msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic" + msgstr "-mfentry 在 32 位下不能和 -pic 同时使用" + + #: config/i386/i386.c:4254 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "-mno-fentry isn%'t compatible with SEH" +-msgstr "-mas100-syntax 与 -gdwarf 不兼容" ++msgstr "-mno-fentry 与 SEH 不兼容" + + #: config/i386/i386.c:4668 + #, gcc-internal-format, gfc-internal-format +@@ -22134,7 +22121,7 @@ msgstr "fastcall 和 regparm 属性互不兼容" + #: config/i386/i386.c:5309 + #, fuzzy, gcc-internal-format + msgid "regparam and thiscall attributes are not compatible" +-msgstr "fastcall 和 regparm 属性互不兼容" ++msgstr "fastcall 和 thiscall 属性互不兼容" + + #: config/i386/i386.c:5316 config/i386/i386.c:29385 + #, gcc-internal-format +@@ -22274,7 +22261,7 @@ msgstr "%<-fsplit-stack%>只在 GNU/Linux 下被支持" + #: config/i386/i386.c:9169 + #, gcc-internal-format + msgid "%<-fsplit-stack%> requires assembler support for CFI directives" +-msgstr "" ++msgstr "%<-fsplit-stack%>需要汇编器支持 CFI 伪指令" + + #: config/i386/i386.c:10330 + #, fuzzy, gcc-internal-format +@@ -22284,7 +22271,7 @@ msgstr "ms_hook_prologue 与嵌套函数不兼容" + #: config/i386/i386.c:11298 + #, fuzzy, gcc-internal-format + msgid "-fsplit-stack does not support fastcall with nested function" +-msgstr "ms_hook_prologue 与嵌套函数不兼容" ++msgstr "-fsplit-stack 不支持在嵌套函数中使用两个寄存器参数" + + #: config/i386/i386.c:11312 + #, gcc-internal-format +@@ -22952,7 +22939,7 @@ msgstr "非预期的 %d 字节 cop 指令" + #: config/microblaze/microblaze.c:1283 + #, gcc-internal-format + msgid "-mno-clearbss is deprecated; use -fno-zero-initialized-in-bss" +-msgstr "" ++msgstr "-mno-clearbss已不建议使用;请改用 -fno-zero-initialized-in-bss" + + #: config/microblaze/microblaze.c:1286 + #, gcc-internal-format +@@ -24706,13 +24693,13 @@ msgstr "无法将右值%qE绑定到%qT" + #: cp/call.c:5699 + #, gcc-internal-format + msgid "cannot pass objects of non-trivially-copyable type %q#T through %<...%>" +-msgstr "不能通过%<...%>传递有非平凡复制的类型%q#T" ++msgstr "不能通过%<...%>传递有不能平凡复制的类型%q#T" + + #. conditionally-supported behavior [expr.call] 5.2.2/7. + #: cp/call.c:5728 + #, gcc-internal-format + msgid "cannot receive objects of non-trivially-copyable type %q#T through %<...%>; " +-msgstr "不能通过%<...%>接受有非平凡复制的类型%q#T;" ++msgstr "不能通过%<...%>接受不能平凡复制的类型%q#T;" + + #: cp/call.c:5774 + #, gcc-internal-format +@@ -24867,7 +24854,7 @@ msgstr "Java 类%qT不能有析构函数" + #: cp/class.c:978 + #, gcc-internal-format + msgid "Java class %qT cannot have an implicit non-trivial destructor" +-msgstr "Java 类%qT不能有隐式的非平凡的析构函数" ++msgstr "Java 类%qT不能有隐式的不平凡的析构函数" + + #: cp/class.c:1079 + #, gcc-internal-format +@@ -25328,64 +25315,64 @@ msgid "pseudo-destructor is not called" + msgstr "伪析构函数未被调用" + + #: cp/cvt.c:961 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "conversion to void will not access object of incomplete type %qT" +-msgstr "对不完全的类型%q#T的非法使用" ++msgstr "向 void 的类型转换不会访问具有不完全类型%qT的对象" + + #: cp/cvt.c:965 + #, gcc-internal-format + msgid "indirection will not access object of incomplete type %qT in second operand of conditional expression" +-msgstr "" ++msgstr "提领不会访问作为条件表达式第二个操作数的具有不完全类型%qT的对象" + + #: cp/cvt.c:970 + #, gcc-internal-format + msgid "indirection will not access object of incomplete type %qT in third operand of conditional expression" +-msgstr "" ++msgstr "提领不会访问作为条件表达式第三个操作数的具有不完全类型%qT的对象" + + #: cp/cvt.c:975 + #, gcc-internal-format + msgid "indirection will not access object of incomplete type %qT in right operand of comma operator" +-msgstr "" ++msgstr "提领不会访问作为逗号操作符右操作数的具有不完全类型%qT的对象" + + #: cp/cvt.c:980 + #, gcc-internal-format + msgid "indirection will not access object of incomplete type %qT in left operand of comma operator" +-msgstr "" ++msgstr "提领不会访问作为逗号操作符左操作数的具有不完全类型%qT的对象" + + #: cp/cvt.c:985 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "indirection will not access object of incomplete type %qT in statement" +-msgstr "%qs不能用于不完全的类型%qT" ++msgstr "提领不会访问语句中具有不完全类型的对象%qT" + + #: cp/cvt.c:989 + #, gcc-internal-format + msgid "indirection will not access object of incomplete type %qT in for increment expression" +-msgstr "" ++msgstr "提领不会访问 for 循环增量表达式中具有不完全类型%qT的对象" + + #: cp/cvt.c:1005 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "conversion to void will not access object of type %qT" +-msgstr "将类型为%2$qT的右值转换为%1$qT的 volatile 引用" ++msgstr "向 void 的转换不会访问具有类型%qT的对象" + + #: cp/cvt.c:1009 + #, gcc-internal-format + msgid "implicit dereference will not access object of type %qT in second operand of conditional expression" +-msgstr "" ++msgstr "隐式提领不会访问作为条件表达式第二个操作数的具有类型%qT的对象" + + #: cp/cvt.c:1014 + #, gcc-internal-format + msgid "implicit dereference will not access object of type %qT in third operand of conditional expression" +-msgstr "" ++msgstr "隐式提领不会访问作为条件表达式第三个操作数的具有类型%qT的对象" + + #: cp/cvt.c:1019 + #, gcc-internal-format + msgid "implicit dereference will not access object of type %qT in right operand of comma operator" +-msgstr "" ++msgstr "隐式提领不会访问作为逗号操作符右操作数的具有类型%qT的对象" + + #: cp/cvt.c:1024 + #, gcc-internal-format + msgid "implicit dereference will not access object of type %qT in left operand of comma operator" +-msgstr "" ++msgstr "隐式提领不会访问作为逗号操作符左操作数的具有类型%qT的对象" + + #: cp/cvt.c:1029 + #, gcc-internal-format +@@ -25395,77 +25382,77 @@ msgstr "隐式提领不会访问语句中类型为%qT的对象" + #: cp/cvt.c:1033 + #, gcc-internal-format + msgid "implicit dereference will not access object of type %qT in for increment expression" +-msgstr "" ++msgstr "隐式提领不会访问 for 循环增量表达式中具有类型%qT的对象" + + #: cp/cvt.c:1047 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "conversion to void will not access object of non-trivially-copyable type %qT" +-msgstr "不能通过%<...%>传递有非平凡复制的类型%q#T" ++msgstr "向 void 的转换不会访问具有不能平凡复制类型%qT的对象" + + #: cp/cvt.c:1052 + #, gcc-internal-format + msgid "indirection will not access object of non-trivially-copyable type %qT in second operand of conditional expression" +-msgstr "" ++msgstr "提领不会访问作为条件表达式第二个操作数的具有不能平凡复制类型%qT的对象" + + #: cp/cvt.c:1057 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "indirection will not access object of non-trivially-copyable type %qT in third operand of conditional expression" +-msgstr "不能通过%<...%>传递有非平凡复制的类型%q#T" ++msgstr "提领不会访问作为条件表达式第三个操作数的具有不能平凡复制类型%qT的对象" + + #: cp/cvt.c:1062 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "indirection will not access object of non-trivially-copyable type %qT in right operand of comma operator" +-msgstr "不能通过%<...%>传递有非平凡复制的类型%q#T" ++msgstr "提领不会访问作为逗号操作符右操作数的具有不能平凡复制类型%qT的对象" + + #: cp/cvt.c:1067 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "indirection will not access object of non-trivially-copyable type %qT in left operand of comma operator" +-msgstr "不能通过%<...%>传递有非平凡复制的类型%q#T" ++msgstr "提领不会访问作为逗号操作符左操作数的具有不能平凡复制类型%qT的对象" + + #: cp/cvt.c:1072 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "indirection will not access object of non-trivially-copyable type %qT in statement" +-msgstr "不能通过%<...%>传递有非平凡复制的类型%q#T" ++msgstr "提领不会访问语句中具有不能平凡复制类型%qT的对象" + + #: cp/cvt.c:1077 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "indirection will not access object of non-trivially-copyable type %qT in for increment expression" +-msgstr "不能通过%<...%>传递有非平凡复制的类型%q#T" ++msgstr "提领不会访问 for 循环增量表达式中具有不能平凡复制类型%qT的对象" + + #: cp/cvt.c:1115 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "conversion to void will not access object %qE of incomplete type %qT" +-msgstr "将类型为%2$qT的右值转换为%1$qT的 volatile 引用" ++msgstr "向 void 的转换不会访问具有不完全类型%2$qT的对象%1$qE" + + #: cp/cvt.c:1119 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "variable %qE of incomplete type %qT will not be accessed in second operand of conditional expression" +-msgstr "对象%qE具有不完全的类型%qT,不会在 %s 中被访问" ++msgstr "条件表达式第二个操作数中的对象%qE具有不完全的类型%qT,不会被访问" + + #: cp/cvt.c:1124 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "variable %qE of incomplete type %qT will not be accessed in third operand of conditional expression" +-msgstr "对象%qE具有不完全的类型%qT,不会在 %s 中被访问" ++msgstr "条件表达式第三个操作数中的对象%qE具有不完全的类型%qT,不会被访问" + + #: cp/cvt.c:1129 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "variable %qE of incomplete type %qT will not be accessed in right operand of comma operator" +-msgstr "对象%qE具有不完全的类型%qT,不会在 %s 中被访问" ++msgstr "逗号操作符的右操作数中的对象%qE具有不完全的类型%qT,不会被访问" + + #: cp/cvt.c:1134 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "variable %qE of incomplete type %qT will not be accessed in left operand of comma operator" +-msgstr "对象%qE具有不完全的类型%qT,不会在 %s 中被访问" ++msgstr "逗号操作符的左操作数中的对象%qE具有不完全的类型%qT,不会被访问" + + #: cp/cvt.c:1139 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "variable %qE of incomplete type %qT will not be accessed in statement" +-msgstr "对象%qE具有不完全的类型%qT,不会在 %s 中被访问" ++msgstr "语句中的对象%qE具有不完全的类型%qT,不会被访问" + + #: cp/cvt.c:1143 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "variable %qE of incomplete type %qT will not be accessed in for increment expression" +-msgstr "对象%qE具有不完全的类型%qT,不会在 %s 中被访问" ++msgstr "for 循环增量表达式中的对象%qE具有不完全的类型%qT,不会被访问" + + #: cp/cvt.c:1192 + #, fuzzy, gcc-internal-format +@@ -25580,7 +25567,7 @@ msgstr " 备选转换包括%qD和%qD" + #: cp/decl.c:636 + #, fuzzy, gcc-internal-format + msgid "variable %q+D set but not used" +-msgstr "标号%q+D定义后未使用" ++msgstr "变量%qD被设定但未被使用" + + #: cp/decl.c:1101 + #, gcc-internal-format +@@ -25605,7 +25592,7 @@ msgstr "从先前的声明%q+F" + #: cp/decl.c:1161 + #, gcc-internal-format + msgid "redeclaration %qD differs in %<constexpr%>" +-msgstr "对%qD的重声明在%<constexpr%>中" ++msgstr "对%qD的重声明在%<constexpr%>方面" + + #: cp/decl.c:1162 + #, gcc-internal-format +@@ -25876,7 +25863,7 @@ msgstr "跳过了%q+#D的初始化" + #: cp/decl.c:2648 cp/decl.c:2764 + #, gcc-internal-format + msgid " enters scope of %q+#D which has non-trivial destructor" +-msgstr "进入了有非平凡析构函数的%q+#D的作用域" ++msgstr "进入了有不平凡析构函数的%q+#D的作用域" + + #: cp/decl.c:2662 cp/decl.c:2769 + #, gcc-internal-format +@@ -26030,9 +26017,9 @@ msgid "%<typedef%> was ignored in this declaration" + msgstr "此声明中的%<typedef%>被忽略" + + #: cp/decl.c:4085 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<constexpr%> cannot be used for type declarations" +-msgstr "%<constexpr>不能被用作类型声明" ++msgstr "%<constexpr%>不能被用作类型声明" + + #: cp/decl.c:4114 + #, gcc-internal-format +@@ -26184,9 +26171,9 @@ msgid "uninitialized const %qD" + msgstr "未初始化的常量%qD" + + #: cp/decl.c:4825 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%q#T has no user-provided default constructor" +-msgstr "类型%qE没有可以调用的默认构造函数" ++msgstr "%q#T没有用户提供的默认构造函数" + + #: cp/decl.c:4829 + #, gcc-internal-format +@@ -26287,7 +26274,7 @@ msgstr "隐藏了早先的类型声明%q#D" + #: cp/decl.c:5935 + #, gcc-internal-format + msgid "%qD cannot be thread-local because it has non-trivial type %qT" +-msgstr "%qD不能是线程局部的,因为它有非简单旧数据的类型%qT" ++msgstr "%qD不能是线程局部的,因为它有不平凡的类型%qT" + + #: cp/decl.c:5977 + #, gcc-internal-format +@@ -26690,9 +26677,9 @@ msgid "function definition does not declare parameters" + msgstr "函数定义未声明形参" + + #: cp/decl.c:8208 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<constexpr%> cannot appear in a typedef declaration" +-msgstr "%<constexpr>不能被用作类型声明" ++msgstr "%<constexpr%>不能被用于 typedef 声明" + + #: cp/decl.c:8216 + #, gcc-internal-format +@@ -26966,9 +26953,9 @@ msgid "both %<const%> and %<constexpr%> cannot be used here" + msgstr "不能在这里同时使用%<const%>和%<constexpr%>" + + #: cp/decl.c:9025 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "both %<volatile%> and %<constexpr%> cannot be used here" +-msgstr "不能在这里同时使用%<const%>和%<constexpr%>" ++msgstr "不能在这里同时使用%<volatile%>和%<constexpr%>" + + #: cp/decl.c:9034 + #, gcc-internal-format +@@ -27151,7 +27138,7 @@ msgstr "%qD声明为%qT的一个成员" + #: cp/decl.c:9617 + #, gcc-internal-format + msgid "a destructor cannot be %<constexpr%>" +-msgstr "析构函数不能是 %<constexpr%>" ++msgstr "析构函数不能是%<constexpr%>" + + #: cp/decl.c:9623 + #, gcc-internal-format +@@ -27270,9 +27257,9 @@ msgid "cannot explicitly declare member %q#D to have extern linkage" + msgstr "不能显式地将成员%q#D声明为有外部链接" + + #: cp/decl.c:9959 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "declaration of constexpr variable %qD is not a definition" +-msgstr "constexpr 变量%2$qD的类型%1$qT不是字面常量" ++msgstr "对广义常变量%qD的声明不同时是定义" + + #: cp/decl.c:9970 + #, gcc-internal-format +@@ -27650,7 +27637,7 @@ msgstr "形参%qD被声明为 void" + #: cp/decl.c:13027 + #, fuzzy, gcc-internal-format + msgid "parameter %q+D set but not used" +-msgstr "标号%q+D定义后未使用" ++msgstr "形参%qD被设定但未被使用" + + #: cp/decl.c:13118 + #, gcc-internal-format +@@ -28292,7 +28279,7 @@ msgstr "%<new%>%q#T时常量未初始化" + #: cp/init.c:1932 + #, fuzzy, gcc-internal-format + msgid "uninitialized const member in %q#T" +-msgstr "%<new%>%q#T时常量未初始化" ++msgstr "%q#T中有未初始化的引用成员" + + #: cp/init.c:2029 + #, gcc-internal-format +@@ -28355,7 +28342,7 @@ msgid "call to Java constructor, while %<jclass%> undefined" + msgstr "调用 Java 构造函数,但没有定义%<jclass%>" + + #: cp/init.c:2691 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "can%'t find %<class$%> in %qT" + msgstr "%qT中找不到%<class$%>" + +@@ -28550,9 +28537,9 @@ msgid "does not match expected signature %qD" + msgstr "不匹配%qD预期的签名" + + #: cp/method.c:1581 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD cannot be declared as constexpr" +-msgstr "%qD不能被声明为静态的" ++msgstr "%qD不能被声明为广义常表达式" + + #: cp/method.c:1621 + #, gcc-internal-format +@@ -28898,24 +28885,24 @@ msgid "%<%E::%E%> is not a class or namespace" + msgstr "%<%E::%E%>既不是类也不是命名空间" + + #: cp/parser.c:2382 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<%E::%E%> is not a class, namespace, or enumeration" +-msgstr "%qT既不是类也不是命名空间" ++msgstr "%<%E::%E%>不是类、命名空间或枚举" + + #: cp/parser.c:2395 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<::%E%> is not a type" +-msgstr "%<%T::%E%>不是一个类型" ++msgstr "%<::%E%>不是一个类型" + + #: cp/parser.c:2398 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<::%E%> is not a class or namespace" +-msgstr "%q#T 不是类或命名空间" ++msgstr "%<::%E%>既不是类也不是命名空间" + + #: cp/parser.c:2402 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<::%E%> is not a class, namespace, or enumeration" +-msgstr "%qT既不是类也不是命名空间" ++msgstr "%<::%E%>不是类、命名空间或枚举" + + #: cp/parser.c:2414 + #, gcc-internal-format +@@ -28980,7 +28967,7 @@ msgstr "常量表达式中不能出现目标不是整型或枚举型的类型转 + #: cp/parser.c:2598 + #, fuzzy, gcc-internal-format + msgid "%<typeid%> operator cannot appear in a constant-expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "函数调用不能出现在常量表达式中" + + #: cp/parser.c:2602 + #, fuzzy, gcc-internal-format +@@ -28988,29 +28975,29 @@ msgid "non-constant compound literals cannot appear in a constant-expression" + msgstr "%qD不能出现在常量表达式中" + + #: cp/parser.c:2606 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "a function call cannot appear in a constant-expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "函数调用不能出现在常量表达式中" + + #: cp/parser.c:2610 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "an increment cannot appear in a constant-expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "自增不能出现在常量表达式中" + + #: cp/parser.c:2614 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "an decrement cannot appear in a constant-expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "自减不能出现在常量表达式中" + + #: cp/parser.c:2618 + #, fuzzy, gcc-internal-format + msgid "an array reference cannot appear in a constant-expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "函数调用不能出现在常量表达式中" + + #: cp/parser.c:2622 + #, fuzzy, gcc-internal-format + msgid "the address of a label cannot appear in a constant-expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "函数调用不能出现在常量表达式中" + + #: cp/parser.c:2626 + #, fuzzy, gcc-internal-format +@@ -29025,7 +29012,7 @@ msgstr "%qD不能出现在常量表达式中" + #: cp/parser.c:2633 + #, fuzzy, gcc-internal-format + msgid "a comma operator cannot appear in a constant-expression" +-msgstr "%qD不能出现在常量表达式中" ++msgstr "函数调用不能出现在常量表达式中" + + #: cp/parser.c:2637 + #, fuzzy, gcc-internal-format +@@ -29168,7 +29155,7 @@ msgstr "typedef 名%qD用于析构函数声明" + #: cp/parser.c:4472 cp/parser.c:15219 + #, fuzzy, gcc-internal-format + msgid "expected unqualified-id" +-msgstr "无效的模板 ID" ++msgstr "需要模板 ID" + + #: cp/parser.c:4576 + #, fuzzy, gcc-internal-format +@@ -29213,9 +29200,9 @@ msgid "non-scalar type" + msgstr "非标准类型" + + #: cp/parser.c:5957 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "ISO C++ does not allow %<alignof%> with a non-type" +-msgstr "ISO C++ 不允许指定元素初始值设定" ++msgstr "ISO C++ 不允许对非类型使用%<alignof%>" + + #: cp/parser.c:6016 + #, fuzzy, gcc-internal-format +@@ -29283,9 +29270,9 @@ msgid "default argument specified for lambda parameter" + msgstr "为 lambda 形参指定了默认参数" + + #: cp/parser.c:8211 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected labeled-statement" +-msgstr "需要 %s 语句在%L处" ++msgstr "需要标号语句" + + #: cp/parser.c:8249 + #, gcc-internal-format +@@ -29303,9 +29290,9 @@ msgid "%<%T::%D%> names the constructor, not the type" + msgstr "%<%T::%D%>命名了一个构造函数而非类型" + + #: cp/parser.c:8590 cp/parser.c:20971 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected selection-statement" +-msgstr "需要 %s 语句在%L处" ++msgstr "需要选择语句" + + #: cp/parser.c:8623 + #, gcc-internal-format +@@ -29318,14 +29305,14 @@ msgid "inconsistent begin/end types in range-based for: %qT and %qT" + msgstr "对%qT不一致的演绎:先是%qT然后是%qT" + + #: cp/parser.c:9044 cp/parser.c:20974 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected iteration-statement" +-msgstr "需要 %s 语句在%L处" ++msgstr "需要循环语句" + + #: cp/parser.c:9091 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "range-based-for loops are not allowed in C++98 mode" +-msgstr "此上下文中不允许标准转换" ++msgstr "C++98 模式下不允许使用基于范围的 for 循环" + + #. Issue a warning about this use of a GNU extension. + #: cp/parser.c:9213 +@@ -29334,9 +29321,9 @@ msgid "ISO C++ forbids computed gotos" + msgstr "ISO C++ 不允许计算转移" + + #: cp/parser.c:9226 cp/parser.c:20977 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected jump-statement" +-msgstr "需要 %s 语句在%L处" ++msgstr "需要跳转语句" + + #: cp/parser.c:9358 cp/parser.c:17788 + #, gcc-internal-format +@@ -29499,14 +29486,14 @@ msgid "invalid non-type template argument" + msgstr "%qs(有%qT)的实参类型无效" + + #: cp/parser.c:12366 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "explicit instantiation shall not use %<inline%> specifier" +-msgstr "显式实例化非模板类型%qT" ++msgstr "显式实例化不应当使用%<inline%>限定符" + + #: cp/parser.c:12369 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "explicit instantiation shall not use %<constexpr%> specifier" +-msgstr "显式实例化非模板类型%qT" ++msgstr "显式实例化不应当使用%<constexpr%>限定符" + + #: cp/parser.c:12426 + #, gcc-internal-format +@@ -29516,7 +29503,7 @@ msgstr "特例化模板有 C 链接" + #: cp/parser.c:12646 + #, fuzzy, gcc-internal-format + msgid "expected type specifier" +-msgstr "需要表达式类型" ++msgstr "需要类型限定" + + #: cp/parser.c:12863 + #, fuzzy, gcc-internal-format +@@ -29524,9 +29511,9 @@ msgid "expected template-id for type" + msgstr " 需要有%qD类型的模板,却得到了%qT" + + #: cp/parser.c:12890 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected type-name" +-msgstr "需要类名" ++msgstr "需要类型名" + + #: cp/parser.c:13077 + #, gcc-internal-format +@@ -29559,9 +29546,9 @@ msgid "%qD is an enumeration template" + msgstr "%qD不是一个枚举模板" + + #: cp/parser.c:13488 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD is not an enumerator-name" +-msgstr "%qD不是一个命名空间" ++msgstr "%qD不是一个枚举名" + + #: cp/parser.c:13551 + #, fuzzy, gcc-internal-format +@@ -29604,9 +29591,9 @@ msgid "%qD is not a namespace-name" + msgstr "%qD不是一个命名空间名" + + #: cp/parser.c:13840 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected namespace-name" +-msgstr "需要类名" ++msgstr "需要命名空间名" + + #: cp/parser.c:13965 + #, gcc-internal-format +@@ -29640,14 +29627,14 @@ msgstr "" + + #. Anything else is an error. + #: cp/parser.c:14616 cp/parser.c:16529 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected initializer" +-msgstr "无效的初始值设定" ++msgstr "需要初始值设定" + + #: cp/parser.c:14636 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "invalid type in declaration" +-msgstr "形参声明中出现的 typedef 声明无效" ++msgstr "声明中有无效类型" + + #: cp/parser.c:14712 + #, gcc-internal-format +@@ -29689,14 +29676,14 @@ msgstr "使用%<%T::%D%>而不是%<%T::%D%>来以限定名指定构造函数" + #. information about its original syntactic + #. form. + #: cp/parser.c:15314 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "invalid declarator" +-msgstr "无效的初始值设定" ++msgstr "无效的声明" + + #: cp/parser.c:15380 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected declarator" +-msgstr "在%C处需要‘(’" ++msgstr "需要声明" + + #: cp/parser.c:15475 + #, gcc-internal-format +@@ -29719,14 +29706,14 @@ msgid "invalid use of %<auto%>" + msgstr "错误地使用了%<auto%>" + + #: cp/parser.c:15691 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "types may not be defined in template arguments" +-msgstr "不能%<typeid%>中定义类型" ++msgstr "不能在模板实参中定义类型" + + #: cp/parser.c:15772 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected type-specifier" +-msgstr "需要表达式类型" ++msgstr "需要类型限定" + + #: cp/parser.c:16016 + #, gcc-internal-format +@@ -29759,7 +29746,7 @@ msgid "ISO C++ does not allow designated initializers" + msgstr "ISO C++ 不允许指定元素初始值设定" + + #: cp/parser.c:16750 cp/parser.c:16872 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected class-name" + msgstr "需要类名" + +@@ -29779,9 +29766,9 @@ msgid "expected %<;%> after union definition" + msgstr "联合定义后需要%<;%>" + + #: cp/parser.c:17341 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "expected %<{%> or %<:%>" +-msgstr "需要%<,%>或%<;%>" ++msgstr "需要%<{%>或%<:%>" + + #: cp/parser.c:17353 + #, gcc-internal-format +@@ -31324,7 +31311,7 @@ msgstr "%q+#D已在此声明过" + #: cp/semantics.c:2933 + #, gcc-internal-format + msgid "use of parameter %qD outside function body" +-msgstr "" ++msgstr "在函数体外使用形参%qD" + + #: cp/semantics.c:2970 + #, gcc-internal-format +@@ -31450,7 +31437,7 @@ msgstr "不允许不完全类型%qT" + #: cp/semantics.c:5311 + #, gcc-internal-format + msgid "the type %qT of constexpr variable %qD is not literal" +-msgstr "constexpr 变量%2$qD的类型%1$qT不是字面常量" ++msgstr "广义常变量%2$qD的类型%1$qT不是字面常量" + + #: cp/semantics.c:5390 + #, fuzzy, gcc-internal-format +@@ -31470,7 +31457,7 @@ msgstr "%3$L处 CLASS 变量‘%2$s’的类型‘%1$s’不能被扩展" + #: cp/semantics.c:5584 + #, gcc-internal-format + msgid "constexpr constructor does not have empty body" +-msgstr "" ++msgstr "广义常表达式构造函数体不为空" + + #: cp/semantics.c:5664 + #, fuzzy, gcc-internal-format +@@ -31483,24 +31470,24 @@ msgid "expression %qE does not designate a constexpr function" + msgstr "友元声明没有指定类或函数名" + + #: cp/semantics.c:5995 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD is not a constexpr function" +-msgstr "%qD不是一个函数模板" ++msgstr "%qD不是一个广义常函数" + + #: cp/semantics.c:6022 + #, fuzzy, gcc-internal-format + msgid "%qD used before its definition" +-msgstr "使用%qD时先前既没有原型也没有定义" ++msgstr "%qD用在其自身的初始值设定中" + + #: cp/semantics.c:6049 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "call has circular dependency" +-msgstr "协议%qE存在循环依赖" ++msgstr "调用存在循环依赖" + + #: cp/semantics.c:6135 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%q+E is not a constant expression" +-msgstr "整型表达式%qE不是常量" ++msgstr "%q+E不是一个常量表达式" + + #: cp/semantics.c:6252 + #, gcc-internal-format +@@ -31508,9 +31495,9 @@ msgid "array subscript out of bound" + msgstr "数组下标越界" + + #: cp/semantics.c:6291 cp/semantics.c:6337 cp/semantics.c:6807 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qE is not a constant expression" +-msgstr "整型表达式%qE不是常量" ++msgstr "%qE不是一个常量表达式" + + #: cp/semantics.c:6305 + #, fuzzy, gcc-internal-format +@@ -31528,19 +31515,19 @@ msgid "the value of %qD is not usable in a constant expression" + msgstr "%qE的枚举值不是一个整数常量" + + #: cp/semantics.c:6722 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD used in its own initializer" +-msgstr "变量‘%q#D’在其自身的初始值设定中使用了%<auto%>类型" ++msgstr "%qD用在其自身的初始值设定中" + + #: cp/semantics.c:6727 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%q#D is not const" +-msgstr "%q#T不是一个类" ++msgstr "%q#D不是 const" + + #: cp/semantics.c:6730 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%q#D is volatile" +-msgstr "重复的%<volatile%>" ++msgstr "%q#D是 volatile" + + #: cp/semantics.c:6733 + #, fuzzy, gcc-internal-format +@@ -31565,12 +31552,12 @@ msgstr "表达式%qE具有抽象类类型%qT,不能用于 throw 表达式中" + #: cp/semantics.c:7062 cp/semantics.c:7507 cp/semantics.c:7731 + #, fuzzy, gcc-internal-format + msgid "expression %qE is not a constant-expression" +-msgstr "整型表达式%qE不是常量" ++msgstr "%qE不是一个常量表达式" + + #: cp/semantics.c:7067 + #, fuzzy, gcc-internal-format + msgid "unexpected expression %qE of kind %s" +-msgstr "%qE定义为类型错误的标记" ++msgstr "表达式%qE有副作用" + + #: cp/semantics.c:7274 + #, gcc-internal-format +@@ -31578,19 +31565,19 @@ msgid "expression %qE has side-effects" + msgstr "表达式%qE有副作用" + + #: cp/semantics.c:7319 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qE is not a potential constant expression" +-msgstr "整型表达式%qE不是常量" ++msgstr "%qE不是一个潜在常量表达式" + + #: cp/semantics.c:7337 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qE is not a function name" +-msgstr "被调用的对象%qE不是一个函数" ++msgstr "%qE不是一个函数名" + + #: cp/semantics.c:7352 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qD is not %<constexpr%>" +-msgstr "%qD不是一个变量" ++msgstr "%qD不是%<constexpr%>" + + #: cp/semantics.c:7370 + #, fuzzy, gcc-internal-format +@@ -32099,7 +32086,7 @@ msgstr "取临时变量的地址" + #: cp/typeck.c:4770 + #, fuzzy, gcc-internal-format + msgid "taking address of xvalue (rvalue reference)" +-msgstr "取临时变量的地址" ++msgstr "右值的引用用作左值" + + #: cp/typeck.c:4787 + #, gcc-internal-format +@@ -32452,7 +32439,7 @@ msgstr "%<operator new%>不能返回 NULL,除非它被声明为%<throw()%>(或 + #: cp/typeck.c:8231 + #, fuzzy, gcc-internal-format + msgid "using temporary as lvalue" +-msgstr "自增操作数必须是左值" ++msgstr "右值的引用用作左值" + + #: cp/typeck.c:8233 + #, gcc-internal-format +@@ -41593,9 +41580,9 @@ msgid "opening LTRANS output list %s: %m" + msgstr "打开 LTRANS 输出列表 %s:%m" + + #: lto/lto.c:1504 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "lto_obj_file_open() failed" +-msgstr "lto_elf_file_open() 失败" ++msgstr "lto_obj_file_open() 失败" + + #: lto/lto.c:1530 + #, gcc-internal-format +@@ -41660,7 +41647,7 @@ msgstr "%<@end%>必须出现在 @implementation 上下文中" + #: objc/objc-act.c:721 + #, fuzzy, gcc-internal-format + msgid "%<@package%> is not available in Objective-C 1.0" +-msgstr "%qs在 VLIW 函数中不可用" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #: objc/objc-act.c:723 + #, gcc-internal-format +@@ -41670,12 +41657,12 @@ msgstr "" + #: objc/objc-act.c:734 + #, fuzzy, gcc-internal-format + msgid "%<@optional%> is not available in Objective-C 1.0" +-msgstr "%qs在 VLIW 函数中不可用" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #: objc/objc-act.c:736 + #, fuzzy, gcc-internal-format + msgid "%<@required%> is not available in Objective-C 1.0" +-msgstr "%qs在 VLIW 函数中不可用" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #: objc/objc-act.c:744 + #, gcc-internal-format +@@ -41690,32 +41677,32 @@ msgstr "" + #: objc/objc-act.c:853 + #, fuzzy, gcc-internal-format + msgid "%<@property%> is not available in Objective-C 1.0" +-msgstr "%qs在 VLIW 函数中不可用" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #: objc/objc-act.c:857 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<readonly%> attribute conflicts with %<readwrite%> attribute" +-msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" ++msgstr "%<readonly%>属性与%<readwrite%>属性冲突" + + #: objc/objc-act.c:874 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<readonly%> attribute conflicts with %<setter%> attribute" +-msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" ++msgstr "%<readonly%>属性与%<setter%>属性冲突" + + #: objc/objc-act.c:880 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<assign%> attribute conflicts with %<retain%> attribute" +-msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" ++msgstr "%<assign%>属性与%<retain%>属性冲突" + + #: objc/objc-act.c:885 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<assign%> attribute conflicts with %<copy%> attribute" +-msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" ++msgstr "%<assign%>属性与%<copy%>属性冲突" + + #: objc/objc-act.c:890 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%<retain%> attribute conflicts with %<copy%> attribute" +-msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L" ++msgstr "%<retain%>属性与%<copy%>属性冲突" + + #: objc/objc-act.c:907 + #, fuzzy, gcc-internal-format +@@ -41730,7 +41717,7 @@ msgstr "无效的函数声明" + #: objc/objc-act.c:926 + #, fuzzy, gcc-internal-format + msgid "property can not be an array" +-msgstr "数组大小不能确定" ++msgstr "不能设置只读属性" + + #. A @property is not an actual variable, but it is a way to + #. describe a pair of accessor methods, so its type (which is +@@ -41742,7 +41729,7 @@ msgstr "数组大小不能确定" + #: objc/objc-act.c:944 + #, fuzzy, gcc-internal-format + msgid "property can not be a bit-field" +-msgstr "静态成员%qD不能是位段" ++msgstr "不能设置只读属性" + + #: objc/objc-act.c:976 + #, gcc-internal-format +@@ -41767,7 +41754,7 @@ msgstr "" + #: objc/objc-act.c:1044 + #, fuzzy, gcc-internal-format + msgid "redeclaration of property %qD" +-msgstr "%qD已在此声明过" ++msgstr "对%qD的重声明在%<constexpr%>中" + + #: objc/objc-act.c:1047 objc/objc-act.c:1112 objc/objc-act.c:1122 + #: objc/objc-act.c:1135 objc/objc-act.c:1146 objc/objc-act.c:1157 +@@ -41809,9 +41796,9 @@ msgid "type of property %qD conflicts with previous declaration" + msgstr "%q+D的数据区域与先前的声明冲突" + + #: objc/objc-act.c:1665 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "the dot syntax is not available in Objective-C 1.0" +-msgstr "" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #. We know that 'class_name' is an Objective-C class name as the + #. parser won't call this function if it is not. This is only a +@@ -42360,7 +42347,7 @@ msgstr "" + #: objc/objc-act.c:7467 + #, fuzzy, gcc-internal-format + msgid "%<@synthesize%> is not available in Objective-C 1.0" +-msgstr "%qs在 VLIW 函数中不可用" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #. We can get here only in Objective-C; the Objective-C++ parser + #. detects the problem while parsing, outputs the error +@@ -42384,7 +42371,7 @@ msgstr "" + #: objc/objc-act.c:7576 + #, fuzzy, gcc-internal-format + msgid "%<@dynamic%> is not available in Objective-C 1.0" +-msgstr "%qs在 VLIW 函数中不可用" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #. We can get here only in Objective-C; the Objective-C++ parser + #. detects the problem while parsing, outputs the error +@@ -42409,9 +42396,9 @@ msgstr "找不到协议%qE的方法定义" + #. we are using TREE_CHAIN (which is supposed to be the + #. TYPE_STUB_DECL for a TYPE) for something different. + #: objc/objc-act.c:7838 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "protocol %qE is deprecated" +-msgstr "不建议使用%qE(声明于 %s:%d):%s" ++msgstr "不建议使用协议%qE" + + #: objc/objc-act.c:7962 + #, gcc-internal-format +@@ -42462,9 +42449,9 @@ msgid "no %qs getter found" + msgstr "找不到字段%qs。" + + #: objc/objc-act.c:9413 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "fast enumeration is not available in Objective-C 1.0" +-msgstr "此多媒体函数只在 fr500 上可用" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #: objc/objc-act.c:9423 + #, gcc-internal-format +@@ -42472,9 +42459,9 @@ msgid "iterating variable in fast enumeration is not an object" + msgstr "" + + #: objc/objc-act.c:9429 +-#, gcc-internal-format ++#, fuzzy, gcc-internal-format + msgid "collection in fast enumeration is not an object" +-msgstr "" ++msgstr "快速枚举在 Objective-C 1.0 里不可用" + + #: objc/objc-act.c:10362 + #, gcc-internal-format, gfc-internal-format +@@ -42499,9 +42486,9 @@ msgstr "%<-fobjc-sjlj-exceptions%>为%<-fgnu-runtime%>所忽略" + + #: objc/objc-gnu-runtime-abi-01.c:2168 objc/objc-next-runtime-abi-01.c:2848 + #: objc/objc-next-runtime-abi-02.c:3636 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "non-objective-c type '%T' cannot be caught" +-msgstr "非对象成员%qs不能被声明为%<mutable%>" ++msgstr "非 Objective-C 类型‘%T’不能被捕获" + + #: objc/objc-next-runtime-abi-01.c:150 + #, gcc-internal-format +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0284-PR-c-49043.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0284-PR-c-49043.patch new file mode 100644 index 000000000..de60b246a --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0284-PR-c-49043.patch @@ -0,0 +1,50 @@ +From 0b87dda7f297f6ebd65eef8828710c05a1dd9543 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 19 May 2011 13:13:57 +0000 +Subject: [PATCH] PR c++/49043 + * decl.c (check_omp_return): Stop searching on sk_function_parms. + + * testsuite/libgomp.c++/pr49043.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173908 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 74bae0b..81d5db3 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -2807,6 +2807,8 @@ check_omp_return (void) + error ("invalid exit from OpenMP structured block"); + return false; + } ++ else if (b->kind == sk_function_parms) ++ break; + return true; + } + +new file mode 100644 +index 0000000..604cfc3 +--- /dev/null ++++ b/libgomp/testsuite/libgomp.c++/pr49043.C +@@ -0,0 +1,19 @@ ++// PR c++/49043 ++// { dg-options "-std=c++0x" } ++// { dg-do run } ++ ++extern "C" void abort (); ++ ++int ++main () ++{ ++ int r = 0; ++ #pragma omp parallel for reduction (+:r) ++ for (int a = 0; a < 10; ++a) ++ { ++ auto func = [=] () { return a; }; ++ r += func (); ++ } ++ if (r != 45) ++ abort (); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0285-2011-05-19-Uros-Bizjak-ubizjak-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0285-2011-05-19-Uros-Bizjak-ubizjak-gmail.com.patch new file mode 100644 index 000000000..ce830067d --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0285-2011-05-19-Uros-Bizjak-ubizjak-gmail.com.patch @@ -0,0 +1,67 @@ +From dd2ac3e2496d44b75e7ed9e4b9311200dcc1be56 Mon Sep 17 00:00:00 2001 +From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 19 May 2011 21:10:45 +0000 +Subject: [PATCH] 2011-05-19 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386.c (option_override_internal): Enable TARGET_CMOVE + when TARGET_RDRND is active. + (ix86_expand_builtin) <case IX86_BUILTIN_RDRAND{16,32,64}_STEP>: + Generate dummy SImode target register when target is NULL. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173922 138bc75d-0d04-0410-961f-82ee72b054a4 + +index e8b9af5..66800c4 100644 +--- a/gcc/config/i386/i386.c ++++ b/gcc/config/i386/i386.c +@@ -4164,8 +4164,9 @@ ix86_option_override_internal (bool main_args_p) + } + + /* For sane SSE instruction set generation we need fcomi instruction. +- It is safe to enable all CMOVE instructions. */ +- if (TARGET_SSE) ++ It is safe to enable all CMOVE instructions. Also, RDRAND intrinsic ++ expands to a sequence that includes conditional move. */ ++ if (TARGET_SSE || TARGET_RDRND) + TARGET_CMOVE = 1; + + /* Figure out what ASM_GENERATE_INTERNAL_LABEL builds as a prefix. */ +@@ -27450,6 +27451,12 @@ rdrand_step: + op0 = gen_reg_rtx (mode0); + emit_insn (GEN_FCN (icode) (op0)); + ++ arg0 = CALL_EXPR_ARG (exp, 0); ++ op1 = expand_normal (arg0); ++ if (!address_operand (op1, VOIDmode)) ++ op1 = copy_addr_to_reg (op1); ++ emit_move_insn (gen_rtx_MEM (mode0, op1), op0); ++ + op1 = gen_reg_rtx (SImode); + emit_move_insn (op1, CONST1_RTX (SImode)); + +@@ -27464,17 +27471,13 @@ rdrand_step: + else + op2 = gen_rtx_SUBREG (SImode, op0, 0); + ++ if (target == 0) ++ target = gen_reg_rtx (SImode); ++ + pat = gen_rtx_GEU (VOIDmode, gen_rtx_REG (CCCmode, FLAGS_REG), + const0_rtx); +- emit_insn (gen_rtx_SET (VOIDmode, op1, ++ emit_insn (gen_rtx_SET (VOIDmode, target, + gen_rtx_IF_THEN_ELSE (SImode, pat, op2, op1))); +- emit_move_insn (target, op1); +- +- arg0 = CALL_EXPR_ARG (exp, 0); +- op1 = expand_normal (arg0); +- if (!address_operand (op1, VOIDmode)) +- op1 = copy_addr_to_reg (op1); +- emit_move_insn (gen_rtx_MEM (mode0, op1), op0); + return target; + + default: +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0287-PR-tree-optimization-49073.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0287-PR-tree-optimization-49073.patch new file mode 100644 index 000000000..98667d443 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0287-PR-tree-optimization-49073.patch @@ -0,0 +1,121 @@ +From 354414452478a90309fc78d4cec353cce51ac36d Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 14:35:20 +0000 +Subject: [PATCH] PR tree-optimization/49073 + * gimple-fold.c (and_comparisons_1, or_comparisons_1): Return + NULL if PHI argument is SSA_NAME, whose def_stmt is dominated + by the PHI. + * tree-ssa-ifcombine.c (tree_ssa_ifcombine): Calculate dominators. + + * gcc.c-torture/execute/pr49073.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173951 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 1b82e12..6ff6f81 100644 +--- a/gcc/gimple-fold.c ++++ b/gcc/gimple-fold.c +@@ -1,5 +1,5 @@ + /* Statement simplification on GIMPLE. +- Copyright (C) 2010 Free Software Foundation, Inc. ++ Copyright (C) 2010, 2011 Free Software Foundation, Inc. + Split out from tree-ssa-ccp.c. + + This file is part of GCC. +@@ -2185,8 +2185,19 @@ and_comparisons_1 (enum tree_code code1, tree op1a, tree op1b, + } + else if (TREE_CODE (arg) == SSA_NAME) + { +- tree temp = and_var_with_comparison (arg, invert, +- code2, op2a, op2b); ++ tree temp; ++ gimple def_stmt = SSA_NAME_DEF_STMT (arg); ++ /* In simple cases we can look through PHI nodes, ++ but we have to be careful with loops. ++ See PR49073. */ ++ if (! dom_info_available_p (CDI_DOMINATORS) ++ || gimple_bb (def_stmt) == gimple_bb (stmt) ++ || dominated_by_p (CDI_DOMINATORS, ++ gimple_bb (def_stmt), ++ gimple_bb (stmt))) ++ return NULL_TREE; ++ temp = and_var_with_comparison (arg, invert, code2, ++ op2a, op2b); + if (!temp) + return NULL_TREE; + else if (!result) +@@ -2635,8 +2646,19 @@ or_comparisons_1 (enum tree_code code1, tree op1a, tree op1b, + } + else if (TREE_CODE (arg) == SSA_NAME) + { +- tree temp = or_var_with_comparison (arg, invert, +- code2, op2a, op2b); ++ tree temp; ++ gimple def_stmt = SSA_NAME_DEF_STMT (arg); ++ /* In simple cases we can look through PHI nodes, ++ but we have to be careful with loops. ++ See PR49073. */ ++ if (! dom_info_available_p (CDI_DOMINATORS) ++ || gimple_bb (def_stmt) == gimple_bb (stmt) ++ || dominated_by_p (CDI_DOMINATORS, ++ gimple_bb (def_stmt), ++ gimple_bb (stmt))) ++ return NULL_TREE; ++ temp = or_var_with_comparison (arg, invert, code2, ++ op2a, op2b); + if (!temp) + return NULL_TREE; + else if (!result) +new file mode 100644 +index 0000000..92b923b +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/execute/pr49073.c +@@ -0,0 +1,26 @@ ++/* PR tree-optimization/49073 */ ++ ++extern void abort (void); ++int a[] = { 1, 2, 3, 4, 5, 6, 7 }, c; ++ ++int ++main () ++{ ++ int d = 1, i = 1; ++ _Bool f = 0; ++ do ++ { ++ d = a[i]; ++ if (f && d == 4) ++ { ++ ++c; ++ break; ++ } ++ i++; ++ f = (d == 3); ++ } ++ while (d < 7); ++ if (c != 1) ++ abort (); ++ return 0; ++} +diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c +index e23bb76..9063bfd 100644 +--- a/gcc/tree-ssa-ifcombine.c ++++ b/gcc/tree-ssa-ifcombine.c +@@ -1,5 +1,5 @@ + /* Combining of if-expressions on trees. +- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ++ Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + Contributed by Richard Guenther <rguenther@suse.de> + + This file is part of GCC. +@@ -625,6 +625,7 @@ tree_ssa_ifcombine (void) + int i; + + bbs = blocks_in_phiopt_order (); ++ calculate_dominance_info (CDI_DOMINATORS); + + for (i = 0; i < n_basic_blocks - NUM_FIXED_BLOCKS; ++i) + { +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0288-2011-05-20-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0288-2011-05-20-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..ff2cb0664 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0288-2011-05-20-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,117 @@ +From 24f5b59f5c9418d39087b36dd0d275f71ac4dca5 Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 15:08:56 +0000 +Subject: [PATCH] 2011-05-20 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/49079 + * tree-dfa.c (get_ref_base_and_extent): Handle view-converting + MEM_REFs correctly for the trailing array access detection. + Special case constants the same way as decls for overall size + constraining. + + * gcc.dg/torture/pr49079.c: New testcase. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173955 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 0efa0eb..dcb39c1 100644 +new file mode 100644 +index 0000000..1b53d3c +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/torture/pr49079.c +@@ -0,0 +1,31 @@ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++struct Ustr ++{ ++ unsigned char data[1]; ++}; ++ ++static unsigned int ++ustr_xi__embed_val_get(const unsigned char *data) ++{ ++ return (unsigned int)data[0]; ++} ++ ++int __attribute__((noinline)) zero(void) { return 0; } ++ ++static unsigned int ++ustr_len(const struct Ustr *s1) ++{ ++ return ustr_xi__embed_val_get(s1->data + 1 + zero()); ++} ++ ++int ++main() ++{ ++ if (ustr_len (((struct Ustr *) "\x01" "\x0002" "s2")) != 2) ++ abort (); ++ ++ return 0; ++} +diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c +index 6490c5e..2dacd44 100644 +--- a/gcc/tree-dfa.c ++++ b/gcc/tree-dfa.c +@@ -709,6 +709,7 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, + tree size_tree = NULL_TREE; + HOST_WIDE_INT bit_offset = 0; + bool seen_variable_array_ref = false; ++ tree base_type; + + /* First get the final access size from just the outermost expression. */ + if (TREE_CODE (exp) == COMPONENT_REF) +@@ -739,6 +740,8 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, + and find the ultimate containing object. */ + while (1) + { ++ base_type = TREE_TYPE (exp); ++ + switch (TREE_CODE (exp)) + { + case BIT_FIELD_REF: +@@ -926,9 +929,16 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, + the array. The simplest way to conservatively deal with this + is to punt in the case that offset + maxsize reaches the + base type boundary. This needs to include possible trailing padding +- that is there for alignment purposes. ++ that is there for alignment purposes. */ ++ ++ if (seen_variable_array_ref ++ && maxsize != -1 ++ && (!host_integerp (TYPE_SIZE (base_type), 1) ++ || (bit_offset + maxsize ++ == (signed) TREE_INT_CST_LOW (TYPE_SIZE (base_type))))) ++ maxsize = -1; + +- That is of course only true if the base object is not a decl. */ ++ /* In case of a decl or constant base object we can do better. */ + + if (DECL_P (exp)) + { +@@ -938,12 +948,14 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, + && host_integerp (DECL_SIZE (exp), 1)) + maxsize = TREE_INT_CST_LOW (DECL_SIZE (exp)) - bit_offset; + } +- else if (seen_variable_array_ref +- && maxsize != -1 +- && (!host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1) +- || (bit_offset + maxsize +- == (signed) TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp)))))) +- maxsize = -1; ++ else if (CONSTANT_CLASS_P (exp)) ++ { ++ /* If maxsize is unknown adjust it according to the size of the ++ base type constant. */ ++ if (maxsize == -1 ++ && host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1)) ++ maxsize = TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp))) - bit_offset; ++ } + + /* ??? Due to negative offsets in ARRAY_REF we can end up with + negative bit_offset here. We might want to store a zero offset +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0289-PR-bootstrap-49086.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0289-PR-bootstrap-49086.patch new file mode 100644 index 000000000..53e107b5e --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0289-PR-bootstrap-49086.patch @@ -0,0 +1,35 @@ +From 29870e6f38fef098cbd13a59969e5a5f0ad77985 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 18:23:36 +0000 +Subject: [PATCH] PR bootstrap/49086 + * gimple-fold.c (and_comparisons_1, or_comparisons_1): Return NULL + for PHI args that are SSA_NAME_IS_DEFAULT_DEF. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173968 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 6ff6f81..910e3b0 100644 +--- a/gcc/gimple-fold.c ++++ b/gcc/gimple-fold.c +@@ -2183,7 +2183,8 @@ and_comparisons_1 (enum tree_code code1, tree op1a, tree op1b, + code2, op2a, op2b)) + return NULL_TREE; + } +- else if (TREE_CODE (arg) == SSA_NAME) ++ else if (TREE_CODE (arg) == SSA_NAME ++ && !SSA_NAME_IS_DEFAULT_DEF (arg)) + { + tree temp; + gimple def_stmt = SSA_NAME_DEF_STMT (arg); +@@ -2644,7 +2645,8 @@ or_comparisons_1 (enum tree_code code1, tree op1a, tree op1b, + code2, op2a, op2b)) + return NULL_TREE; + } +- else if (TREE_CODE (arg) == SSA_NAME) ++ else if (TREE_CODE (arg) == SSA_NAME ++ && !SSA_NAME_IS_DEFAULT_DEF (arg)) + { + tree temp; + gimple def_stmt = SSA_NAME_DEF_STMT (arg); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0290-PR-c-48873.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0290-PR-c-48873.patch new file mode 100644 index 000000000..05fdccb88 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0290-PR-c-48873.patch @@ -0,0 +1,45 @@ +From ca1dcc7740a2532bae1d898dd326b43da54a2c54 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 19:01:53 +0000 +Subject: [PATCH] PR c++/48873 + * tree.c (stabilize_expr): Don't make gratuitous copies of classes. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173970 138bc75d-0d04-0410-961f-82ee72b054a4 + +index f04fd23..16b9ca1 100644 +--- a/gcc/cp/tree.c ++++ b/gcc/cp/tree.c +@@ -3124,7 +3124,8 @@ stabilize_expr (tree exp, tree* initp) + + if (!TREE_SIDE_EFFECTS (exp)) + init_expr = NULL_TREE; +- else if (!TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (exp)) ++ else if ((!TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (exp)) ++ && !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (exp))) + || !lvalue_or_rvalue_with_address_p (exp)) + { + init_expr = get_target_expr (exp); +new file mode 100644 +index 0000000..f827857 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/init/new32.C +@@ -0,0 +1,16 @@ ++// PR c++/48873 ++ ++#include <new> ++ ++struct D { ++private: ++ ~D(); ++}; ++ ++template<class T> ++T& create(); ++ ++void f() ++{ ++ D* dp = new (((void*) 0)) D(create<D>()); // # ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0291-PR-c-48736.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0291-PR-c-48736.patch new file mode 100644 index 000000000..c84e054c1 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0291-PR-c-48736.patch @@ -0,0 +1,40 @@ +From 477084b940a43a7f5bdb411e422a736c1f356c6f Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 19:02:08 +0000 +Subject: [PATCH] PR c++/48736 + * pt.c (tsubst_copy_and_build): Handle substitution of a pack + expansion producing another expansion. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173971 138bc75d-0d04-0410-961f-82ee72b054a4 + +index e1ddf84..d49fe6b 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -13221,7 +13221,8 @@ tsubst_copy_and_build (tree t, + ce->value = tsubst_pack_expansion (ce->value, args, complain, + in_decl); + +- if (ce->value == error_mark_node) ++ if (ce->value == error_mark_node ++ || PACK_EXPANSION_P (ce->value)) + ; + else if (TREE_VEC_LENGTH (ce->value) == 1) + /* Just move the argument into place. */ +new file mode 100644 +index 0000000..3ad5af4 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/variadic108.C +@@ -0,0 +1,10 @@ ++// PR c++/48736 ++// { dg-options -std=c++0x } ++ ++template<class T> ++T&& create(); ++ ++template<class T, class... Args, ++ class = decltype(T{create<Args>()...}) // Line X ++> ++char f(int); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0292-PR-c-48745.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0292-PR-c-48745.patch new file mode 100644 index 000000000..a8e644ae9 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0292-PR-c-48745.patch @@ -0,0 +1,59 @@ +From abab8b02e8102ab546f97b60acc3644d1f3bba2a Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 19:02:17 +0000 +Subject: [PATCH] PR c++/48745 + * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173972 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d49fe6b..d9c7ac4 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -18231,6 +18231,16 @@ value_dependent_expression_p (tree expression) + type-dependent. */ + return type_dependent_expression_p (expression); + ++ case CONSTRUCTOR: ++ { ++ unsigned ix; ++ tree val; ++ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (expression), ix, val) ++ if (value_dependent_expression_p (val)) ++ return true; ++ return false; ++ } ++ + default: + /* A constant expression is value-dependent if any subexpression is + value-dependent. */ +new file mode 100644 +index 0000000..2b9351a +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/sfinae22.C +@@ -0,0 +1,23 @@ ++// PR c++/48745 ++// { dg-options -std=c++0x } ++ ++template<class T> ++struct add_rval_ref { ++ typedef T&& type; ++}; ++ ++template<> ++struct add_rval_ref<void> { ++ typedef void type; ++}; ++ ++template<class T> ++typename add_rval_ref<T>::type create(); ++ ++template<class T, class... Args> ++decltype(T{create<Args>()...}, char()) f(int); ++ ++template<class, class...> ++char (&f(...))[2]; ++ ++static_assert(sizeof(f<int, void>(0)) != 1, "Error"); // { dg-bogus "void value" "" { xfail *-*-* } } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0293-semantics.c-register_constexpr_fundef-Add-to-hash-ta.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0293-semantics.c-register_constexpr_fundef-Add-to-hash-ta.patch new file mode 100644 index 000000000..f9562dd09 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0293-semantics.c-register_constexpr_fundef-Add-to-hash-ta.patch @@ -0,0 +1,81 @@ +From cde341fe28d4f20956c917ac3f63f5be8d41a246 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 19:02:26 +0000 +Subject: [PATCH] * semantics.c (register_constexpr_fundef): Add to hash table here. + (validate_constexpr_fundecl): Not here. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173973 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 48b37cf..d019728 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -5459,9 +5459,6 @@ is_valid_constexpr_fn (tree fun, bool complain) + tree + validate_constexpr_fundecl (tree fun) + { +- constexpr_fundef entry; +- constexpr_fundef **slot; +- + if (processing_template_decl || !DECL_DECLARED_CONSTEXPR_P (fun)) + return NULL; + else if (DECL_CLONED_FUNCTION_P (fun)) +@@ -5474,21 +5471,6 @@ validate_constexpr_fundecl (tree fun) + return NULL; + } + +- /* Create the constexpr function table if necessary. */ +- if (constexpr_fundef_table == NULL) +- constexpr_fundef_table = htab_create_ggc (101, +- constexpr_fundef_hash, +- constexpr_fundef_equal, +- ggc_free); +- entry.decl = fun; +- entry.body = NULL; +- slot = (constexpr_fundef **) +- htab_find_slot (constexpr_fundef_table, &entry, INSERT); +- if (*slot == NULL) +- { +- *slot = ggc_alloc_constexpr_fundef (); +- **slot = entry; +- } + return fun; + } + +@@ -5679,8 +5661,8 @@ build_constexpr_constructor_member_initializers (tree type, tree body) + tree + register_constexpr_fundef (tree fun, tree body) + { +- constexpr_fundef *fundef = retrieve_constexpr_fundef (fun); +- gcc_assert (fundef != NULL && fundef->body == NULL); ++ constexpr_fundef entry; ++ constexpr_fundef **slot; + + if (DECL_CONSTRUCTOR_P (fun)) + body = build_constexpr_constructor_member_initializers +@@ -5711,7 +5693,22 @@ register_constexpr_fundef (tree fun, tree body) + require_potential_rvalue_constant_expression (body); + return NULL; + } +- fundef->body = body; ++ ++ /* Create the constexpr function table if necessary. */ ++ if (constexpr_fundef_table == NULL) ++ constexpr_fundef_table = htab_create_ggc (101, ++ constexpr_fundef_hash, ++ constexpr_fundef_equal, ++ ggc_free); ++ entry.decl = fun; ++ entry.body = body; ++ slot = (constexpr_fundef **) ++ htab_find_slot (constexpr_fundef_table, &entry, INSERT); ++ ++ gcc_assert (*slot == NULL); ++ *slot = ggc_alloc_constexpr_fundef (); ++ **slot = entry; ++ + return fun; + } + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0294-semantics.c-validate_constexpr_fundecl-Check-DECL_TE.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0294-semantics.c-validate_constexpr_fundecl-Check-DECL_TE.patch new file mode 100644 index 000000000..1ab94454a --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0294-semantics.c-validate_constexpr_fundecl-Check-DECL_TE.patch @@ -0,0 +1,42 @@ +From d633704af54cbca1991f0d2c7fc75ffadfc95cdc Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 19:02:33 +0000 +Subject: [PATCH] * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO + rather than DECL_TEMPLATE_INSTANTIATION. + (cxx_eval_call_expression): Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173974 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d019728..6083376 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -5465,7 +5465,7 @@ validate_constexpr_fundecl (tree fun) + /* We already checked the original function. */ + return fun; + +- if (!is_valid_constexpr_fn (fun, !DECL_TEMPLATE_INSTANTIATION (fun))) ++ if (!is_valid_constexpr_fn (fun, !DECL_TEMPLATE_INFO (fun))) + { + DECL_DECLARED_CONSTEXPR_P (fun) = false; + return NULL; +@@ -5689,7 +5689,7 @@ register_constexpr_fundef (tree fun, tree body) + if (!potential_rvalue_constant_expression (body)) + { + DECL_DECLARED_CONSTEXPR_P (fun) = false; +- if (!DECL_TEMPLATE_INSTANTIATION (fun)) ++ if (!DECL_TEMPLATE_INFO (fun)) + require_potential_rvalue_constant_expression (body); + return NULL; + } +@@ -6033,7 +6033,7 @@ cxx_eval_call_expression (const constexpr_call *old_call, tree t, + if (!allow_non_constant) + { + error_at (loc, "%qD is not a constexpr function", fun); +- if (DECL_TEMPLATE_INSTANTIATION (fun) ++ if (DECL_TEMPLATE_INFO (fun) + && DECL_DECLARED_CONSTEXPR_P (DECL_TEMPLATE_RESULT + (DECL_TI_TEMPLATE (fun)))) + is_valid_constexpr_fn (fun, true); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0295-PR-c-48948.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0295-PR-c-48948.patch new file mode 100644 index 000000000..53c553b87 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0295-PR-c-48948.patch @@ -0,0 +1,188 @@ +From 4114bb38c8cffb97435ae4bdb6b7bef89d5228d6 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 19:02:42 +0000 +Subject: [PATCH] PR c++/48948 + * class.c (finalize_literal_type_property): Only check + for constexpr member functions of non-literal class. + * decl.c (cp_finish_decl): Don't call validate_constexpr_fundecl. + * semantics.c (literal_type_p): Call complete_type. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173975 138bc75d-0d04-0410-961f-82ee72b054a4 + +index e1b8645..d412232 100644 +--- a/gcc/cp/class.c ++++ b/gcc/cp/class.c +@@ -4559,10 +4559,17 @@ finalize_literal_type_property (tree t) + && !TYPE_HAS_CONSTEXPR_CTOR (t)) + CLASSTYPE_LITERAL_P (t) = false; + +- for (fn = TYPE_METHODS (t); fn; fn = DECL_CHAIN (fn)) +- if (DECL_DECLARED_CONSTEXPR_P (fn) +- && TREE_CODE (fn) != TEMPLATE_DECL) +- validate_constexpr_fundecl (fn); ++ if (!CLASSTYPE_LITERAL_P (t)) ++ for (fn = TYPE_METHODS (t); fn; fn = DECL_CHAIN (fn)) ++ if (DECL_DECLARED_CONSTEXPR_P (fn) ++ && TREE_CODE (fn) != TEMPLATE_DECL ++ && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn) ++ && !DECL_CONSTRUCTOR_P (fn)) ++ { ++ DECL_DECLARED_CONSTEXPR_P (fn) = false; ++ if (!DECL_TEMPLATE_INFO (fn)) ++ error ("enclosing class of %q+#D is not a literal type", fn); ++ } + } + + /* Check the validity of the bases and members declared in T. Add any +diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c +index 81d5db3..2905b49 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -5797,13 +5797,7 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, + } + } + +- if (TREE_CODE (decl) == FUNCTION_DECL +- /* For members, defer until finalize_literal_type_property. */ +- && (!DECL_CLASS_SCOPE_P (decl) +- || !TYPE_BEING_DEFINED (DECL_CONTEXT (decl)))) +- validate_constexpr_fundecl (decl); +- +- else if (!ensure_literal_type_for_constexpr_object (decl)) ++ if (!ensure_literal_type_for_constexpr_object (decl)) + DECL_DECLARED_CONSTEXPR_P (decl) = 0; + + if (init && TREE_CODE (decl) == FUNCTION_DECL) +diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c +index 6083376..bd33bac 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -5327,7 +5327,7 @@ literal_type_p (tree t) + if (SCALAR_TYPE_P (t)) + return true; + if (CLASS_TYPE_P (t)) +- return CLASSTYPE_LITERAL_P (t); ++ return CLASSTYPE_LITERAL_P (complete_type (t)); + if (TREE_CODE (t) == ARRAY_TYPE) + return literal_type_p (strip_array_types (t)); + return false; +@@ -5439,6 +5439,7 @@ is_valid_constexpr_fn (tree fun, bool complain) + rettype, fun); + } + ++ /* Check this again here for cxx_eval_call_expression. */ + if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fun) + && !CLASSTYPE_LITERAL_P (DECL_CONTEXT (fun))) + { +new file mode 100644 +index 0000000..f1d9cce +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-friend.C +@@ -0,0 +1,23 @@ ++// PR c++/48948 ++// { dg-options -std=c++0x } ++ ++struct A { A(); }; ++ ++struct B { ++ friend constexpr int f(B) { return 0; } // OK ++ friend constexpr int f(A) { return 0; } // { dg-error "constexpr" } ++}; ++ ++template <class T> ++struct C ++{ ++ friend constexpr int f(C) { return 0; } ++ friend constexpr int g(C, A) { return 0; } // { dg-error "double" } ++ constexpr int m(C) { return 0; } ++ constexpr int m(A) { return 0; } // { dg-error "double" } ++}; ++ ++constexpr int i = f(C<int>()); ++constexpr int j = C<int>().m(C<int>()); ++constexpr int k = C<double>().m(A()); // { dg-error "not a constexpr function" } ++constexpr int l = g(C<double>(),A()); // { dg-error "not a constexpr function" } +diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete1.C +new file mode 100644 +index 0000000..71372d2 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete1.C +@@ -0,0 +1,7 @@ ++// { dg-options -std=c++0x } ++ ++struct A ++{ ++ static constexpr A a = 1; // { dg-error "incomplete|literal" } ++ constexpr A(int i) { } ++}; +diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete2.C +new file mode 100644 +index 0000000..dc0b742 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete2.C +@@ -0,0 +1,31 @@ ++// A constructor that might or might not be constexpr still makes ++// its class literal. ++// { dg-options -std=c++0x } ++ ++template <class T> ++struct B ++{ ++ constexpr B(T) { } ++ constexpr B() {} ++}; ++ ++struct A ++{ ++ B<A> b; ++}; ++ ++constexpr A a {}; ++ ++template <class T> ++struct C ++{ ++ constexpr C(T) { } ++ C() {} ++}; ++ ++struct D ++{ ++ C<D> c; ++}; ++ ++constexpr D d {}; // { dg-error "not a constexpr function" } +diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete3.C +new file mode 100644 +index 0000000..81822b0 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete3.C +@@ -0,0 +1,12 @@ ++// PR c++/49015 ++// { dg-options -std=c++0x } ++ ++class A; ++ ++class B { ++ friend constexpr B f(A); // Line 5 ++}; ++ ++class A {}; ++ ++constexpr B f(A) { return B(); } // Line 10 +diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C +index 4646f82..ef7ac6b 100644 +--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C +@@ -13,6 +13,6 @@ constexpr X X::g(X x) { return x; } + struct Y + { + Y() { } +- constexpr Y f(Y y); // { dg-error "constexpr" } +- static constexpr Y g(Y y); // { dg-error "constexpr" } ++ constexpr Y f(Y y); // { dg-error "not a literal type" } ++ static constexpr Y g(Y y) {} // { dg-error "constexpr" } + }; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0296-DR-1073.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0296-DR-1073.patch new file mode 100644 index 000000000..e69c862a7 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0296-DR-1073.patch @@ -0,0 +1,156 @@ +From 64f447779f7ce0ace5543bbb6a5d334ac3aef501 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 20 May 2011 21:29:14 +0000 +Subject: [PATCH] DR 1073 + PR c++/49082 + * typeck.c (comp_except_specs): noexcept(false) is not compatible + with throw(type-list). + * typeck2.c (merge_exception_specifiers): noexcept(false) + beats any more limited specification. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173984 138bc75d-0d04-0410-961f-82ee72b054a4 + +index dec0680..59bf3ab 100644 +--- a/gcc/cp/typeck.c ++++ b/gcc/cp/typeck.c +@@ -986,14 +986,14 @@ comp_except_specs (const_tree t1, const_tree t2, int exact) + /* First handle noexcept. */ + if (exact < ce_exact) + { +- /* noexcept(false) is compatible with any throwing dynamic-exc-spec ++ /* noexcept(false) is compatible with no exception-specification, + and stricter than any spec. */ + if (t1 == noexcept_false_spec) +- return !nothrow_spec_p (t2) || exact == ce_derived; +- /* Even a derived noexcept(false) is compatible with a throwing +- dynamic spec. */ ++ return t2 == NULL_TREE || exact == ce_derived; ++ /* Even a derived noexcept(false) is compatible with no ++ exception-specification. */ + if (t2 == noexcept_false_spec) +- return !nothrow_spec_p (t1); ++ return t1 == NULL_TREE; + + /* Otherwise, if we aren't looking for an exact match, noexcept is + equivalent to throw(). */ +diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c +index 82218f0..8d9c53e 100644 +--- a/gcc/cp/typeck2.c ++++ b/gcc/cp/typeck2.c +@@ -1672,10 +1672,13 @@ add_exception_specifier (tree list, tree spec, int complain) + tree + merge_exception_specifiers (tree list, tree add) + { +- if (!list || !add) +- return NULL_TREE; ++ /* No exception-specifier or noexcept(false) are less strict than ++ anything else. Prefer the newer variant (LIST). */ ++ if (!list || list == noexcept_false_spec) ++ return list; ++ else if (!add || add == noexcept_false_spec) ++ return add; + /* For merging noexcept(true) and throw(), take the more recent one (LIST). +- A throw(type-list) spec takes precedence over a noexcept(false) spec. + Any other noexcept-spec should only be merged with an equivalent one. + So the !TREE_VALUE code below is correct for all cases. */ + else if (!TREE_VALUE (add)) +index 60015e7..ffbb091 100644 +--- a/gcc/testsuite/g++.dg/cpp0x/noexcept02.C ++++ b/gcc/testsuite/g++.dg/cpp0x/noexcept02.C +@@ -10,9 +10,9 @@ void f(); + + SA(!noexcept(f())); + +-void g() throw (int); +-void g() noexcept(false); // { dg-error "previous declaration" } +-void g(); // { dg-error "different exception" } ++void g() throw (int); // { dg-error "previous declaration" } ++void g() noexcept(false); // { dg-error "different exception" } ++void g(); + + void h() throw(); + void h() noexcept; +diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept03.C b/gcc/testsuite/g++.dg/cpp0x/noexcept03.C +index c759f6f..54e04f3 100644 +--- a/gcc/testsuite/g++.dg/cpp0x/noexcept03.C ++++ b/gcc/testsuite/g++.dg/cpp0x/noexcept03.C +@@ -36,19 +36,6 @@ void f2(T a) noexcept (noexcept (f (a))) + + struct A { A() { } }; // { dg-warning "does not throw" } + +-// throw(int) overrides noexcept(false) in either order. +-void h() throw (int, std::bad_exception); +-void h() noexcept (false) +-{ +- throw 1.0; +-} +- +-void i() noexcept (false); +-void i() throw (int, std::bad_exception) +-{ +- throw 1.0; +-} +- + int main() + { + // noexcept(false) allows throw. +@@ -57,10 +44,6 @@ int main() + try { f(A()); } catch (int) { } + try { f2(A()); } catch (int) { } + +- std::set_unexpected (my_unexpected); +- try { h(); } catch (std::bad_exception) { } +- try { i(); } catch (std::bad_exception) { } +- + std::set_terminate (my_terminate); + // noexcept(noexcept(int())) == noexcept(true). + try { f2(1); } catch (...) { } +diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept08.C b/gcc/testsuite/g++.dg/cpp0x/noexcept08.C +index c450332..1df85ef 100644 +--- a/gcc/testsuite/g++.dg/cpp0x/noexcept08.C ++++ b/gcc/testsuite/g++.dg/cpp0x/noexcept08.C +@@ -34,7 +34,7 @@ struct D: A + void g() noexcept(false); // { dg-error "looser" } + void h() noexcept(false); // { dg-error "looser" } + void i() noexcept(false); +- void j() noexcept(false); // compatible; treated as throw(int) ++ void j() noexcept(false); // { dg-error "looser" } + }; + + struct E: A +diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept10.C b/gcc/testsuite/g++.dg/cpp0x/noexcept10.C +new file mode 100644 +index 0000000..058a387 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/noexcept10.C +@@ -0,0 +1,27 @@ ++// PR c++/49082 ++// { dg-options -std=c++0x } ++ ++namespace std { template <class T> T&& declval() noexcept; } ++ ++struct Base ++{ ++ Base(const Base&) noexcept(false); ++ Base(Base&&) noexcept(false); ++ ~Base() noexcept(false); ++}; ++ ++struct Derived ++: Base ++{ ++ // Derived(const Derived&) = default; ++ // Derived(Derived&&) = default; ++}; ++ ++static_assert(!noexcept(Base(std::declval<const Base&>())), "Error"); ++static_assert(!noexcept(Derived(std::declval<const Derived&>())), "Error"); // Error ++ ++static_assert(!noexcept(Base(std::declval<Base&&>())), "Error"); ++static_assert(!noexcept(Derived(std::declval<Derived&&>())), "Error"); // Error ++ ++static_assert(!noexcept(std::declval<Base&>().~Base()), "Error"); // OK ++static_assert(!noexcept(std::declval<Derived&>().~Derived()), "Error"); // Error +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0298-In-gcc-objc.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0298-In-gcc-objc.patch new file mode 100644 index 000000000..1d8394800 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0298-In-gcc-objc.patch @@ -0,0 +1,31 @@ +From 291010836656764b3c79b294cd7a3f112b9d92df Mon Sep 17 00:00:00 2001 +From: nicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 21 May 2011 16:53:19 +0000 +Subject: [PATCH] In gcc/objc/: + 2011-05-21 Nicola Pero <nicola.pero@meta-innovation.com> + + Backport from mainline + 2011-05-21 Nicola Pero <nicola.pero@meta-innovation.com> + + * config-lang.in (gtfiles): Updated order of files to fix building + when the gcc/cp directory is missing, as in the case of some + release tarballs. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174000 138bc75d-0d04-0410-961f-82ee72b054a4 + +index db5c5a5..0de0650 100644 +--- a/gcc/objc/config-lang.in ++++ b/gcc/objc/config-lang.in +@@ -33,4 +33,7 @@ target_libs=target-libobjc + # Most of the object files for cc1obj actually come from C. + lang_requires="c" + +-gtfiles="\$(srcdir)/objc/objc-act.h \$(srcdir)/objc/objc-act.c \$(srcdir)/objc/objc-runtime-shared-support.c \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-02.c \$(srcdir)/c-parser.c \$(srcdir)/c-tree.h \$(srcdir)/c-decl.c \$(srcdir)/c-lang.h \$(srcdir)/c-objc-common.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c" ++# Order is important. If you change this list, make sure you test ++# building without C++ as well; that is, remove the gcc/cp directory, ++# and build with --enable-languages=c,objc. ++gtfiles="\$(srcdir)/c-family/c-objc.h \$(srcdir)/objc/objc-act.h \$(srcdir)/objc/objc-act.c \$(srcdir)/objc/objc-runtime-shared-support.c \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-02.c \$(srcdir)/c-parser.c \$(srcdir)/c-tree.h \$(srcdir)/c-decl.c \$(srcdir)/c-lang.h \$(srcdir)/c-objc-common.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c" +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0299-PR-c-49066.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0299-PR-c-49066.patch new file mode 100644 index 000000000..334336f37 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0299-PR-c-49066.patch @@ -0,0 +1,34 @@ +From 6c1b484bec9f87aaa5c648304ca556dd622b4206 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 21 May 2011 21:35:50 +0000 +Subject: [PATCH] PR c++/49066 + * decl.c (duplicate_decls): Preserve DECL_DELETED_FN. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174003 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 2905b49..aeb893f 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -1686,6 +1686,7 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend) + error ("deleted definition of %qD", newdecl); + error ("after previous declaration %q+D", olddecl); + } ++ DECL_DELETED_FN (newdecl) |= DECL_DELETED_FN (olddecl); + } + + /* Deal with C++: must preserve virtual function table size. */ +new file mode 100644 +index 0000000..69bd0ac +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/defaulted26.C +@@ -0,0 +1,7 @@ ++// PR c++/49066 ++// { dg-options -std=c++0x } ++ ++void foo() = delete; // { dg-error "declared here" } ++void foo(); ++ ++int main() { foo(); } // { dg-error "deleted" } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0300-config-sparc-sparc.c-eligible_for_return_delay-Do-no.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0300-config-sparc-sparc.c-eligible_for_return_delay-Do-no.patch new file mode 100644 index 000000000..7052918b5 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0300-config-sparc-sparc.c-eligible_for_return_delay-Do-no.patch @@ -0,0 +1,65 @@ +From 569fa107c89c3adc1fcf7286079c7aff088159ef Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 21 May 2011 22:03:27 +0000 +Subject: [PATCH] * config/sparc/sparc.c (eligible_for_return_delay): Do not return + false if there are call-saved registers here... + (sparc_can_use_return_insn_p): ...but here instead. + (save_or_restore_regs): Fix thinko. + (sparc_expand_prologue): Use current_function_is_leaf. + (sparc_frame_pointer_required): Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174009 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 0f137e8..8ad374a 100644 +--- a/gcc/config/sparc/sparc.c ++++ b/gcc/config/sparc/sparc.c +@@ -2845,11 +2845,6 @@ eligible_for_return_delay (rtx trial) + if (get_attr_length (trial) != 1) + return 0; + +- /* If there are any call-saved registers, we should scan TRIAL if it +- does not reference them. For now just make it easy. */ +- if (num_gfregs) +- return 0; +- + /* If the function uses __builtin_eh_return, the eh_return machinery + occupies the delay slot. */ + if (crtl->calls_eh_return) +@@ -4421,7 +4416,7 @@ save_or_restore_regs (int low, int high, rtx base, int offset, int action) + emit_move_insn (gen_rtx_REG (mode, regno), mem); + + /* Always preserve double-word alignment. */ +- offset = (offset + 7) & -8; ++ offset = (offset + 8) & -8; + } + } + +@@ -4528,7 +4523,7 @@ sparc_expand_prologue (void) + example, the regrename pass has special provisions to not rename to + non-leaf registers in a leaf function. */ + sparc_leaf_function_p +- = optimize > 0 && leaf_function_p () && only_leaf_regs_used (); ++ = optimize > 0 && current_function_is_leaf && only_leaf_regs_used (); + + /* Need to use actual_fsize, since we are also allocating + space for our callee (and our own register save area). */ +@@ -4658,6 +4653,7 @@ bool + sparc_can_use_return_insn_p (void) + { + return sparc_prologue_data_valid_p ++ && num_gfregs == 0 + && (actual_fsize == 0 || !sparc_leaf_function_p); + } + +@@ -9680,7 +9676,7 @@ sparc_expand_compare_and_swap_12 (rtx result, rtx mem, rtx oldval, rtx newval) + bool + sparc_frame_pointer_required (void) + { +- return !(leaf_function_p () && only_leaf_regs_used ()); ++ return !(current_function_is_leaf && only_leaf_regs_used ()); + } + + /* The way this is structured, we can't eliminate SFP in favor of SP +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0301-config-sparc-sparc.md-setjmp-Handle-PIC-mode-and-use.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0301-config-sparc-sparc.md-setjmp-Handle-PIC-mode-and-use.patch new file mode 100644 index 000000000..0b827c117 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0301-config-sparc-sparc.md-setjmp-Handle-PIC-mode-and-use.patch @@ -0,0 +1,56 @@ +From 0a4d0f222b48850a59769bc1d53327ea4c819e8b Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 21 May 2011 22:49:41 +0000 +Subject: [PATCH] * config/sparc/sparc.md (setjmp): Handle PIC mode and use the hard + frame pointer. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174014 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 853bd2f..5e16179 100644 +--- a/gcc/config/sparc/sparc.md ++++ b/gcc/config/sparc/sparc.md +@@ -6507,8 +6507,8 @@ + (const_int 4)))]) + + ;; For __builtin_setjmp we need to flush register windows iff the function +-;; calls alloca as well, because otherwise the register window might be +-;; saved after %sp adjustment and thus setjmp would crash ++;; calls alloca as well, because otherwise the current register window might ++;; be saved after the %sp adjustment and thus setjmp would crash. + (define_expand "builtin_setjmp_setup" + [(match_operand 0 "register_operand" "r")] + "" +@@ -6547,19 +6547,26 @@ + (eq_attr "pic" "true") + (const_int 4)] (const_int 3)))]) + +-;; Pattern for use after a setjmp to store FP and the return register +-;; into the stack area. ++;; Pattern for use after a setjmp to store registers into the save area. + + (define_expand "setjmp" + [(const_int 0)] + "" + { + rtx mem; +- ++ ++ if (flag_pic) ++ { ++ mem = gen_rtx_MEM (Pmode, ++ plus_constant (stack_pointer_rtx, ++ SPARC_STACK_BIAS + 7 * UNITS_PER_WORD)); ++ emit_insn (gen_rtx_SET (VOIDmode, mem, pic_offset_table_rtx)); ++ } ++ + mem = gen_rtx_MEM (Pmode, + plus_constant (stack_pointer_rtx, + SPARC_STACK_BIAS + 14 * UNITS_PER_WORD)); +- emit_insn (gen_rtx_SET (VOIDmode, mem, frame_pointer_rtx)); ++ emit_insn (gen_rtx_SET (VOIDmode, mem, hard_frame_pointer_rtx)); + + mem = gen_rtx_MEM (Pmode, + plus_constant (stack_pointer_rtx, +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0303-PR-c-48780.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0303-PR-c-48780.patch new file mode 100644 index 000000000..3dbb293b2 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0303-PR-c-48780.patch @@ -0,0 +1,49 @@ +From 3f78a3111fdfffc067bff19d0d42ffb1040e0fe5 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 22 May 2011 00:28:44 +0000 +Subject: [PATCH] PR c++/48780 + * cvt.c (type_promotes_to): Warn about promoting scoped enums. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174022 138bc75d-0d04-0410-961f-82ee72b054a4 + +index ce4f985..d26d870 100644 +--- a/gcc/cp/cvt.c ++++ b/gcc/cp/cvt.c +@@ -1621,6 +1621,9 @@ type_promotes_to (tree type) + int precision = MAX (TYPE_PRECISION (type), + TYPE_PRECISION (integer_type_node)); + tree totype = c_common_type_for_size (precision, 0); ++ if (SCOPED_ENUM_P (type)) ++ warning (OPT_Wabi, "scoped enum %qT will not promote to an integral " ++ "type in a future version of GCC", type); + if (TREE_CODE (type) == ENUMERAL_TYPE) + type = ENUM_UNDERLYING_TYPE (type); + if (TYPE_UNSIGNED (type) +new file mode 100644 +index 0000000..ec02d3b +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/enum13.C +@@ -0,0 +1,20 @@ ++// PR c++/48780 ++// { dg-options "-std=c++0x -fabi-version=5 -Wabi" } ++ ++typedef __builtin_va_list __gnuc_va_list; ++typedef __gnuc_va_list va_list; ++ ++enum struct A : short { X }; ++ ++void foo(int x, ...) { ++ va_list vl; ++ __builtin_va_start(vl, x); ++ enum A t = __builtin_va_arg(vl, enum A); // { dg-warning "promote" } ++ __builtin_va_end(vl); ++} ++ ++int main() { ++ foo(0, A::X); // { dg-warning "will not promote" } ++} ++ ++// { dg-prune-output "note" } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0304-PR-c-48945.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0304-PR-c-48945.patch new file mode 100644 index 000000000..8b3eec27a --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0304-PR-c-48945.patch @@ -0,0 +1,45 @@ +From 6716a654c885fa57fcece50fb32be4f2edb29166 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 22 May 2011 00:29:03 +0000 +Subject: [PATCH] PR c++/48945 + * decl.c (revert_static_member_fn): Ignore const on constexpr fn. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174023 138bc75d-0d04-0410-961f-82ee72b054a4 + +index aeb893f..108bb47 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -13394,10 +13394,15 @@ void + revert_static_member_fn (tree decl) + { + tree stype = static_fn_type (decl); ++ cp_cv_quals quals = type_memfn_quals (stype); + +- if (type_memfn_quals (stype) != TYPE_UNQUALIFIED) ++ if (quals != TYPE_UNQUALIFIED) + { +- error ("static member function %q#D declared with type qualifiers", decl); ++ if (quals == TYPE_QUAL_CONST && DECL_DECLARED_CONSTEXPR_P (decl)) ++ /* The const was implicit, don't complain. */; ++ else ++ error ("static member function %q#D declared with type qualifiers", ++ decl); + stype = apply_memfn_quals (stype, TYPE_UNQUALIFIED); + } + TREE_TYPE (decl) = stype; +new file mode 100644 +index 0000000..ba4a251 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-static7.C +@@ -0,0 +1,8 @@ ++// PR c++/48945 ++// { dg-options -std=c++0x } ++ ++struct A { ++ static constexpr bool is(); ++}; ++ ++constexpr bool A::is() { return true; } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0305-PR-middle-end-49029.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0305-PR-middle-end-49029.patch new file mode 100644 index 000000000..47d896c6b --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0305-PR-middle-end-49029.patch @@ -0,0 +1,52 @@ +From 7f6851f9e44e25a3ddb77bf09b6e138a9c39bbf0 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 22 May 2011 19:02:59 +0000 +Subject: [PATCH] PR middle-end/49029 + * expmed.c (extract_fixed_bit_field): Test whether target can be used + only after deciding which mode to use. + + * gcc.c-torture/compile/pr49029.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174036 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 6c35f8e..0d44b2b 100644 +--- a/gcc/expmed.c ++++ b/gcc/expmed.c +@@ -1875,8 +1875,6 @@ extract_fixed_bit_field (enum machine_mode tmode, rtx op0, + /* To extract a signed bit-field, first shift its msb to the msb of the word, + then arithmetic-shift its lsb to the lsb of the word. */ + op0 = force_reg (mode, op0); +- if (mode != tmode) +- target = 0; + + /* Find the narrowest integer mode that contains the field. */ + +@@ -1888,6 +1886,9 @@ extract_fixed_bit_field (enum machine_mode tmode, rtx op0, + break; + } + ++ if (mode != tmode) ++ target = 0; ++ + if (GET_MODE_BITSIZE (mode) != (bitsize + bitpos)) + { + tree amount +new file mode 100644 +index 0000000..ebe81b3 +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/compile/pr49029.c +@@ -0,0 +1,10 @@ ++/* PR middle-end/49029 */ ++struct S { volatile unsigned f : 11; signed g : 30; } __attribute__((packed)); ++struct T { volatile struct S h; } __attribute__((packed)) a; ++void foo (int); ++ ++void ++bar () ++{ ++ foo (a.h.g); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0306-PR-target-49104.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0306-PR-target-49104.patch new file mode 100644 index 000000000..b9ffa5798 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0306-PR-target-49104.patch @@ -0,0 +1,63 @@ +From 19444be5c75a1e7bcc7f2490a3503947d4904b64 Mon Sep 17 00:00:00 2001 +From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 22 May 2011 19:14:50 +0000 +Subject: [PATCH] PR target/49104 + * config/i386/cpuid.h (bit_MMXEXT): New define. + +libcpp/ChangeLog: + +2011-05-22 Uros Bizjak <ubizjak@gmail.com> + + PR target/49104 + * lex.c (init_vectorized_lexer): Do not set "minimum" when __3dNOW_A__ + is defined. Check bit_MMXEXT and bit_CMOV to use search_line_mmx. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174038 138bc75d-0d04-0410-961f-82ee72b054a4 + +index e9d0fab..3c3f47b 100644 +--- a/gcc/config/i386/cpuid.h ++++ b/gcc/config/i386/cpuid.h +@@ -57,6 +57,7 @@ + #define bit_TBM (1 << 21) + + /* %edx */ ++#define bit_MMXEXT (1 << 22) + #define bit_LM (1 << 29) + #define bit_3DNOWP (1 << 30) + #define bit_3DNOW (1 << 31) +index 3bf4886..6c3be71 100644 +--- a/libcpp/lex.c ++++ b/libcpp/lex.c +@@ -294,7 +294,7 @@ static const char repl_chars[4][16] __attribute__((aligned(16))) = { + /* A version of the fast scanner using MMX vectorized byte compare insns. + + This uses the PMOVMSKB instruction which was introduced with "MMX2", +- which was packaged into SSE1; it is also present in the AMD 3dNOW-A ++ which was packaged into SSE1; it is also present in the AMD MMX + extension. Mark the function as using "sse" so that we emit a real + "emms" instruction, rather than the 3dNOW "femms" instruction. */ + +@@ -488,7 +488,7 @@ init_vectorized_lexer (void) + minimum = 3; + #elif defined(__SSE2__) + minimum = 2; +-#elif defined(__SSE__) || defined(__3dNOW_A__) ++#elif defined(__SSE__) + minimum = 1; + #endif + +@@ -505,7 +505,8 @@ init_vectorized_lexer (void) + } + else if (__get_cpuid (0x80000001, &dummy, &dummy, &dummy, &edx)) + { +- if (minimum == 1 || edx & bit_3DNOWP) ++ if (minimum == 1 ++ || (edx & (bit_MMXEXT | bit_CMOV)) == (bit_MMXEXT | bit_CMOV)) + impl = search_line_mmx; + } + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0307-config.gcc-sparc-elf-Add-sparc-t-crtin.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0307-config.gcc-sparc-elf-Add-sparc-t-crtin.patch new file mode 100644 index 000000000..8771bfc7b --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0307-config.gcc-sparc-elf-Add-sparc-t-crtin.patch @@ -0,0 +1,150 @@ +From a6bb991323a90fe945a0989119412916048b9254 Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 22 May 2011 20:03:43 +0000 +Subject: [PATCH] * config.gcc (sparc-*-elf*): Add sparc/t-crtin. + (sparc-*-rtems*): Likewise. + (sparc64-*-elf*): Likewise. + (sparc64-*-rtems*): Likewise. + (sparc*-*-solaris2*): Likewise. Remove crti.o crtn.o extra parts. + * config/sparc/t-crtin: New file. + * config/sparc/t-sol2 (crti.o): Delete rule. + (crtn.o): Likewise. + * config/sparc/t-linux64 (EXTRA_MULTILIB_PARTS): Delete. + * config/sparc/t-sol2-64 (EXTRA_MULTILIB_PARTS): Likewise. + * config/sparc/sp64-elf.h (STARTFILE_SPEC): Tidy and add crti.o. + (ENDFILE_SPEC): Add crtn.o. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174042 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 1f13564..ada68dd 100644 +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -2522,12 +2522,12 @@ sparc-*-elf*) + tmake_file="sparc/t-elf" + ;; + esac +- tmake_file="${tmake_file} sparc/t-crtfm" ++ tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm" + extra_parts="crtbegin.o crtend.o" + ;; + sparc-*-rtems*) + tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h" +- tmake_file="sparc/t-elf sparc/t-crtfm t-rtems" ++ tmake_file="sparc/t-elf sparc/t-crtin sparc/t-crtfm t-rtems" + extra_parts="crtbegin.o crtend.o" + ;; + sparc-*-linux*) +@@ -2585,7 +2585,7 @@ sparc*-*-solaris2*) + tm_file="${tm_file} sol2-gld.h sparc/sol2-gld-bi.h" + fi + tm_file="${tm_file} tm-dwarf2.h" +- tmake_file="t-sol2 sparc/t-sol2 sparc/t-sol2-64 sparc/t-crtfm" ++ tmake_file="t-sol2 sparc/t-sol2 sparc/t-sol2-64 sparc/t-crtin sparc/t-crtfm" + if test x$gnu_ld = xyes; then + tmake_file="$tmake_file t-slibgcc-elf-ver" + else +@@ -2598,7 +2598,7 @@ sparc*-*-solaris2*) + cxx_target_objs="sol2-c.o" + extra_objs="sol2.o" + tm_p_file="${tm_p_file} sol2-protos.h" +- extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o" ++ extra_parts="crt1.o gcrt1.o gmon.o crtbegin.o crtend.o" + case ${enable_threads}:${have_pthread_h}:${have_thread_h} in + "":yes:* | yes:yes:* ) + thread_file=posix +@@ -2615,13 +2615,13 @@ sparc-wrs-vxworks) + sparc64-*-elf*) + tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h" + extra_options="${extra_options} sparc/little-endian.opt" +- tmake_file="${tmake_file} sparc/t-crtfm" ++ tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm" + extra_parts="crtbegin.o crtend.o" + ;; + sparc64-*-rtems*) + tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h" + extra_options="${extra_options} sparc/little-endian.opt" +- tmake_file="${tmake_file} sparc/t-crtfm t-rtems" ++ tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm t-rtems" + extra_parts="crtbegin.o crtend.o" + ;; + sparc64-*-linux*) +diff --git a/gcc/config/sparc/sp64-elf.h b/gcc/config/sparc/sp64-elf.h +index fe49a79..c15e9ad 100644 +--- a/gcc/config/sparc/sp64-elf.h ++++ b/gcc/config/sparc/sp64-elf.h +@@ -53,18 +53,13 @@ along with GCC; see the file COPYING3. If not see + %{mlittle-endian:-EL} \ + " + +-/* We need something a little simpler for the embedded environment. +- Profiling doesn't really work yet so we just copy the default. */ + #undef STARTFILE_SPEC +-#define STARTFILE_SPEC "\ +-%{!shared:%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}} \ +-crtbegin.o%s \ +-" ++#define STARTFILE_SPEC "crt0.o%s crti.o%s crtbegin.o%s" + + #undef ENDFILE_SPEC + #define ENDFILE_SPEC \ + "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ +- crtend.o%s" ++ crtend.o%s crtn.o%s" + + /* Use the default (for now). */ + #undef LIB_SPEC +diff --git a/gcc/config/sparc/t-crtin b/gcc/config/sparc/t-crtin +new file mode 100644 +index 0000000..2612bac +--- /dev/null ++++ b/gcc/config/sparc/t-crtin +@@ -0,0 +1,6 @@ ++EXTRA_PARTS += crti.o crtn.o ++ ++$(T)crti.o: $(srcdir)/config/sparc/sol2-ci.asm $(GCC_PASSES) ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-ci.asm ++$(T)crtn.o: $(srcdir)/config/sparc/sol2-cn.asm $(GCC_PASSES) ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-cn.asm +diff --git a/gcc/config/sparc/t-linux64 b/gcc/config/sparc/t-linux64 +index 4a7de45..74d0489 100644 +--- a/gcc/config/sparc/t-linux64 ++++ b/gcc/config/sparc/t-linux64 +@@ -31,9 +31,6 @@ MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR) + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib + +-EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \ +- crtfastmath.o +- + CRTSTUFF_T_CFLAGS = `if test x$$($(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) \ + -print-multi-os-directory) \ + = x../lib64; then echo -mcmodel=medany; fi` +diff --git a/gcc/config/sparc/t-sol2 b/gcc/config/sparc/t-sol2 +index 9db0c13..b7f665b 100644 +--- a/gcc/config/sparc/t-sol2 ++++ b/gcc/config/sparc/t-sol2 +@@ -26,10 +26,6 @@ $(T)gmon.o: $(srcdir)/config/sparc/gmon-sol2.c $(GCC_PASSES) \ + # Assemble startup files. + $(T)crt1.o: $(srcdir)/config/sparc/sol2-c1.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crt1.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-c1.asm +-$(T)crti.o: $(srcdir)/config/sparc/sol2-ci.asm $(GCC_PASSES) +- $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-ci.asm +-$(T)crtn.o: $(srcdir)/config/sparc/sol2-cn.asm $(GCC_PASSES) +- $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-cn.asm + $(T)gcrt1.o: $(srcdir)/config/sparc/sol2-c1.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -DGCRT1 -o $(T)gcrt1.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-c1.asm + +diff --git a/gcc/config/sparc/t-sol2-64 b/gcc/config/sparc/t-sol2-64 +index a9f4ec1..1802239 100644 +--- a/gcc/config/sparc/t-sol2-64 ++++ b/gcc/config/sparc/t-sol2-64 +@@ -5,6 +5,3 @@ MULTILIB_OSDIRNAMES = . sparcv9 + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +- +-EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o gmon.o crt1.o crti.o crtn.o gcrt1.o \ +- crtfastmath.o +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0308-PR-c-48647.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0308-PR-c-48647.patch new file mode 100644 index 000000000..fc369858a --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0308-PR-c-48647.patch @@ -0,0 +1,97 @@ +From 0bde772c9cd71ef31d4d1e99fb3687eb7086c330 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 22 May 2011 20:31:59 +0000 +Subject: [PATCH] PR c++/48647 + * typeck.c (composite_pointer_type_r): Return error_mark_node + on error in SFINAE context. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174044 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 59bf3ab..9a81ea5 100644 +--- a/gcc/cp/typeck.c ++++ b/gcc/cp/typeck.c +@@ -516,7 +516,8 @@ composite_pointer_type_r (tree t1, tree t2, + { + if (complain & tf_error) + composite_pointer_error (DK_PERMERROR, t1, t2, operation); +- ++ else ++ return error_mark_node; + result_type = void_type_node; + } + result_type = cp_build_qualified_type (result_type, +@@ -527,9 +528,13 @@ composite_pointer_type_r (tree t1, tree t2, + if (TYPE_PTR_TO_MEMBER_P (t1)) + { + if (!same_type_p (TYPE_PTRMEM_CLASS_TYPE (t1), +- TYPE_PTRMEM_CLASS_TYPE (t2)) +- && (complain & tf_error)) +- composite_pointer_error (DK_PERMERROR, t1, t2, operation); ++ TYPE_PTRMEM_CLASS_TYPE (t2))) ++ { ++ if (complain & tf_error) ++ composite_pointer_error (DK_PERMERROR, t1, t2, operation); ++ else ++ return error_mark_node; ++ } + result_type = build_ptrmem_type (TYPE_PTRMEM_CLASS_TYPE (t1), + result_type); + } +new file mode 100644 +index 0000000..4e2ea88 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/sfinae23.C +@@ -0,0 +1,28 @@ ++// PR c++/48647 ++// { dg-options -std=c++0x } ++ ++template< class T > ++T&& declval(); ++ ++template< class T, class U > ++decltype( true ? declval<T>() : declval<U>() ) test( int ); ++ ++template< class T, class U > ++void test( ... ); ++ ++ ++template< class T, class U > ++struct is_same { ++ static const bool value = false; ++}; ++ ++template< class T > ++struct is_same<T, T> { ++ static const bool value = true; ++}; ++ ++#define SA(X) static_assert ((X),#X) ++ ++typedef decltype( test<int*, double*>(0) ) void_expected; ++SA ((is_same<void_expected, void>::value)); ++SA ((!is_same<void_expected, void*>::value)); +diff --git a/gcc/testsuite/g++.dg/template/sfinae8.C b/gcc/testsuite/g++.dg/template/sfinae8.C +index 2ad68dc..5ac09c6 100644 +--- a/gcc/testsuite/g++.dg/template/sfinae8.C ++++ b/gcc/testsuite/g++.dg/template/sfinae8.C +@@ -120,7 +120,7 @@ STATIC_ASSERT((!is_equality_comparable<Y, X>::value)); + STATIC_ASSERT((!is_equality_comparable<Y>::value)); + STATIC_ASSERT((is_equality_comparable<int X::*>::value)); + STATIC_ASSERT((!is_equality_comparable<int X::*, int Y::*>::value)); +-STATIC_ASSERT((is_equality_comparable<int*, float*>::value)); ++STATIC_ASSERT((!is_equality_comparable<int*, float*>::value)); + STATIC_ASSERT((is_equality_comparable<X*, Z*>::value)); + STATIC_ASSERT((!is_equality_comparable<X*, Y*>::value)); + +@@ -139,7 +139,7 @@ STATIC_ASSERT((!is_not_equal_comparable<Y, X>::value)); + STATIC_ASSERT((!is_not_equal_comparable<Y>::value)); + STATIC_ASSERT((is_not_equal_comparable<int X::*>::value)); + STATIC_ASSERT((!is_not_equal_comparable<int X::*, int Y::*>::value)); +-STATIC_ASSERT((is_not_equal_comparable<int*, float*>::value)); ++STATIC_ASSERT((!is_not_equal_comparable<int*, float*>::value)); + STATIC_ASSERT((is_not_equal_comparable<X*, Z*>::value)); + STATIC_ASSERT((!is_not_equal_comparable<X*, Y*>::value)); + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0309-2011-05-22-Jonathan-Wakely-jwakely.gcc-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0309-2011-05-22-Jonathan-Wakely-jwakely.gcc-gmail.com.patch new file mode 100644 index 000000000..f78604e13 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0309-2011-05-22-Jonathan-Wakely-jwakely.gcc-gmail.com.patch @@ -0,0 +1,185 @@ +From b2acc60a75029f02cf14633a15f3a8a242257154 Mon Sep 17 00:00:00 2001 +From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 23 May 2011 00:08:52 +0000 +Subject: [PATCH] 2011-05-22 Jonathan Wakely <jwakely.gcc@gmail.com> + + * testsuite/20_util/bind/cv_quals_2.cc: New. + +2011-05-22 Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/49058 + * include/std/functional (_Bind<_Functor(_Bound_args...)>:: + operator()(_Args&&...)): Don't cv qualify _Functor directly + in the default template argument, SFINAE doesn't apply when + the functor has no arguments. + * testsuite/20_util/bind/49058_1.cc: New. + * testsuite/20_util/bind/49058_2.cc: Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174049 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 57ec506..45bee81 100644 +--- a/libstdc++-v3/include/std/functional ++++ b/libstdc++-v3/include/std/functional +@@ -1207,7 +1207,8 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type) + + // Call as const + template<typename... _Args, typename _Result +- = decltype( std::declval<const _Functor>()( ++ = decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0), ++ typename add_const<_Functor>::type>::type>()( + _Mu<_Bound_args>()( std::declval<const _Bound_args&>(), + std::declval<tuple<_Args...>&>() )... ) )> + _Result +@@ -1220,7 +1221,8 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type) + + // Call as volatile + template<typename... _Args, typename _Result +- = decltype( std::declval<volatile _Functor>()( ++ = decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0), ++ typename add_volatile<_Functor>::type>::type>()( + _Mu<_Bound_args>()( std::declval<volatile _Bound_args&>(), + std::declval<tuple<_Args...>&>() )... ) )> + _Result +@@ -1233,7 +1235,8 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type) + + // Call as const volatile + template<typename... _Args, typename _Result +- = decltype( std::declval<const volatile _Functor>()( ++ = decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0), ++ typename add_cv<_Functor>::type>::type>()( + _Mu<_Bound_args>()( std::declval<const volatile _Bound_args&>(), + std::declval<tuple<_Args...>&>() )... ) )> + _Result +diff --git a/libstdc++-v3/testsuite/20_util/bind/49058_1.cc b/libstdc++-v3/testsuite/20_util/bind/49058_1.cc +new file mode 100644 +index 0000000..fb34e08 +--- /dev/null ++++ b/libstdc++-v3/testsuite/20_util/bind/49058_1.cc +@@ -0,0 +1,34 @@ ++// { dg-options "-pedantic -std=gnu++0x" } ++// { dg-do compile } ++ ++// Copyright (C) 2011 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// <http://www.gnu.org/licenses/>. ++ ++#include <functional> ++ ++// PR libstdc++/49058 ++ ++struct F ++{ ++ void ++ operator()(); ++}; ++ ++void f() ++{ ++ std::bind( F() ); ++} +diff --git a/libstdc++-v3/testsuite/20_util/bind/49058_2.cc b/libstdc++-v3/testsuite/20_util/bind/49058_2.cc +new file mode 100644 +index 0000000..fc9d9a2 +--- /dev/null ++++ b/libstdc++-v3/testsuite/20_util/bind/49058_2.cc +@@ -0,0 +1,28 @@ ++// { dg-options "-pedantic -std=gnu++0x" } ++// { dg-do compile } ++ ++// Copyright (C) 2011 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// <http://www.gnu.org/licenses/>. ++ ++#include <functional> ++ ++// PR libstdc++/49058 ++ ++void f() ++{ ++ std::bind( []{} ); ++} +diff --git a/libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc b/libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc +new file mode 100644 +index 0000000..067d862 +--- /dev/null ++++ b/libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc +@@ -0,0 +1,49 @@ ++// Copyright (C) 2011 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// <http://www.gnu.org/licenses/>. ++ ++// { dg-options "-std=gnu++0x" } ++ ++#include <functional> ++#include <testsuite_hooks.h> ++ ++struct X ++{ ++ int operator()() const { return 0; } ++ int operator()() volatile { return 1; } ++ int operator()() const volatile { return 2; } ++ void operator()() { }; ++}; ++ ++void test01() ++{ ++ bool test __attribute__((unused)) = true; ++ ++ const auto b0 = std::bind(X()); ++ VERIFY( b0() == 0 ); ++ ++ volatile auto b1 = std::bind(X()); ++ VERIFY( b1() == 1 ); ++ ++ const volatile auto b2 = std::bind(X()); ++ VERIFY( b2() == 2 ); ++} ++ ++int main() ++{ ++ test01(); ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0311-PR-middle-end-48973.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0311-PR-middle-end-48973.patch new file mode 100644 index 000000000..c6aa27062 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0311-PR-middle-end-48973.patch @@ -0,0 +1,101 @@ +From ec0109fe82032e869880728da5b026a89c64473f Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 23 May 2011 10:24:47 +0000 +Subject: [PATCH] PR middle-end/48973 + * expr.c (expand_expr_real_2) <case LT_EXPR>: If do_store_flag + failed and the comparison has a single bit signed type, use + constm1_rtx instead of const1_rtx for true value. + (do_store_flag): If ops->type is single bit signed type, disable + signel bit test optimization and pass -1 instead of 1 as last + parameter to emit_store_flag_force. + + * gcc.c-torture/execute/pr48973-1.c: New test. + * gcc.c-torture/execute/pr48973-2.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174063 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 1de0ce4..9a81754 100644 +--- a/gcc/expr.c ++++ b/gcc/expr.c +@@ -8134,7 +8134,10 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode, + op1 = gen_label_rtx (); + jumpifnot_1 (code, treeop0, treeop1, op1, -1); + +- emit_move_insn (target, const1_rtx); ++ if (TYPE_PRECISION (type) == 1 && !TYPE_UNSIGNED (type)) ++ emit_move_insn (target, constm1_rtx); ++ else ++ emit_move_insn (target, const1_rtx); + + emit_label (op1); + return target; +@@ -10088,7 +10091,8 @@ do_store_flag (sepops ops, rtx target, enum machine_mode mode) + + if ((code == NE || code == EQ) + && TREE_CODE (arg0) == BIT_AND_EXPR && integer_zerop (arg1) +- && integer_pow2p (TREE_OPERAND (arg0, 1))) ++ && integer_pow2p (TREE_OPERAND (arg0, 1)) ++ && (TYPE_PRECISION (ops->type) != 1 || TYPE_UNSIGNED (ops->type))) + { + tree type = lang_hooks.types.type_for_mode (mode, unsignedp); + return expand_expr (fold_single_bit_test (loc, +@@ -10108,7 +10112,9 @@ do_store_flag (sepops ops, rtx target, enum machine_mode mode) + + /* Try a cstore if possible. */ + return emit_store_flag_force (target, code, op0, op1, +- operand_mode, unsignedp, 1); ++ operand_mode, unsignedp, ++ (TYPE_PRECISION (ops->type) == 1 ++ && !TYPE_UNSIGNED (ops->type)) ? -1 : 1); + } + + +new file mode 100644 +index 0000000..02688a0 +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/execute/pr48973-1.c +@@ -0,0 +1,20 @@ ++/* PR middle-end/48973 */ ++ ++extern void abort (void); ++struct S { int f : 1; } s; ++int v = -1; ++ ++void ++foo (unsigned int x) ++{ ++ if (x != -1U) ++ abort (); ++} ++ ++int ++main () ++{ ++ s.f = (v & 1) > 0; ++ foo (s.f); ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.c-torture/execute/pr48973-2.c b/gcc/testsuite/gcc.c-torture/execute/pr48973-2.c +new file mode 100644 +index 0000000..a64d491 +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/execute/pr48973-2.c +@@ -0,0 +1,14 @@ ++/* PR middle-end/48973 */ ++ ++extern void abort (void); ++struct S { int f : 1; } s; ++int v = -1; ++ ++int ++main () ++{ ++ s.f = v < 0; ++ if ((unsigned int) s.f != -1U) ++ abort (); ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0312-PR-c-49120.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0312-PR-c-49120.patch new file mode 100644 index 000000000..d5131812a --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0312-PR-c-49120.patch @@ -0,0 +1,50 @@ +From 6a3b64a24d74b084b77e5f0bbff64b0ea7b70159 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 23 May 2011 18:03:31 +0000 +Subject: [PATCH] PR c/49120 + * c-decl.c (start_decl): Convert expr to void_type_node. + + * gcc.dg/pr49120.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174082 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 4e82f28..001330c 100644 +--- a/gcc/c-decl.c ++++ b/gcc/c-decl.c +@@ -1,6 +1,6 @@ + /* Process declarations and variables for C compiler. + Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ++ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. + + This file is part of GCC. +@@ -3948,7 +3948,7 @@ start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs, + return 0; + + if (expr) +- add_stmt (expr); ++ add_stmt (fold_convert (void_type_node, expr)); + + if (TREE_CODE (decl) != FUNCTION_DECL && MAIN_NAME_P (DECL_NAME (decl))) + warning (OPT_Wmain, "%q+D is usually a function", decl); +new file mode 100644 +index 0000000..1a65222 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr49120.c +@@ -0,0 +1,11 @@ ++/* PR c/49120 */ ++/* { dg-do compile } */ ++/* { dg-options "-Wall" } */ ++ ++int ++main () ++{ ++ int a = 1; ++ int c = ({ char b[a + 1]; b[0] = 0; b[0]; }); ++ return c; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0313-PR-debug-49032.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0313-PR-debug-49032.patch new file mode 100644 index 000000000..6400d8749 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0313-PR-debug-49032.patch @@ -0,0 +1,90 @@ +From 62593aed2e6b228ae5b85fb9721b45cc92cce894 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 23 May 2011 18:12:34 +0000 +Subject: [PATCH] PR debug/49032 + * dbxout.c: Include cgraph.h. + (dbxout_expand_expr): If a VAR_DECL is TREE_STATIC, not written + and without value expr, return NULL if no varpool node exists for + it or if it is not needed. + * Makefile.in (dbxout.o): Depend on $(CGRAPH_H). + + * gcc.dg/debug/pr49032.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174084 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 792ca6c..60dcee5 100644 +--- a/gcc/Makefile.in ++++ b/gcc/Makefile.in +@@ -2921,7 +2921,8 @@ optabs.o : optabs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ + dbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ + $(RTL_H) $(FLAGS_H) $(REGS_H) debug.h $(TM_P_H) $(TARGET_H) $(FUNCTION_H) \ + langhooks.h insn-config.h reload.h $(GSTAB_H) xcoffout.h output.h dbxout.h \ +- toplev.h $(DIAGNOSTIC_CORE_H) $(GGC_H) $(OBSTACK_H) $(EXPR_H) gt-dbxout.h ++ toplev.h $(DIAGNOSTIC_CORE_H) $(GGC_H) $(OBSTACK_H) $(EXPR_H) $(CGRAPH_H) \ ++ gt-dbxout.h + debug.o : debug.c debug.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) + sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) debug.h \ + $(TREE_H) $(GGC_H) $(RTL_H) $(REGS_H) $(FLAGS_H) insn-config.h \ +diff --git a/gcc/dbxout.c b/gcc/dbxout.c +index 3b0cf34..836030d 100644 +--- a/gcc/dbxout.c ++++ b/gcc/dbxout.c +@@ -1,7 +1,7 @@ + /* Output dbx-format symbol table information from GNU compiler. + Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, +- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +- Free Software Foundation, Inc. ++ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, ++ 2011 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -91,6 +91,7 @@ along with GCC; see the file COPYING3. If not see + #include "langhooks.h" + #include "obstack.h" + #include "expr.h" ++#include "cgraph.h" + + #ifdef XCOFF_DEBUGGING_INFO + #include "xcoffout.h" +@@ -2393,6 +2394,20 @@ dbxout_expand_expr (tree expr) + disable debug info for these variables. */ + if (!targetm.have_tls && DECL_THREAD_LOCAL_P (expr)) + return NULL; ++ if (TREE_STATIC (expr) ++ && !TREE_ASM_WRITTEN (expr) ++ && !DECL_HAS_VALUE_EXPR_P (expr) ++ && !TREE_PUBLIC (expr) ++ && DECL_RTL_SET_P (expr) ++ && MEM_P (DECL_RTL (expr))) ++ { ++ /* If this is a var that might not be actually output, ++ return NULL, otherwise stabs might reference an undefined ++ symbol. */ ++ struct varpool_node *node = varpool_get_node (expr); ++ if (!node || !node->needed) ++ return NULL; ++ } + /* FALLTHRU */ + + case PARM_DECL: +new file mode 100644 +index 0000000..3985040 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/debug/pr49032.c +@@ -0,0 +1,11 @@ ++/* PR debug/49032 */ ++/* { dg-do link } */ ++ ++static int s = 42; ++ ++int ++main () ++{ ++ int *l[18] = { &s, &s, &s, &s, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0314-PR-lto-49123.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0314-PR-lto-49123.patch new file mode 100644 index 000000000..583217557 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0314-PR-lto-49123.patch @@ -0,0 +1,49 @@ +From 433d639c131ead9f557814afb1f15a0b81e86143 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 23 May 2011 20:37:18 +0000 +Subject: [PATCH] PR lto/49123 + * fold-const.c (constant_boolean_node): If type is non-NULL, + use build_int_cst_type instead of build_int_cst. + + * gcc.c-torture/execute/pr49123.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174087 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 053ae30..51be79d 100644 +--- a/gcc/fold-const.c ++++ b/gcc/fold-const.c +@@ -5953,8 +5953,10 @@ constant_boolean_node (int value, tree type) + return value ? integer_one_node : integer_zero_node; + else if (type == boolean_type_node) + return value ? boolean_true_node : boolean_false_node; ++ else if (type) ++ return build_int_cst_type (type, value); + else +- return build_int_cst (type, value); ++ return build_int_cst (NULL_TREE, value); + } + + +new file mode 100644 +index 0000000..2f1f793 +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/execute/pr49123.c +@@ -0,0 +1,14 @@ ++/* PR lto/49123 */ ++ ++extern void abort (void); ++static struct S { int f : 1; } s; ++static int v = -1; ++ ++int ++main () ++{ ++ s.f = v < 0; ++ if ((unsigned int) s.f != -1U) ++ abort (); ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0316-Always-add-mno-XXX-for-march-native.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0316-Always-add-mno-XXX-for-march-native.patch new file mode 100644 index 000000000..b32aaa9c9 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0316-Always-add-mno-XXX-for-march-native.patch @@ -0,0 +1,98 @@ +From c6d129bd59a33539ec842283252e7ace52a82838 Mon Sep 17 00:00:00 2001 +From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 24 May 2011 17:41:51 +0000 +Subject: [PATCH] Always add -mno-XXX for -march=native. + +2011-05-24 H.J. Lu <hongjiu.lu@intel.com> + + Backport from mainline + 2011-05-24 H.J. Lu <hongjiu.lu@intel.com> + + PR target/49128 + * config/i386/driver-i386.c (host_detect_local_cpu): Always + add -mno-XXX. Handle FMA. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174127 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 35962c8..747122b 100644 +--- a/gcc/config/i386/driver-i386.c ++++ b/gcc/config/i386/driver-i386.c +@@ -395,7 +395,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) + unsigned int has_movbe = 0, has_sse4_1 = 0, has_sse4_2 = 0; + unsigned int has_popcnt = 0, has_aes = 0, has_avx = 0; + unsigned int has_pclmul = 0, has_abm = 0, has_lwp = 0; +- unsigned int has_fma4 = 0, has_xop = 0; ++ unsigned int has_fma = 0, has_fma4 = 0, has_xop = 0; + unsigned int has_bmi = 0, has_tbm = 0; + + bool arch; +@@ -443,6 +443,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) + has_popcnt = ecx & bit_POPCNT; + has_aes = ecx & bit_AES; + has_pclmul = ecx & bit_PCLMUL; ++ has_fma = ecx & bit_FMA; + + has_cmpxchg8b = edx & bit_CMPXCHG8B; + has_cmov = edx & bit_CMOV; +@@ -681,37 +682,26 @@ const char *host_detect_local_cpu (int argc, const char **argv) + + if (arch) + { +- if (has_cmpxchg16b) +- options = concat (options, " -mcx16", NULL); +- if (has_lahf_lm) +- options = concat (options, " -msahf", NULL); +- if (has_movbe) +- options = concat (options, " -mmovbe", NULL); +- if (has_aes) +- options = concat (options, " -maes", NULL); +- if (has_pclmul) +- options = concat (options, " -mpclmul", NULL); +- if (has_popcnt) +- options = concat (options, " -mpopcnt", NULL); +- if (has_abm) +- options = concat (options, " -mabm", NULL); +- if (has_lwp) +- options = concat (options, " -mlwp", NULL); +- if (has_fma4) +- options = concat (options, " -mfma4", NULL); +- if (has_xop) +- options = concat (options, " -mxop", NULL); +- if (has_bmi) +- options = concat (options, " -mbmi", NULL); +- if (has_tbm) +- options = concat (options, " -mtbm", NULL); +- +- if (has_avx) +- options = concat (options, " -mavx", NULL); +- else if (has_sse4_2) +- options = concat (options, " -msse4.2", NULL); +- else if (has_sse4_1) +- options = concat (options, " -msse4.1", NULL); ++ const char *cx16 = has_cmpxchg16b ? " -mcx16" : " -mno-cx16"; ++ const char *sahf = has_lahf_lm ? " -msahf" : " -mno-sahf"; ++ const char *movbe = has_movbe ? " -mmovbe" : " -mno-movbe"; ++ const char *ase = has_aes ? " -maes" : " -mno-aes"; ++ const char *pclmul = has_pclmul ? " -mpclmul" : " -mno-pclmul"; ++ const char *popcnt = has_popcnt ? " -mpopcnt" : " -mno-popcnt"; ++ const char *abm = has_abm ? " -mabm" : " -mno-abm"; ++ const char *lwp = has_lwp ? " -mlwp" : " -mno-lwp"; ++ const char *fma = has_fma ? " -mfma" : " -mno-fma"; ++ const char *fma4 = has_fma4 ? " -mfma4" : " -mno-fma4"; ++ const char *xop = has_xop ? " -mxop" : " -mno-xop"; ++ const char *bmi = has_bmi ? " -mbmi" : " -mno-bmi"; ++ const char *tbm = has_tbm ? " -mtbm" : " -mno-tbm"; ++ const char *avx = has_avx ? " -mavx" : " -mno-avx"; ++ const char *sse4_2 = has_sse4_2 ? " -msse4.2" : " -mno-msse4.2"; ++ const char *sse4_1 = has_sse4_1 ? " -msse4.1" : " -mno-sse4.1"; ++ ++ options = concat (options, cx16, sahf, movbe, ase, pclmul, ++ popcnt, abm, lwp, fma, fma4, xop, bmi, tbm, ++ avx, sse4_2, sse4_1, NULL); + } + + done: +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0317-PR-target-49133.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0317-PR-target-49133.patch new file mode 100644 index 000000000..0d77b7788 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0317-PR-target-49133.patch @@ -0,0 +1,93 @@ +From 9aeec4c33a6e405da2d97c3c45efe2165b44cf97 Mon Sep 17 00:00:00 2001 +From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 24 May 2011 18:41:31 +0000 +Subject: [PATCH] PR target/49133 + * config/i386/sse.md (sse2_loadhpd): Remove shufpd alternative. + +testsuite/ChangeLog: + + PR target/49133 + * g++.dg/other/pr49133.C: New test. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174131 138bc75d-0d04-0410-961f-82ee72b054a4 + +index c9866f0..7e18678 100644 +--- a/gcc/config/i386/sse.md ++++ b/gcc/config/i386/sse.md +@@ -4950,24 +4950,22 @@ + ;; Avoid combining registers from different units in a single alternative, + ;; see comment above inline_secondary_memory_needed function in i386.c + (define_insn "sse2_loadhpd" +- [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,x,o,o,o") ++ [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,o,o,o") + (vec_concat:V2DF + (vec_select:DF +- (match_operand:V2DF 1 "nonimmediate_operand" " 0,0,x,0,0,0") ++ (match_operand:V2DF 1 "nonimmediate_operand" " 0,0,0,0,0") + (parallel [(const_int 0)])) +- (match_operand:DF 2 "nonimmediate_operand" " m,x,0,x,*f,r")))] ++ (match_operand:DF 2 "nonimmediate_operand" " m,x,x,*f,r")))] + "TARGET_SSE2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "@ + movhpd\t{%2, %0|%0, %2} + unpcklpd\t{%2, %0|%0, %2} +- shufpd\t{$1, %1, %0|%0, %1, 1} + # + # + #" +- [(set_attr "type" "ssemov,sselog,sselog,ssemov,fmov,imov") +- (set_attr "prefix_data16" "1,*,*,*,*,*") +- (set_attr "length_immediate" "*,*,1,*,*,*") +- (set_attr "mode" "V1DF,V2DF,V2DF,DF,DF,DF")]) ++ [(set_attr "type" "ssemov,sselog,ssemov,fmov,imov") ++ (set_attr "prefix_data16" "1,*,*,*,*") ++ (set_attr "mode" "V1DF,V2DF,DF,DF,DF")]) + + (define_split + [(set (match_operand:V2DF 0 "memory_operand" "") +new file mode 100644 +index 0000000..a59687f +--- /dev/null ++++ b/gcc/testsuite/g++.dg/other/pr49133.C +@@ -0,0 +1,36 @@ ++/* { dg-do run { target i?86-*-* x86_64-*-* } } */ ++/* { dg-options "-O2 -msse2" } */ ++/* { dg-require-effective-target sse2_runtime } */ ++ ++#include <xmmintrin.h> ++ ++extern "C" void abort (); ++ ++typedef double double_a __attribute__((__may_alias__)); ++ ++struct V ++{ ++ __m128d data; ++}; ++ ++int ++main() ++{ ++ V a; ++ __m128d b; ++ ++ b = _mm_set_pd (1., 0.); ++ a.data = _mm_set_pd (1., 0.); ++ a.data = _mm_add_pd (a.data, ++ _mm_and_pd (_mm_cmpeq_pd (a.data, _mm_set1_pd (0.)), ++ _mm_set1_pd (2.))); ++ reinterpret_cast<double_a *>(&a.data)[1] += 1.; ++ b = _mm_add_pd (b, _mm_and_pd (_mm_cmpeq_pd (b, _mm_set1_pd (0.)), ++ _mm_set1_pd (1.))); ++ b = _mm_add_pd (b, _mm_and_pd (_mm_cmpeq_pd (b, _mm_set1_pd (1.)), ++ _mm_set1_pd (1.))); ++ if (_mm_movemask_pd (_mm_cmpeq_pd (a.data, b)) != 0x3) ++ abort(); ++ ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0318-config-sparc-sparc.c-sparc_option_override-If-not-se.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0318-config-sparc-sparc.c-sparc_option_override-If-not-se.patch new file mode 100644 index 000000000..cbdd2df09 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0318-config-sparc-sparc.c-sparc_option_override-If-not-se.patch @@ -0,0 +1,27 @@ +From c270038da4551bed55d36f8b51337a03bce0e1b2 Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 24 May 2011 22:29:40 +0000 +Subject: [PATCH] * config/sparc/sparc.c (sparc_option_override): If not set by the user, + force flag_ira_share_save_slots to 0. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174149 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 8ad374a..c6a2047 100644 +--- a/gcc/config/sparc/sparc.c ++++ b/gcc/config/sparc/sparc.c +@@ -970,6 +970,12 @@ sparc_option_override (void) + ? 64 : 32), + global_options.x_param_values, + global_options_set.x_param_values); ++ ++ /* Disable save slot sharing for call-clobbered registers by default. ++ The IRA sharing algorithm works on single registers only and this ++ pessimizes for double floating-point registers. */ ++ if (!global_options_set.x_flag_ira_share_save_slots) ++ flag_ira_share_save_slots = 0; + } + + /* Miscellaneous utilities. */ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0320-PR-c-48617.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0320-PR-c-48617.patch new file mode 100644 index 000000000..9186fe0d7 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0320-PR-c-48617.patch @@ -0,0 +1,37 @@ +From 67d72b54cf6df49411f806fac3b0519dbceaa576 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 01:08:07 +0000 +Subject: [PATCH] PR c++/48617 + * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174158 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d9c7ac4..8646f08 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -17867,6 +17867,8 @@ invalid_nontype_parm_type_p (tree type, tsubst_flags_t complain) + return 0; + else if (TREE_CODE (type) == TYPENAME_TYPE) + return 0; ++ else if (TREE_CODE (type) == DECLTYPE_TYPE) ++ return 0; + + if (complain & tf_error) + error ("%q#T is not a valid type for a template constant parameter", type); +new file mode 100644 +index 0000000..cb962ad +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/decltype27.C +@@ -0,0 +1,9 @@ ++// PR c++/48617 ++// { dg-options -std=c++0x } ++ ++template<class T, decltype(T())> // # ++struct A {}; ++ ++A<int, 0> a; ++ ++int main() {} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0321-PR-c-47544.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0321-PR-c-47544.patch new file mode 100644 index 000000000..f5d08a7ca --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0321-PR-c-47544.patch @@ -0,0 +1,57 @@ +From a3e14f367c292f053515b5244bf0b7fb11a4e0bc Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 01:08:16 +0000 +Subject: [PATCH] PR c++/47544 + * pt.c (instantiate_decl): Handle =default. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174159 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 8646f08..c8eb1d5 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -17210,7 +17210,8 @@ instantiate_decl (tree d, int defer_ok, + args = gen_args; + + if (TREE_CODE (d) == FUNCTION_DECL) +- pattern_defined = (DECL_SAVED_TREE (code_pattern) != NULL_TREE); ++ pattern_defined = (DECL_SAVED_TREE (code_pattern) != NULL_TREE ++ || DECL_DEFAULTED_OUTSIDE_CLASS_P (code_pattern)); + else + pattern_defined = ! DECL_IN_AGGR_P (code_pattern); + +@@ -17405,6 +17406,8 @@ instantiate_decl (tree d, int defer_ok, + cp_finish_decl (d, init, const_init, NULL_TREE, 0); + pop_nested_class (); + } ++ else if (TREE_CODE (d) == FUNCTION_DECL && DECL_DEFAULTED_FN (code_pattern)) ++ synthesize_method (d); + else if (TREE_CODE (d) == FUNCTION_DECL) + { + htab_t saved_local_specializations; +new file mode 100644 +index 0000000..7d9139d +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/defaulted27.C +@@ -0,0 +1,19 @@ ++// PR c++/47544 ++// { dg-options -std=c++0x } ++// { dg-final { scan-assembler "_ZN1sIiEC2Ev" } } ++// { dg-final { scan-assembler-not "_ZN1sIiED2Ev" } } ++ ++template <typename T> ++struct s { ++ s(); ++ ~s() = default; ++}; ++ ++extern template struct s<int>; ++ ++template <typename T> ++s<T>::s() = default; ++ ++template struct s<int>; ++ ++s<int> a; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0322-PR-c-47336.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0322-PR-c-47336.patch new file mode 100644 index 000000000..d5bdf2ca9 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0322-PR-c-47336.patch @@ -0,0 +1,53 @@ +From cabe6e4db49d70512f795dd87a2c6e67f2587648 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 01:08:24 +0000 +Subject: [PATCH] PR c++/47336 + * error.c (dump_template_bindings): Suppress access control. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174160 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 28305d2..2477123 100644 +--- a/gcc/cp/error.c ++++ b/gcc/cp/error.c +@@ -312,7 +312,9 @@ dump_template_bindings (tree parms, tree args, VEC(tree,gc)* typenames) + pp_cxx_whitespace (cxx_pp); + pp_equal (cxx_pp); + pp_cxx_whitespace (cxx_pp); ++ push_deferring_access_checks (dk_no_check); + t = tsubst (t, args, tf_none, NULL_TREE); ++ pop_deferring_access_checks (); + /* Strip typedefs. We can't just use TFF_CHASE_TYPEDEF because + pp_simple_type_specifier doesn't know about it. */ + t = strip_typedefs (t); +new file mode 100644 +index 0000000..e7da961 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/error3.C +@@ -0,0 +1,24 @@ ++// PR c++/47336 ++// { dg-options -std=c++0x } ++ ++template <typename T> ++void g(T t) ++{ ++ t+1; // { dg-error "no match" } ++} ++ ++template <typename S> ++class C ++{ ++ struct D {} d; ++public: ++ decltype(g(d)) h() ++ { ++ return g(d); ++ } ++}; ++ ++int main() ++{ ++ C<int>().h(); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0323-PR-c-47263.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0323-PR-c-47263.patch new file mode 100644 index 000000000..2983f8473 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0323-PR-c-47263.patch @@ -0,0 +1,45 @@ +From 83cedb74fbe2740877ae824da6ee339342eaddee Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 01:08:31 +0000 +Subject: [PATCH] PR c++/47263 + * decl.c (use_eh_spec_block): Do use an EH spec block for a + lambda op(). + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174161 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 108bb47..9e029d2 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -12570,7 +12570,7 @@ use_eh_spec_block (tree fn) + not creating the EH_SPEC_BLOCK we save a little memory, + and we avoid spurious warnings about unreachable + code. */ +- && !DECL_ARTIFICIAL (fn)); ++ && !DECL_DEFAULTED_FN (fn)); + } + + /* Store the parameter declarations into the current function declaration. +new file mode 100644 +index 0000000..1490a25 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C +@@ -0,0 +1,16 @@ ++// PR c++/47263 ++// { dg-options -std=c++0x } ++// { dg-do run } ++ ++#include <exception> ++ ++int main( void ) ++{ ++ std::set_unexpected( []{ throw 0; } ); ++ try ++ { ++ []() throw( int ) { throw nullptr; }(); ++ } ++ catch( int ) ++ { } ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0324-PR-c-49105.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0324-PR-c-49105.patch new file mode 100644 index 000000000..895fc54ae --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0324-PR-c-49105.patch @@ -0,0 +1,75 @@ +From 64c58ffe439f284f8ff22900f2bbd4923e92d835 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 01:08:38 +0000 +Subject: [PATCH] PR c++/49105 + * typeck.c (build_const_cast_1): Handle rvalue references. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174162 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 9a81ea5..578eb83 100644 +--- a/gcc/cp/typeck.c ++++ b/gcc/cp/typeck.c +@@ -6220,14 +6220,29 @@ build_const_cast_1 (tree dst_type, tree expr, bool complain, + + /* [expr.const.cast] + +- An lvalue of type T1 can be explicitly converted to an lvalue of +- type T2 using the cast const_cast<T2&> (where T1 and T2 are object +- types) if a pointer to T1 can be explicitly converted to the type +- pointer to T2 using a const_cast. */ ++ For two object types T1 and T2, if a pointer to T1 can be explicitly ++ converted to the type "pointer to T2" using a const_cast, then the ++ following conversions can also be made: ++ ++ -- an lvalue of type T1 can be explicitly converted to an lvalue of ++ type T2 using the cast const_cast<T2&>; ++ ++ -- a glvalue of type T1 can be explicitly converted to an xvalue of ++ type T2 using the cast const_cast<T2&&>; and ++ ++ -- if T1 is a class type, a prvalue of type T1 can be explicitly ++ converted to an xvalue of type T2 using the cast const_cast<T2&&>. */ ++ + if (TREE_CODE (dst_type) == REFERENCE_TYPE) + { + reference_type = dst_type; +- if (! real_lvalue_p (expr)) ++ if (!TYPE_REF_IS_RVALUE (dst_type) ++ ? real_lvalue_p (expr) ++ : (CLASS_TYPE_P (TREE_TYPE (dst_type)) ++ ? lvalue_p (expr) ++ : lvalue_or_rvalue_with_address_p (expr))) ++ /* OK. */; ++ else + { + if (complain) + error ("invalid const_cast of an rvalue of type %qT to type %qT", +new file mode 100644 +index 0000000..94ee4ca +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/rv-cast2.C +@@ -0,0 +1,21 @@ ++// Test for const_cast to reference (5.2.11/4). ++// { dg-options -std=c++0x } ++ ++template <class T> T&& xval(); ++template <class T> T& lval(); ++template <class T> T prval(); ++ ++struct A { }; ++ ++int main() ++{ ++ const_cast<int&>(lval<int>()); ++ const_cast<int&>(xval<int>()); // { dg-error "" } ++ const_cast<int&>(prval<int>()); // { dg-error "" } ++ const_cast<int&&>(lval<int>()); ++ const_cast<int&&>(xval<int>()); ++ const_cast<int&&>(prval<int>()); // { dg-error "" } ++ const_cast<A&&>(lval<A>()); ++ const_cast<A&&>(xval<A>()); ++ const_cast<A&&>(prval<A>()); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0325-PR-c-48884.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0325-PR-c-48884.patch new file mode 100644 index 000000000..3eccc8622 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0325-PR-c-48884.patch @@ -0,0 +1,86 @@ +From 40c44f13de1ac037a120636d569933155f5e5af7 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 01:08:46 +0000 +Subject: [PATCH] PR c++/48884 + * pt.c (fn_type_unification): Disable access control during + substitution. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174163 138bc75d-0d04-0410-961f-82ee72b054a4 + +index c8eb1d5..e7040c1 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -13743,7 +13743,9 @@ fn_type_unification (tree fn, + incomplete = NUM_TMPL_ARGS (explicit_targs) != NUM_TMPL_ARGS (targs); + + processing_template_decl += incomplete; ++ push_deferring_access_checks (dk_no_check); + fntype = tsubst (fntype, converted_args, tf_none, NULL_TREE); ++ pop_deferring_access_checks (); + processing_template_decl -= incomplete; + + if (fntype == error_mark_node) +@@ -13830,7 +13832,10 @@ fn_type_unification (tree fn, + substitution results in an invalid type, as described above, + type deduction fails. */ + { +- tree substed = tsubst (TREE_TYPE (fn), targs, tf_none, NULL_TREE); ++ tree substed; ++ push_deferring_access_checks (dk_no_check); ++ substed = tsubst (TREE_TYPE (fn), targs, tf_none, NULL_TREE); ++ pop_deferring_access_checks (); + if (substed == error_mark_node) + return 1; + +new file mode 100644 +index 0000000..8414c43 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/template/access21.C +@@ -0,0 +1,23 @@ ++// PR c++/48884 ++ ++class X ++{ ++ static const int I = 42; ++ friend struct Y; ++}; ++ ++template <int I> struct A { }; ++ ++struct Y ++{ ++ template <typename T> ++ static A<T::I> f(T t) ++ { ++ return A<T::I>(); ++ } ++}; ++ ++int main() ++{ ++ Y::f(X()); ++} +diff --git a/gcc/testsuite/g++.dg/template/access22.C b/gcc/testsuite/g++.dg/template/access22.C +new file mode 100644 +index 0000000..9ee28a2 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/template/access22.C +@@ -0,0 +1,15 @@ ++template <int I> struct B { }; ++ ++template <class T> ++B<T::I> f(); ++ ++class A ++{ ++ static const int I = 42; ++ template <class T> friend B<T::I> f(); ++}; ++ ++int main() ++{ ++ f<A>(); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0326-PR-c-49042.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0326-PR-c-49042.patch new file mode 100644 index 000000000..3887365cc --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0326-PR-c-49042.patch @@ -0,0 +1,63 @@ +From d457a29d66693292b2692aa17f038cce88f8962e Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 01:08:53 +0000 +Subject: [PATCH] PR c++/49042 + * pt.c (get_mostly_instantiated_function_type): Use + push_deferring_access_checks rather than set flag_access_control. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174164 138bc75d-0d04-0410-961f-82ee72b054a4 + +index e7040c1..b16d229 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -17800,7 +17800,7 @@ get_mostly_instantiated_function_type (tree decl) + ; + else + { +- int i, save_access_control; ++ int i; + tree partial_args; + + /* Replace the innermost level of the TARGS with NULL_TREEs to +@@ -17815,8 +17815,7 @@ get_mostly_instantiated_function_type (tree decl) + + /* Disable access control as this function is used only during + name-mangling. */ +- save_access_control = flag_access_control; +- flag_access_control = 0; ++ push_deferring_access_checks (dk_no_check); + + ++processing_template_decl; + /* Now, do the (partial) substitution to figure out the +@@ -17831,7 +17830,7 @@ get_mostly_instantiated_function_type (tree decl) + TREE_VEC_LENGTH (partial_args)--; + tparms = tsubst_template_parms (tparms, partial_args, tf_error); + +- flag_access_control = save_access_control; ++ pop_deferring_access_checks (); + } + + return fn_type; +new file mode 100644 +index 0000000..43e5e86 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/access01.C +@@ -0,0 +1,15 @@ ++// PR c++/49042 ++// { dg-options -std=c++0x } ++ ++template <class T> ++class A ++{ ++ T p; ++public: ++ template <class U> auto f() -> decltype(+p) { } ++}; ++ ++int main() ++{ ++ A<int>().f<int>(); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0327-PR-c-49136.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0327-PR-c-49136.patch new file mode 100644 index 000000000..dcf00aece --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0327-PR-c-49136.patch @@ -0,0 +1,142 @@ +From aa15fbe864f58be935154f76f8ebf144988e7746 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 07:03:25 +0000 +Subject: [PATCH] PR c++/49136 + * semantics.c (cxx_eval_bit_field_ref): Handle the + case when BIT_FIELD_REF doesn't cover only a single field. + + * g++.dg/cpp0x/constexpr-bitfield2.C: New test. + * g++.dg/cpp0x/constexpr-bitfield3.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174169 138bc75d-0d04-0410-961f-82ee72b054a4 + +index bd33bac..6207b12 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -6391,6 +6391,9 @@ cxx_eval_bit_field_ref (const constexpr_call *call, tree t, + bool *non_constant_p) + { + tree orig_whole = TREE_OPERAND (t, 0); ++ tree retval, fldval, utype, mask; ++ bool fld_seen = false; ++ HOST_WIDE_INT istart, isize; + tree whole = cxx_eval_constant_expression (call, orig_whole, + allow_non_constant, addr, + non_constant_p); +@@ -6411,12 +6414,47 @@ cxx_eval_bit_field_ref (const constexpr_call *call, tree t, + return t; + + start = TREE_OPERAND (t, 2); ++ istart = tree_low_cst (start, 0); ++ isize = tree_low_cst (TREE_OPERAND (t, 1), 0); ++ utype = TREE_TYPE (t); ++ if (!TYPE_UNSIGNED (utype)) ++ utype = build_nonstandard_integer_type (TYPE_PRECISION (utype), 1); ++ retval = build_int_cst (utype, 0); + FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (whole), i, field, value) + { +- if (bit_position (field) == start) ++ tree bitpos = bit_position (field); ++ if (bitpos == start && DECL_SIZE (field) == TREE_OPERAND (t, 1)) + return value; ++ if (TREE_CODE (TREE_TYPE (field)) == INTEGER_TYPE ++ && TREE_CODE (value) == INTEGER_CST ++ && host_integerp (bitpos, 0) ++ && host_integerp (DECL_SIZE (field), 0)) ++ { ++ HOST_WIDE_INT bit = tree_low_cst (bitpos, 0); ++ HOST_WIDE_INT sz = tree_low_cst (DECL_SIZE (field), 0); ++ HOST_WIDE_INT shift; ++ if (bit >= istart && bit + sz <= istart + isize) ++ { ++ fldval = fold_convert (utype, value); ++ mask = build_int_cst_type (utype, -1); ++ mask = fold_build2 (LSHIFT_EXPR, utype, mask, ++ size_int (TYPE_PRECISION (utype) - sz)); ++ mask = fold_build2 (RSHIFT_EXPR, utype, mask, ++ size_int (TYPE_PRECISION (utype) - sz)); ++ fldval = fold_build2 (BIT_AND_EXPR, utype, fldval, mask); ++ shift = bit - istart; ++ if (BYTES_BIG_ENDIAN) ++ shift = TYPE_PRECISION (utype) - shift - sz; ++ fldval = fold_build2 (LSHIFT_EXPR, utype, fldval, ++ size_int (shift)); ++ retval = fold_build2 (BIT_IOR_EXPR, utype, retval, fldval); ++ fld_seen = true; ++ } ++ } + } +- gcc_unreachable(); ++ if (fld_seen) ++ return fold_convert (TREE_TYPE (t), retval); ++ gcc_unreachable (); + return error_mark_node; + } + +new file mode 100644 +index 0000000..531bf31 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield2.C +@@ -0,0 +1,19 @@ ++// PR c++/49136 ++// { dg-do compile } ++// { dg-options "-std=c++0x" } ++ ++struct day ++{ ++ unsigned d : 5; ++ unsigned n : 3; ++ constexpr explicit day (int dd) : d(dd), n(7) {} ++}; ++ ++struct date { ++ int d; ++ constexpr date (day dd) : d(dd.n != 7 ? 7 : dd.d) {} ++}; ++ ++constexpr day d(0); ++constexpr date dt(d); ++static_assert (dt.d == 0, "Error"); +diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield3.C +new file mode 100644 +index 0000000..b0ecbfb +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield3.C +@@ -0,0 +1,33 @@ ++// PR c++/49136 ++// { dg-do compile } ++// { dg-options "-std=c++0x" } ++ ++struct S ++{ ++ unsigned : 1; unsigned s : 27; unsigned : 4; ++ constexpr S (unsigned int x) : s(x) {} ++}; ++ ++template <typename S> ++struct T ++{ ++ unsigned int t; ++ constexpr T (S s) : t(s.s != 7 ? 0 : s.s) {} ++ constexpr T (S s, S s2) : t(s.s != s2.s ? 0 : s.s) {} ++}; ++ ++constexpr S s (7), s2 (7); ++constexpr T<S> t (s), t2 (s, s2); ++static_assert (t.t == 7, "Error"); ++static_assert (t2.t == 7, "Error"); ++ ++struct U ++{ ++ int a : 1; int s : 1; ++ constexpr U (int x, int y) : a (x), s (y) {} ++}; ++ ++constexpr U u (0, -1), u2 (-1, -1); ++constexpr T<U> t3 (u), t4 (u, u2); ++static_assert (t3.t == 0, "Error"); ++static_assert (t4.t == -1, "Error"); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0328-In-libobjc.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0328-In-libobjc.patch new file mode 100644 index 000000000..7e2287cb3 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0328-In-libobjc.patch @@ -0,0 +1,81 @@ +From 30ac84569e48f4807970260f04821bf31f42b66c Mon Sep 17 00:00:00 2001 +From: nicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 09:07:57 +0000 +Subject: [PATCH] In libobjc/: + 2011-05-25 Nicola Pero <nicola.pero@meta-innovation.com> + + Backport from mainline + 2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com> + + PR libobjc/48177 + * selector.c (__sel_register_typed_name): Use sel_types_match() + instead of strcmp() to compare selector types (Suggestion by + Richard Frith-Macdonald <rfm@gnu.org>). + +In gcc/testsuite/: +2011-05-25 Nicola Pero <nicola.pero@meta-innovation.com> + + Backport from mainline + 2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com> + + PR libobjc/48177 + * objc.dg/pr48177.m: New testcase. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174176 138bc75d-0d04-0410-961f-82ee72b054a4 + +new file mode 100644 +index 0000000..0d7ff29 +--- /dev/null ++++ b/gcc/testsuite/objc.dg/pr48177.m +@@ -0,0 +1,35 @@ ++/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, May 2011. */ ++/* { dg-do run } */ ++/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ ++ ++#include <objc/runtime.h> ++#include <stdlib.h> ++ ++int main(int argc, void **args) ++{ ++#ifdef __GNU_LIBOBJC__ ++ /* This special test tests that, if you have a selector already ++ registered in the runtime with full type information, you can use ++ sel_registerTypedName() to get it even if you specify the type ++ with incorrect argframe information. This is helpful as ++ selectors generated by the compiler (which have correct argframe ++ information) are usually registered before hand-written ones ++ (which often have incorrect argframe information, but need the ++ correct one). ++ ++ Note that in this hand-written test, even the type information of ++ the first selector may be wrong (on this machine); but that's OK ++ as we'll never actually use the selectors. */ ++ SEL selector1 = sel_registerTypedName ("testMethod", "i8@0:4"); ++ SEL selector2 = sel_registerTypedName ("testMethod", "i8@8:8"); ++ ++ /* We compare the selectors using ==, not using sel_isEqual(). This ++ is because we are testing internals of the runtime and we know ++ that in the current implementation they should be identical if ++ the stuff is to work as expected. Don't do this at home. */ ++ if (selector1 != selector2) ++ abort (); ++#endif ++ ++ return 0; ++} +index 80d2d80..628b4f6 100644 +--- a/libobjc/selector.c ++++ b/libobjc/selector.c +@@ -597,7 +597,7 @@ __sel_register_typed_name (const char *name, const char *types, + return s; + } + } +- else if (! strcmp (s->sel_types, types)) ++ else if (sel_types_match (s->sel_types, types)) + { + if (orig) + { +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0329-2011-05-24-Paolo-Carlini-paolo.carlini-oracle.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0329-2011-05-24-Paolo-Carlini-paolo.carlini-oracle.com.patch new file mode 100644 index 000000000..16bd473ac --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0329-2011-05-24-Paolo-Carlini-paolo.carlini-oracle.com.patch @@ -0,0 +1,62 @@ +From f570679582d3de6b502bc9c24312937714636ae2 Mon Sep 17 00:00:00 2001 +From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 09:45:58 +0000 +Subject: [PATCH] 2011-05-24 Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/49141 + * testsuite/26_numerics/complex/cons/48760.cc: Use dg-require-c-std. + * testsuite/26_numerics/headers/cmath/19322.cc: Likewise. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174179 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 0201cc7..0027a34 100644 +--- a/libstdc++-v3/testsuite/26_numerics/complex/cons/48760.cc ++++ b/libstdc++-v3/testsuite/26_numerics/complex/cons/48760.cc +@@ -1,3 +1,5 @@ ++// { dg-require-c-std "" } ++ + // Copyright (C) 2011 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free +diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc +index 955286f..25494c3 100644 +--- a/libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc ++++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc +@@ -1,4 +1,6 @@ +-// Copyright (C) 2005, 2009 Free Software Foundation, Inc. ++// { dg-require-c-std "" } ++ ++// Copyright (C) 2005, 2009, 2010, 2011 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the +@@ -15,11 +17,9 @@ + // with this library; see the file COPYING3. If not see + // <http://www.gnu.org/licenses/>. + +- + #include <cmath> + #include <testsuite_hooks.h> + +-#if _GLIBCXX_USE_C99_MATH + // libstdc++/19322 + void test01() + { +@@ -27,12 +27,9 @@ void test01() + + VERIFY( !std::isnan(3.0) ); + } +-#endif + + int main() + { +-#if _GLIBCXX_USE_C99_MATH + test01(); +-#endif + return 0; + } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0330-PR-tree-optimization-44897.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0330-PR-tree-optimization-44897.patch new file mode 100644 index 000000000..83aca891d --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0330-PR-tree-optimization-44897.patch @@ -0,0 +1,24 @@ +From 897d9c798309e5aabcd9adc8f9c25b018232fdf6 Mon Sep 17 00:00:00 2001 +From: hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 11:36:49 +0000 +Subject: [PATCH] PR tree-optimization/44897 + * ipa-inline.c (cgraph_decide_recursive_inlining): Do not divide + by zero for insane profiles. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174183 138bc75d-0d04-0410-961f-82ee72b054a4 + +index cbda4be..62e1610 100644 +--- a/gcc/ipa-inline.c ++++ b/gcc/ipa-inline.c +@@ -895,7 +895,7 @@ cgraph_decide_recursive_inlining (struct cgraph_node *node, + continue; + } + +- if (max_count) ++ if (max_count && node->count) + { + if (!cgraph_maybe_hot_edge_p (curr)) + { +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0331-PR-target-49128.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0331-PR-target-49128.patch new file mode 100644 index 000000000..a023889fb --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0331-PR-target-49128.patch @@ -0,0 +1,23 @@ +From 0e0048243dbaa8c562757c95e3e9c810e7285b11 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 11:53:58 +0000 +Subject: [PATCH] PR target/49128 + * config/i386/driver-i386.c (host_detect_local_cpu): Fix a typo. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174184 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 747122b..4fc6b45 100644 +--- a/gcc/config/i386/driver-i386.c ++++ b/gcc/config/i386/driver-i386.c +@@ -696,7 +696,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) + const char *bmi = has_bmi ? " -mbmi" : " -mno-bmi"; + const char *tbm = has_tbm ? " -mtbm" : " -mno-tbm"; + const char *avx = has_avx ? " -mavx" : " -mno-avx"; +- const char *sse4_2 = has_sse4_2 ? " -msse4.2" : " -mno-msse4.2"; ++ const char *sse4_2 = has_sse4_2 ? " -msse4.2" : " -mno-sse4.2"; + const char *sse4_1 = has_sse4_1 ? " -msse4.1" : " -mno-sse4.1"; + + options = concat (options, cx16, sahf, movbe, ase, pclmul, +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0332-PR-c-48292.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0332-PR-c-48292.patch new file mode 100644 index 000000000..9bc558832 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0332-PR-c-48292.patch @@ -0,0 +1,71 @@ +From 8b1d0e0f8d8667c8f71aa00080108115d6891354 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 15:26:14 +0000 +Subject: [PATCH] PR c++/48292 + * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of + function parameter pack. + (tsubst_pack_expansion): Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174207 138bc75d-0d04-0410-961f-82ee72b054a4 + +index b16d229..d379a8c 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -8690,7 +8690,12 @@ tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain, + have the wrong value for a recursive call. Just make a + dummy decl, since it's only used for its type. */ + arg_pack = tsubst_decl (parm_pack, args, complain); +- arg_pack = make_fnparm_pack (arg_pack); ++ if (arg_pack && FUNCTION_PARAMETER_PACK_P (arg_pack)) ++ /* Partial instantiation of the parm_pack, we can't build ++ up an argument pack yet. */ ++ arg_pack = NULL_TREE; ++ else ++ arg_pack = make_fnparm_pack (arg_pack); + } + } + else +@@ -9780,14 +9785,14 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain) + if (DECL_TEMPLATE_PARM_P (t)) + SET_DECL_TEMPLATE_PARM_P (r); + +- /* An argument of a function parameter pack is not a parameter +- pack. */ +- FUNCTION_PARAMETER_PACK_P (r) = false; +- + if (expanded_types) + /* We're on the Ith parameter of the function parameter + pack. */ + { ++ /* An argument of a function parameter pack is not a parameter ++ pack. */ ++ FUNCTION_PARAMETER_PACK_P (r) = false; ++ + /* Get the Ith type. */ + type = TREE_VEC_ELT (expanded_types, i); + +new file mode 100644 +index 0000000..0ec69af +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/variadic109.C +@@ -0,0 +1,17 @@ ++// PR c++/48292 ++// { dg-options -std=c++0x } ++ ++template <typename... Args> int g(Args...); ++ ++template <int N = 0> ++struct A ++{ ++ template <typename... Args> ++ static auto f(Args... args) -> decltype(g(args...)); ++}; ++ ++int main() ++{ ++ A<>::f(); ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0333-PR-c-45080.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0333-PR-c-45080.patch new file mode 100644 index 000000000..9f585c75b --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0333-PR-c-45080.patch @@ -0,0 +1,59 @@ +From f6c71a6aa6e71a5dde50a13377d8ebd1a41aa9ab Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 15:26:25 +0000 +Subject: [PATCH] PR c++/45080 + * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op. + * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174208 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d379a8c..c5f2422 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -8557,6 +8557,9 @@ instantiate_class_template (tree type) + } + } + ++ if (CLASSTYPE_LAMBDA_EXPR (type)) ++ maybe_add_lambda_conv_op (type); ++ + /* Set the file and line number information to whatever is given for + the class itself. This puts error messages involving generated + implicit functions at a predictable point, and the same point +diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c +index 6207b12..b113626 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -8086,7 +8086,8 @@ lambda_function (tree lambda) + type = lambda; + gcc_assert (LAMBDA_TYPE_P (type)); + /* Don't let debug_tree cause instantiation. */ +- if (CLASSTYPE_TEMPLATE_INSTANTIATION (type) && !COMPLETE_TYPE_P (type)) ++ if (CLASSTYPE_TEMPLATE_INSTANTIATION (type) ++ && !COMPLETE_OR_OPEN_TYPE_P (type)) + return NULL_TREE; + lambda = lookup_member (type, ansi_opname (CALL_EXPR), + /*protect=*/0, /*want_type=*/false); +new file mode 100644 +index 0000000..53d8e99 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv5.C +@@ -0,0 +1,15 @@ ++// PR c++/45080 ++// { dg-options -std=c++0x } ++ ++typedef void(*pfn)(); ++ ++template<typename=int> ++void f() ++{ ++ pfn fn = []{}; ++} ++ ++void test() ++{ ++ f(); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0334-PR-c-45418.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0334-PR-c-45418.patch new file mode 100644 index 000000000..74627bf5b --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0334-PR-c-45418.patch @@ -0,0 +1,50 @@ +From 6681641e6f9638bf4a8b80be12858ab438be0152 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 15:26:33 +0000 +Subject: [PATCH] PR c++/45418 + * init.c (perform_member_init): Handle list-initialization + of array of non-trivial class type. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174209 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 286bfb6..172a71a 100644 +--- a/gcc/cp/init.c ++++ b/gcc/cp/init.c +@@ -528,6 +528,8 @@ perform_member_init (tree member, tree init) + { + gcc_assert (TREE_CHAIN (init) == NULL_TREE); + init = TREE_VALUE (init); ++ if (BRACE_ENCLOSED_INITIALIZER_P (init)) ++ init = digest_init (type, init); + } + if (init == NULL_TREE + || same_type_ignoring_top_level_qualifiers_p (type, +new file mode 100644 +index 0000000..ef4e72c +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/initlist50.C +@@ -0,0 +1,21 @@ ++// PR c++/45418 ++// { dg-options -std=c++0x } ++ ++struct A1 { }; ++struct A2 { ++ A2(); ++}; ++ ++template <class T> struct B { ++ T ar[1]; ++ B(T t):ar({t}) {} ++}; ++ ++int main(){ ++ B<int> bi{1}; ++ A1 a1; ++ B<A1> ba1{a1}; ++ A2 a2; ++ A2 a2r[1]{{a2}}; ++ B<A2> ba2{a2}; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0335-PR-c-48935.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0335-PR-c-48935.patch new file mode 100644 index 000000000..05320ac06 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0335-PR-c-48935.patch @@ -0,0 +1,76 @@ +From 388aa866785638f2769c4e628fb9e6139d1bdaee Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 15:26:42 +0000 +Subject: [PATCH] PR c++/48935 + * parser.c (cp_parser_constructor_declarator_p): Don't check + constructor_name_p for enums. + (cp_parser_diagnose_invalid_type_name): Correct error message. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174210 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 68c2f88..4c7d9cb 100644 +--- a/gcc/cp/parser.c ++++ b/gcc/cp/parser.c +@@ -2788,7 +2788,7 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser, + "%qT is a dependent scope", + parser->scope, id, parser->scope); + else if (TYPE_P (parser->scope)) +- error_at (location, "%qE in class %qT does not name a type", ++ error_at (location, "%qE in %q#T does not name a type", + id, parser->scope); + else + gcc_unreachable (); +@@ -19642,7 +19642,7 @@ cp_parser_constructor_declarator_p (cp_parser *parser, bool friend_p) + /* If we have a class scope, this is easy; DR 147 says that S::S always + names the constructor, and no other qualified name could. */ + if (constructor_p && nested_name_specifier +- && TYPE_P (nested_name_specifier)) ++ && CLASS_TYPE_P (nested_name_specifier)) + { + tree id = cp_parser_unqualified_id (parser, + /*template_keyword_p=*/false, +new file mode 100644 +index 0000000..ebb4868 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/enum16.C +@@ -0,0 +1,6 @@ ++// PR c++/48935 ++// { dg-options -std=c++0x } ++ ++enum class ENUM { a }; ++ ++ENUM::Type func() { return ENUM::a; } // { dg-error "does not name a type" } +diff --git a/gcc/testsuite/g++.dg/parse/error15.C b/gcc/testsuite/g++.dg/parse/error15.C +index 2352193..607a1db 100644 +--- a/gcc/testsuite/g++.dg/parse/error15.C ++++ b/gcc/testsuite/g++.dg/parse/error15.C +@@ -12,7 +12,7 @@ namespace N + + N::A f2; // { dg-error "1:invalid use of template-name 'N::A' without an argument list" } + N::INVALID f3; // { dg-error "1:'INVALID' in namespace 'N' does not name a type" } +-N::C::INVALID f4; // { dg-error "1:'INVALID' in class 'N::C' does not name a type" } ++N::C::INVALID f4; // { dg-error "1:'INVALID' in 'struct N::C' does not name a type" } + N::K f6; // { dg-error "1:'K' in namespace 'N' does not name a type" } + typename N::A f7; + // { dg-error "13:invalid use of template-name 'N::A' without an argument list" "13" { target *-*-* } 17 } +@@ -22,7 +22,7 @@ struct B + { + N::A f2; // { dg-error "3:invalid use of template-name 'N::A' without an argument list" } + N::INVALID f3; // { dg-error "3:'INVALID' in namespace 'N' does not name a type" } +- N::C::INVALID f4; // { dg-error "3:'INVALID' in class 'N::C' does not name a type" } ++ N::C::INVALID f4; // { dg-error "3:'INVALID' in 'struct N::C' does not name a type" } + N::K f6; // { dg-error "3:'K' in namespace 'N' does not name a type" } + typename N::A f7; + // { dg-error "15:invalid use of template-name 'N::A' without an argument list" "15" { target *-*-* } 27 } +@@ -33,7 +33,7 @@ struct C + { + N::A f2; // { dg-error "3:invalid use of template-name 'N::A' without an argument list" } + N::INVALID f3; // { dg-error "3:'INVALID' in namespace 'N' does not name a type" } +- N::C::INVALID f4; // { dg-error "3:'INVALID' in class 'N::C' does not name a type" } ++ N::C::INVALID f4; // { dg-error "3:'INVALID' in 'struct N::C' does not name a type" } + N::K f6; // { dg-error "3:'K' in namespace 'N' does not name a type" } + typename N::A f7; // { dg-error "15:invalid use of template-name 'N::A' without an argument list" } + }; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0336-gcc.target-arm-fp16-compile-none-1.c-Update-expected.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0336-gcc.target-arm-fp16-compile-none-1.c-Update-expected.patch new file mode 100644 index 000000000..47f824450 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0336-gcc.target-arm-fp16-compile-none-1.c-Update-expected.patch @@ -0,0 +1,74 @@ +From e5da38986a5476bb0b2d0d5c41f402721ee8b784 Mon Sep 17 00:00:00 2001 +From: janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 16:38:55 +0000 +Subject: [PATCH] * gcc.target/arm/fp16-compile-none-1.c: Update expected error. + * g++.dg/abi/packed1.C: Suppress warning. + * g++.dg/warn/Wunused-parm-3.C: Likewise. + * g++.dg/template/stdarg1.C: Likewise. + * g++.dg/other/packed1.C: Remove arm from xfail list. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174214 138bc75d-0d04-0410-961f-82ee72b054a4 + +index c903709..8345375 100644 +--- a/gcc/testsuite/g++.dg/abi/packed1.C ++++ b/gcc/testsuite/g++.dg/abi/packed1.C +@@ -1,10 +1,10 @@ + // PR c++/41788 +-// { dg-options "-Wpacked" } + // { dg-do run } ++// { dg-options "-Wpacked -Wno-attributes" } + + extern "C" void abort (); + +-struct INNER { // { dg-warning "inefficient.*vptr" "" { target alpha*-*-* ia64-*-* hppa*-*-* mips-sgi-irix* sparc*-*-* spu-*-* sh*-*-* } } ++struct INNER { + virtual int foo() const { return 1; } + } __attribute__ ((packed)); + +diff --git a/gcc/testsuite/g++.dg/other/packed1.C b/gcc/testsuite/g++.dg/other/packed1.C +index 7a842d3..ac586c6 100644 +--- a/gcc/testsuite/g++.dg/other/packed1.C ++++ b/gcc/testsuite/g++.dg/other/packed1.C +@@ -1,4 +1,4 @@ +-// { dg-do run { xfail arm*-*-* sh-*-* lm32-*-* } } ++// { dg-do run { xfail sh-*-* lm32-*-* } } + + // NMS:2003-04-21 this fails on strict aligned architectures again, + // the patch was reverted because it broke something more important. +diff --git a/gcc/testsuite/g++.dg/template/stdarg1.C b/gcc/testsuite/g++.dg/template/stdarg1.C +index ddc8c78..94804ee 100644 +--- a/gcc/testsuite/g++.dg/template/stdarg1.C ++++ b/gcc/testsuite/g++.dg/template/stdarg1.C +@@ -1,5 +1,7 @@ + // PR c++/47022 + // { dg-do compile } ++// Suppress a warning that is irrelevant to the purpose of this test. ++// { dg-options "-Wno-abi" { target arm_eabi } } + + #include <cstdarg> + +diff --git a/gcc/testsuite/g++.dg/warn/Wunused-parm-3.C b/gcc/testsuite/g++.dg/warn/Wunused-parm-3.C +index 4d293f3..3f0a0e7 100644 +--- a/gcc/testsuite/g++.dg/warn/Wunused-parm-3.C ++++ b/gcc/testsuite/g++.dg/warn/Wunused-parm-3.C +@@ -1,5 +1,7 @@ + // { dg-do compile } + // { dg-options "-Wunused -W" } ++// Suppress a warning that is irrelevant to the purpose of this test. ++// { dg-options "-Wunused -W -Wno-abi" { target arm_eabi } } + + #include <stdarg.h> + +diff --git a/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c b/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c +index ca29123..e912505 100644 +--- a/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c ++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c +@@ -3,4 +3,4 @@ + + /* __fp16 type name is not recognized unless you explicitly enable it + by selecting -mfp16-format=ieee or -mfp16-format=alternative. */ +-__fp16 xx = 0.0; /* { dg-error "expected" } */ ++__fp16 xx = 0.0; /* { dg-error "unknown type name" } */ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0337-PR-c-47184.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0337-PR-c-47184.patch new file mode 100644 index 000000000..c3d02ef19 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0337-PR-c-47184.patch @@ -0,0 +1,64 @@ +From b7eebf48e80a907e875b82beb837379b5d93f8e2 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 20:29:39 +0000 +Subject: [PATCH] PR c++/47184 + * parser.c (cp_parser_parameter_declaration): Recognize + list-initialization. + (cp_parser_direct_declarator): Check for the closing + paren before parsing definitely. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174232 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 4c7d9cb..4d6ddcc 100644 +--- a/gcc/cp/parser.c ++++ b/gcc/cp/parser.c +@@ -15031,6 +15031,9 @@ cp_parser_direct_declarator (cp_parser* parser, + parser->num_template_parameter_lists + = saved_num_template_parameter_lists; + ++ /* Consume the `)'. */ ++ cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN); ++ + /* If all went well, parse the cv-qualifier-seq and the + exception-specification. */ + if (member_p || cp_parser_parse_definitely (parser)) +@@ -15044,8 +15047,6 @@ cp_parser_direct_declarator (cp_parser* parser, + if (ctor_dtor_or_conv_p) + *ctor_dtor_or_conv_p = *ctor_dtor_or_conv_p < 0; + first = false; +- /* Consume the `)'. */ +- cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN); + + /* Parse the cv-qualifier-seq. */ + cv_quals = cp_parser_cv_qualifier_seq_opt (parser); +@@ -16132,6 +16133,7 @@ cp_parser_parameter_declaration (cp_parser *parser, + of some object of type "char" to "int". */ + && !parser->in_type_id_in_expr_p + && cp_parser_uncommitted_to_tentative_parse_p (parser) ++ && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE) + && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_PAREN)) + cp_parser_commit_to_tentative_parse (parser); + /* Parse the declarator. */ +new file mode 100644 +index 0000000..9163dd3 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/initlist51.C +@@ -0,0 +1,15 @@ ++// PR c++/47184 ++// { dg-options -std=c++0x } ++ ++struct S ++{ ++ int a; ++}; ++struct T ++{ ++ T(S s) {} ++}; ++int main() ++{ ++ T t(S{1}); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0338-PR-c-46696.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0338-PR-c-46696.patch new file mode 100644 index 000000000..b08e4b372 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0338-PR-c-46696.patch @@ -0,0 +1,48 @@ +From c2acb441c539c4d3c307166def3c3c779cdccf43 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 20:29:47 +0000 +Subject: [PATCH] PR c++/46696 + * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174233 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 578eb83..2022f0f 100644 +--- a/gcc/cp/typeck.c ++++ b/gcc/cp/typeck.c +@@ -6727,7 +6727,7 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs, + + /* Allow array assignment in compiler-generated code. */ + else if (!current_function_decl +- || !DECL_ARTIFICIAL (current_function_decl)) ++ || !DECL_DEFAULTED_FN (current_function_decl)) + { + /* This routine is used for both initialization and assignment. + Make sure the diagnostic message differentiates the context. */ +new file mode 100644 +index 0000000..5fcf5b0 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/defaulted29.C +@@ -0,0 +1,20 @@ ++// PR c++/46696 ++// { dg-options -std=c++0x } ++ ++struct A ++{ ++ A& operator= (A const&); ++}; ++ ++struct B ++{ ++ A ar[1]; ++ B& operator= (B const&) = default; ++}; ++ ++int main() ++{ ++ B x; ++ B y; ++ y = x; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0339-PR-c-46245.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0339-PR-c-46245.patch new file mode 100644 index 000000000..67295c5f7 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0339-PR-c-46245.patch @@ -0,0 +1,88 @@ +From 5c27b6339932010631806a4c36f57ad909d3ce35 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 20:29:54 +0000 +Subject: [PATCH] PR c++/46245 + * decl.c (grokdeclarator): Complain later for auto parameter. + * pt.c (splice_late_return_type): Handle use in a template + type-parameter. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174234 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 9e029d2..dbf03f9 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -8559,12 +8559,6 @@ grokdeclarator (const cp_declarator *declarator, + || thread_p) + error ("storage class specifiers invalid in parameter declarations"); + +- if (type_uses_auto (type)) +- { +- error ("parameter declared %<auto%>"); +- type = error_mark_node; +- } +- + /* Function parameters cannot be constexpr. If we saw one, moan + and pretend it wasn't there. */ + if (constexpr_p) +@@ -9550,6 +9544,12 @@ grokdeclarator (const cp_declarator *declarator, + if (ctype || in_namespace) + error ("cannot use %<::%> in parameter declaration"); + ++ if (type_uses_auto (type)) ++ { ++ error ("parameter declared %<auto%>"); ++ type = error_mark_node; ++ } ++ + /* A parameter declared as an array of T is really a pointer to T. + One declared as a function is really a pointer to a function. + One declared as a member is really a pointer to member. */ +diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c +index c5f2422..3afeb9b 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -19061,7 +19061,12 @@ splice_late_return_type (tree type, tree late_return_type) + return type; + argvec = make_tree_vec (1); + TREE_VEC_ELT (argvec, 0) = late_return_type; +- if (processing_template_decl) ++ if (processing_template_parmlist) ++ /* For a late-specified return type in a template type-parameter, we ++ need to add a dummy argument level for its parmlist. */ ++ argvec = add_to_template_args ++ (make_tree_vec (processing_template_parmlist), argvec); ++ if (current_template_parms) + argvec = add_to_template_args (current_template_args (), argvec); + return tsubst (type, argvec, tf_warning_or_error, NULL_TREE); + } +new file mode 100644 +index 0000000..49b5a0e +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/auto23.C +@@ -0,0 +1,4 @@ ++// PR c++/46245 ++// { dg-options -std=c++0x } ++ ++template<auto f()->int> struct A { }; +diff --git a/gcc/testsuite/g++.dg/cpp0x/auto9.C b/gcc/testsuite/g++.dg/cpp0x/auto9.C +index ab90be5..142ef90 100644 +--- a/gcc/testsuite/g++.dg/cpp0x/auto9.C ++++ b/gcc/testsuite/g++.dg/cpp0x/auto9.C +@@ -79,10 +79,10 @@ enum struct D : auto * { FF = 0 }; // { dg-error "must be an integral type|decl + void + bar () + { +- try { } catch (auto i) { } // { dg-error "invalid use of" } +- try { } catch (auto) { } // { dg-error "invalid use of" } +- try { } catch (auto *i) { } // { dg-error "invalid use of" } +- try { } catch (auto *) { } // { dg-error "invalid use of" } ++ try { } catch (auto i) { } // { dg-error "parameter declared" } ++ try { } catch (auto) { } // { dg-error "parameter declared" } ++ try { } catch (auto *i) { } // { dg-error "parameter declared" } ++ try { } catch (auto *) { } // { dg-error "parameter declared" } + } + + void +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0340-PR-c-46145.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0340-PR-c-46145.patch new file mode 100644 index 000000000..9fe99c7fc --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0340-PR-c-46145.patch @@ -0,0 +1,37 @@ +From 1f170608081cc8e7a2b1ef2954a5762a04c67af5 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 20:30:01 +0000 +Subject: [PATCH] PR c++/46145 + * decl.c (grokdeclarator): Complain about auto typedef. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174235 138bc75d-0d04-0410-961f-82ee72b054a4 + +index dbf03f9..cc7a155 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -9304,6 +9304,12 @@ grokdeclarator (const cp_declarator *declarator, + memfn_quals = TYPE_UNQUALIFIED; + } + ++ if (type_uses_auto (type)) ++ { ++ error ("typedef declared %<auto%>"); ++ type = error_mark_node; ++ } ++ + if (decl_context == FIELD) + decl = build_lang_decl (TYPE_DECL, unqualified_id, type); + else +index 142ef90..190bfa6 100644 +--- a/gcc/testsuite/g++.dg/cpp0x/auto9.C ++++ b/gcc/testsuite/g++.dg/cpp0x/auto9.C +@@ -119,3 +119,6 @@ H<auto> h; // { dg-error "invalid" } + + void qq (auto); // { dg-error "auto" } + void qr (auto*); // { dg-error "auto" } ++ ++// PR c++/46145 ++typedef auto autot; // { dg-error "auto" } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0341-PR-c-45698.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0341-PR-c-45698.patch new file mode 100644 index 000000000..43ba88bd9 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0341-PR-c-45698.patch @@ -0,0 +1,44 @@ +From 0f9adc22fa4b355389f3e55c0ce8deac3c82301f Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 20:30:12 +0000 +Subject: [PATCH] PR c++/45698 + * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174236 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 3afeb9b..7c71092 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -18512,6 +18512,9 @@ dependent_template_arg_p (tree arg) + if (arg == error_mark_node) + return true; + ++ if (TREE_CODE (arg) == ARGUMENT_PACK_SELECT) ++ arg = ARGUMENT_PACK_SELECT_ARG (arg); ++ + if (TREE_CODE (arg) == TEMPLATE_DECL + || TREE_CODE (arg) == TEMPLATE_TEMPLATE_PARM) + return dependent_template_p (arg); +new file mode 100644 +index 0000000..86f1bb1 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/variadic110.C +@@ -0,0 +1,15 @@ ++// PR c++/45698 ++// { dg-options -std=c++0x } ++ ++template <class... Ts> struct tuple { }; ++ ++template<class... Ts> ++struct A { ++ template<typename T> struct N { }; ++ tuple<N<Ts>...> tup; ++}; ++ ++int main() ++{ ++ A<int, double> a; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0342-PR-c-44311.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0342-PR-c-44311.patch new file mode 100644 index 000000000..6ebd51186 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0342-PR-c-44311.patch @@ -0,0 +1,125 @@ +From f6945c41cc9a66590ea92a1d0d7c862d14ccd23c Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 20:30:21 +0000 +Subject: [PATCH] PR c++/44311 + * decl.c (case_conversion): New. + (finish_case_label): Use it. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174237 138bc75d-0d04-0410-961f-82ee72b054a4 + +index cc7a155..de53541 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -2920,6 +2920,28 @@ pop_switch (void) + free (cs); + } + ++/* Convert a case constant VALUE in a switch to the type TYPE of the switch ++ condition. Note that if TYPE and VALUE are already integral we don't ++ really do the conversion because the language-independent ++ warning/optimization code will work better that way. */ ++ ++static tree ++case_conversion (tree type, tree value) ++{ ++ if (value == NULL_TREE) ++ return value; ++ ++ if (cxx_dialect >= cxx0x ++ && (SCOPED_ENUM_P (type) ++ || !INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (value)))) ++ { ++ if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type)) ++ type = type_promotes_to (type); ++ value = perform_implicit_conversion (type, value, tf_warning_or_error); ++ } ++ return cxx_constant_value (value); ++} ++ + /* Note that we've seen a definition of a case label, and complain if this + is a bad place for one. */ + +@@ -2928,6 +2950,7 @@ finish_case_label (location_t loc, tree low_value, tree high_value) + { + tree cond, r; + struct cp_binding_level *p; ++ tree type; + + if (processing_template_decl) + { +@@ -2947,13 +2970,12 @@ finish_case_label (location_t loc, tree low_value, tree high_value) + if (!check_switch_goto (switch_stack->level)) + return error_mark_node; + +- if (low_value) +- low_value = cxx_constant_value (low_value); +- if (high_value) +- high_value = cxx_constant_value (high_value); ++ type = SWITCH_STMT_TYPE (switch_stack->switch_stmt); ++ ++ low_value = case_conversion (type, low_value); ++ high_value = case_conversion (type, high_value); + +- r = c_add_case_label (loc, switch_stack->cases, cond, +- SWITCH_STMT_TYPE (switch_stack->switch_stmt), ++ r = c_add_case_label (loc, switch_stack->cases, cond, type, + low_value, high_value); + + /* After labels, make any new cleanups in the function go into their +new file mode 100644 +index 0000000..55cf2ad +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-switch2.C +@@ -0,0 +1,23 @@ ++// Test for constexpr conversion in case context ++// { dg-options -std=c++0x } ++ ++enum class E { e1, e2 }; ++ ++struct A ++{ ++ E e; ++ constexpr operator E() { return e; } ++ constexpr A(E e): e(e) { } ++}; ++ ++E e; ++ ++int main() ++{ ++ switch (e) ++ { ++ case A(E::e1): ++ case A(E::e2): ++ ; ++ } ++} +diff --git a/gcc/testsuite/g++.dg/cpp0x/enum15.C b/gcc/testsuite/g++.dg/cpp0x/enum15.C +new file mode 100644 +index 0000000..d653216 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/enum15.C +@@ -0,0 +1,20 @@ ++// PR c++/44311 ++// { dg-options -std=c++0x } ++ ++enum class A { Val0, Val1 }; ++ ++void foo (A a, int i) ++{ ++ switch (a) ++ { ++ case A::Val0: break; ++ case 1: break; // { dg-error "" } ++ } ++ ++ switch (i) ++ { ++ case A::Val0: break; // { dg-error "" } ++ case 1: break; ++ case 2.0: break; ++ } ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0343-gcc-cp-ChangeLog.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0343-gcc-cp-ChangeLog.patch new file mode 100644 index 000000000..364dfa8b5 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0343-gcc-cp-ChangeLog.patch @@ -0,0 +1,207 @@ +From 2cf0a578b9883daa7f515380736d29b537a21ef7 Mon Sep 17 00:00:00 2001 +From: fabien <fabien@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 20:52:15 +0000 +Subject: [PATCH] gcc/cp/ChangeLog: + +2011-05-25 Fabien Chene <fabien@gcc.gnu.org> + * init.c (diagnose_uninitialized_cst_or_ref_member_1): Use + permerror instead of error, adjust the error count. + +gcc/testsuite/ChangeLog: + +2011-05-25 Fabien Chene <fabien@gcc.gnu.org> + * g++.dg/init/pr25811-2.C: New. + * g++.dg/init/pr25811-3.C: New. + * g++.dg/init/pr25811-4.C: New. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174239 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 172a71a..ef9e20e 100644 +--- a/gcc/cp/init.c ++++ b/gcc/cp/init.c +@@ -1893,6 +1893,7 @@ diagnose_uninitialized_cst_or_ref_member_1 (tree type, tree origin, + { + tree field; + int error_count = 0; ++ bool permissive = global_dc->permissive; + + if (type_has_user_provided_constructor (type)) + return 0; +@@ -1911,32 +1912,45 @@ diagnose_uninitialized_cst_or_ref_member_1 (tree type, tree origin, + + if (TREE_CODE (field_type) == REFERENCE_TYPE) + { +- ++ error_count; + if (complain) + { ++ if (!permissive || !using_new) ++ ++ error_count; ++ + if (using_new) +- error ("uninitialized reference member in %q#T " +- "using %<new%> without new-initializer", origin); ++ permerror (input_location, ++ "uninitialized reference member in %q#T " ++ "using %<new%> without new-initializer", origin); + else +- error ("uninitialized reference member in %q#T", origin); ++ error ("uninitialized reference member in %q#T", origin); ++ + inform (DECL_SOURCE_LOCATION (field), + "%qD should be initialized", field); + } ++ else ++ ++ error_count; + } + + if (CP_TYPE_CONST_P (field_type)) + { +- ++ error_count; + if (complain) + { ++ if (!permissive) ++ ++ error_count; ++ + if (using_new) +- error ("uninitialized const member in %q#T " +- "using %<new%> without new-initializer", origin); +- else +- error ("uninitialized const member in %q#T", origin); ++ permerror (input_location, ++ "uninitialized const member in %q#T " ++ "using %<new%> without new-initializer", origin); ++ else ++ permerror (input_location, ++ "uninitialized const member in %q#T", origin); ++ + inform (DECL_SOURCE_LOCATION (field), + "%qD should be initialized", field); + } ++ else ++ ++ error_count; + } + + if (CLASS_TYPE_P (field_type)) +new file mode 100644 +index 0000000..3a36dd4 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/init/pr25811-2.C +@@ -0,0 +1,26 @@ ++// { dg-do compile } ++// { dg-options -fpermissive } ++ ++struct A ++{ ++ int const i; // { dg-message "should be initialized" } ++}; ++ ++struct B ++{ ++ int& r; // { dg-message "should be initialized" } ++}; ++ ++struct C ++{ ++ int const i : 1; // { dg-message "should be initialized" } ++}; ++ ++void f() ++{ ++ new A; // { dg-warning "uninitialized" } ++ new B; // { dg-warning "uninitialized" } ++ new C; // { dg-warning "uninitialized" } ++ C c; // { dg-warning "uninitialized" } ++ A a[1]; // { dg-warning "uninitialized" } ++} +diff --git a/gcc/testsuite/g++.dg/init/pr25811-3.C b/gcc/testsuite/g++.dg/init/pr25811-3.C +new file mode 100644 +index 0000000..631da5b +--- /dev/null ++++ b/gcc/testsuite/g++.dg/init/pr25811-3.C +@@ -0,0 +1,38 @@ ++// { dg-do compile } ++ ++struct A { int const i; }; ++struct B { int& i; }; ++struct C { int i; }; ++ ++template< class T > ++class is_constructible_via_new_without_initializer ++{ ++ template<int> class size {}; ++ ++ typedef char yes_type; ++ struct no_type { char data[2]; }; ++ ++ template <class U> ++ static yes_type sfinae (size< sizeof (new U) >*); ++ ++ template <class U> ++ static no_type sfinae (...); ++ ++public: ++ static const bool value = sizeof (sfinae<T>(0)) == sizeof (yes_type); ++}; ++ ++#define JOIN( X, Y ) DO_JOIN( X, Y ) ++#define DO_JOIN( X, Y ) DO_JOIN2(X,Y) ++#define DO_JOIN2( X, Y ) X##Y ++ ++#ifdef __GXX_EXPERIMENTAL_CXX0X__ ++# define STATIC_ASSERT(Expr) static_assert(Expr, #Expr) ++#else ++# define STATIC_ASSERT(Expr) int JOIN(a,__LINE__)[Expr? 1 : -1] ++#endif ++ ++STATIC_ASSERT (!is_constructible_via_new_without_initializer<A>::value); ++STATIC_ASSERT (!is_constructible_via_new_without_initializer<B>::value); ++STATIC_ASSERT (is_constructible_via_new_without_initializer<C>::value); ++ +diff --git a/gcc/testsuite/g++.dg/init/pr25811-4.C b/gcc/testsuite/g++.dg/init/pr25811-4.C +new file mode 100644 +index 0000000..abfb3d9 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/init/pr25811-4.C +@@ -0,0 +1,38 @@ ++// { dg-do compile } ++// { dg-options "-fpermissive" } ++ ++struct A { int const i; }; ++struct B { int& i; }; ++struct C { int i; }; ++ ++template< class T > ++class is_constructible_via_new_without_initializer ++{ ++ template<int> class size {}; ++ ++ typedef char yes_type; ++ struct no_type { char data[2]; }; ++ ++ template <class U> ++ static yes_type sfinae (size< sizeof (new U) >*); ++ ++ template <class U> ++ static no_type sfinae (...); ++ ++public: ++ static const bool value = sizeof (sfinae<T>(0)) == sizeof (yes_type); ++}; ++ ++#define JOIN( X, Y ) DO_JOIN( X, Y ) ++#define DO_JOIN( X, Y ) DO_JOIN2(X,Y) ++#define DO_JOIN2( X, Y ) X##Y ++ ++#ifdef __GXX_EXPERIMENTAL_CXX0X__ ++# define STATIC_ASSERT(Expr) static_assert(Expr, #Expr) ++#else ++# define STATIC_ASSERT(Expr) int JOIN(a,__LINE__)[Expr? 1 : -1] ++#endif ++ ++STATIC_ASSERT (!is_constructible_via_new_without_initializer<A>::value); ++STATIC_ASSERT (!is_constructible_via_new_without_initializer<B>::value); ++STATIC_ASSERT (is_constructible_via_new_without_initializer<C>::value); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0344-2011-05-25-Paolo-Carlini-paolo.carlini-oracle.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0344-2011-05-25-Paolo-Carlini-paolo.carlini-oracle.com.patch new file mode 100644 index 000000000..91486e862 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0344-2011-05-25-Paolo-Carlini-paolo.carlini-oracle.com.patch @@ -0,0 +1,76 @@ +From 44863daed83ef6e6cb2bfec5670363338df0d887 Mon Sep 17 00:00:00 2001 +From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 23:46:31 +0000 +Subject: [PATCH] 2011-05-25 Paolo Carlini <paolo.carlini@oracle.com> + + * config/abi/pre/gnu.ver: Export recently added basic_streambuf + and basic_stringbuf symbols @3.4.17. + * configure.ac: Update. + * testsuite/util/testsuite_abi.cc: Likewise. + * configure: Regenerate. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174243 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 839f846..778b826 100644 +--- a/libstdc++-v3/config/abi/pre/gnu.ver ++++ b/libstdc++-v3/config/abi/pre/gnu.ver +@@ -1272,6 +1272,17 @@ GLIBCXX_3.4.16 { + + } GLIBCXX_3.4.15; + ++GLIBCXX_3.4.17 { ++ ++ # basic_streambuf<>::__safe_gbump, __safe_pbump ++ _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE12__safe_gbumpE*; ++ _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE12__safe_pbumpE*; ++ ++ # basic_stringbuf<>::_M_pbump ++ _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE8_M_pbumpE*; ++ ++} GLIBCXX_3.4.16; ++ + # Symbols in the support library (libsupc++) have their own tag. + CXXABI_1.3 { + +diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure +index c321e76..9032695 100755 +--- a/libstdc++-v3/configure ++++ b/libstdc++-v3/configure +@@ -2825,7 +2825,7 @@ ac_config_headers="$ac_config_headers config.h" + ### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD + + # For libtool versioning info, format is CURRENT:REVISION:AGE +-libtool_VERSION=6:16:0 ++libtool_VERSION=6:17:0 + + + # Find the rest of the source tree framework. +diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac +index ccf1230..61158c2 100644 +--- a/libstdc++-v3/configure.ac ++++ b/libstdc++-v3/configure.ac +@@ -12,7 +12,7 @@ AC_CONFIG_HEADER(config.h) + ### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD + + # For libtool versioning info, format is CURRENT:REVISION:AGE +-libtool_VERSION=6:16:0 ++libtool_VERSION=6:17:0 + AC_SUBST(libtool_VERSION) + + # Find the rest of the source tree framework. +diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc +index ea100b6..f1f5ad6 100644 +--- a/libstdc++-v3/testsuite/util/testsuite_abi.cc ++++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc +@@ -194,6 +194,7 @@ check_version(symbol& test, bool added) + known_versions.push_back("GLIBCXX_3.4.14"); + known_versions.push_back("GLIBCXX_3.4.15"); + known_versions.push_back("GLIBCXX_3.4.16"); ++ known_versions.push_back("GLIBCXX_3.4.17"); + known_versions.push_back("GLIBCXX_LDBL_3.4"); + known_versions.push_back("GLIBCXX_LDBL_3.4.7"); + known_versions.push_back("GLIBCXX_LDBL_3.4.10"); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0345-2011-05-25-Paolo-Carlini-paolo.carlini-oracle.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0345-2011-05-25-Paolo-Carlini-paolo.carlini-oracle.com.patch new file mode 100644 index 000000000..336f91c15 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0345-2011-05-25-Paolo-Carlini-paolo.carlini-oracle.com.patch @@ -0,0 +1,78 @@ +From 8d80c4587462bb26e116a229978e1682e2099557 Mon Sep 17 00:00:00 2001 +From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 26 May 2011 00:15:58 +0000 +Subject: [PATCH] 2011-05-25 Paolo Carlini <paolo.carlini@oracle.com> + + * config/abi/pre/gnu.ver: Correct last change, export instead + at the existing @3.4.16. + * configure.ac: Revert last change. + * testsuite/util/testsuite_abi.cc: Likewise. + * configure: Regenerate. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174247 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 778b826..57744a4 100644 +--- a/libstdc++-v3/config/abi/pre/gnu.ver ++++ b/libstdc++-v3/config/abi/pre/gnu.ver +@@ -1270,10 +1270,6 @@ GLIBCXX_3.4.16 { + _ZNSs10_S_compareE[jmy][jmy]; + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareE[jmy][jmy]; + +-} GLIBCXX_3.4.15; +- +-GLIBCXX_3.4.17 { +- + # basic_streambuf<>::__safe_gbump, __safe_pbump + _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE12__safe_gbumpE*; + _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE12__safe_pbumpE*; +@@ -1281,7 +1277,7 @@ GLIBCXX_3.4.17 { + # basic_stringbuf<>::_M_pbump + _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE8_M_pbumpE*; + +-} GLIBCXX_3.4.16; ++} GLIBCXX_3.4.15; + + # Symbols in the support library (libsupc++) have their own tag. + CXXABI_1.3 { +diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure +index 9032695..c321e76 100755 +--- a/libstdc++-v3/configure ++++ b/libstdc++-v3/configure +@@ -2825,7 +2825,7 @@ ac_config_headers="$ac_config_headers config.h" + ### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD + + # For libtool versioning info, format is CURRENT:REVISION:AGE +-libtool_VERSION=6:17:0 ++libtool_VERSION=6:16:0 + + + # Find the rest of the source tree framework. +diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac +index 61158c2..ccf1230 100644 +--- a/libstdc++-v3/configure.ac ++++ b/libstdc++-v3/configure.ac +@@ -12,7 +12,7 @@ AC_CONFIG_HEADER(config.h) + ### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD + + # For libtool versioning info, format is CURRENT:REVISION:AGE +-libtool_VERSION=6:17:0 ++libtool_VERSION=6:16:0 + AC_SUBST(libtool_VERSION) + + # Find the rest of the source tree framework. +diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc +index f1f5ad6..ea100b6 100644 +--- a/libstdc++-v3/testsuite/util/testsuite_abi.cc ++++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc +@@ -194,7 +194,6 @@ check_version(symbol& test, bool added) + known_versions.push_back("GLIBCXX_3.4.14"); + known_versions.push_back("GLIBCXX_3.4.15"); + known_versions.push_back("GLIBCXX_3.4.16"); +- known_versions.push_back("GLIBCXX_3.4.17"); + known_versions.push_back("GLIBCXX_LDBL_3.4"); + known_versions.push_back("GLIBCXX_LDBL_3.4.7"); + known_versions.push_back("GLIBCXX_LDBL_3.4.10"); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0347-PR-c-45401.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0347-PR-c-45401.patch new file mode 100644 index 000000000..eaf6921b5 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0347-PR-c-45401.patch @@ -0,0 +1,51 @@ +From 6674aae1e1421a2d600bf9d0a1e501873a88b8f6 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 26 May 2011 03:06:09 +0000 +Subject: [PATCH] PR c++/45401 + * decl.c (grokdeclarator): Don't change type when adding rvalue ref + to another reference type. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174260 138bc75d-0d04-0410-961f-82ee72b054a4 + +index de53541..b3de096 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -9017,13 +9017,18 @@ grokdeclarator (const cp_declarator *declarator, + to create the type "rvalue reference to cv TD' creates the + type TD." + */ +- if (!VOID_TYPE_P (type)) ++ if (VOID_TYPE_P (type)) ++ /* We already gave an error. */; ++ else if (TREE_CODE (type) == REFERENCE_TYPE) ++ { ++ if (declarator->u.reference.rvalue_ref) ++ /* Leave type alone. */; ++ else ++ type = cp_build_reference_type (TREE_TYPE (type), false); ++ } ++ else + type = cp_build_reference_type +- ((TREE_CODE (type) == REFERENCE_TYPE +- ? TREE_TYPE (type) : type), +- (declarator->u.reference.rvalue_ref +- && (TREE_CODE(type) != REFERENCE_TYPE +- || TYPE_REF_IS_RVALUE (type)))); ++ (type, declarator->u.reference.rvalue_ref); + + /* In C++0x, we need this check for direct reference to + reference declarations, which are forbidden by +new file mode 100644 +index 0000000..569ee5b +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/rv-restrict.C +@@ -0,0 +1,6 @@ ++// PR c++/45401 ++// { dg-options -std=c++0x } ++ ++typedef int &__restrict restrictLvref; ++typedef restrictLvref &&rvrefToRestrictLvref; ++typedef restrictLvref rvrefToRestrictLvref; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0348-PR-c-49156.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0348-PR-c-49156.patch new file mode 100644 index 000000000..f5a5036c1 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0348-PR-c-49156.patch @@ -0,0 +1,62 @@ +From 08582a924888d536bb82007d7768ef67fc1804ac Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 26 May 2011 03:06:17 +0000 +Subject: [PATCH] PR c++/49156 + * error.c (dump_template_bindings): Set processing_template_decl + for a partial instantiation. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174261 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 2477123..dffc764 100644 +--- a/gcc/cp/error.c ++++ b/gcc/cp/error.c +@@ -306,6 +306,7 @@ dump_template_bindings (tree parms, tree args, VEC(tree,gc)* typenames) + + FOR_EACH_VEC_ELT (tree, typenames, i, t) + { ++ bool dependent = uses_template_parms (args); + if (need_comma) + pp_separate_with_comma (cxx_pp); + dump_type (t, TFF_PLAIN_IDENTIFIER); +@@ -313,7 +314,11 @@ dump_template_bindings (tree parms, tree args, VEC(tree,gc)* typenames) + pp_equal (cxx_pp); + pp_cxx_whitespace (cxx_pp); + push_deferring_access_checks (dk_no_check); ++ if (dependent) ++ ++processing_template_decl; + t = tsubst (t, args, tf_none, NULL_TREE); ++ if (dependent) ++ --processing_template_decl; + pop_deferring_access_checks (); + /* Strip typedefs. We can't just use TFF_CHASE_TYPEDEF because + pp_simple_type_specifier doesn't know about it. */ +new file mode 100644 +index 0000000..29a1cdd +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/error4.C +@@ -0,0 +1,22 @@ ++// PR c++/49156 ++// { dg-options -std=c++0x } ++ ++template<typename T> T declval(); ++ ++template<typename T> ++struct S { ++ ++ template<typename U> ++ static U get(const volatile T&); ++ ++ template<typename U> ++ static decltype(*declval<U>()) get(...); ++ ++ typedef decltype(get<T>(declval<T>())) type; // { dg-error "no match" } ++}; ++ ++struct X { }; ++ ++S<X>::type x; ++ ++// { dg-prune-output "note" } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0349-PR-tree-optimization-49161.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0349-PR-tree-optimization-49161.patch new file mode 100644 index 000000000..80f89fd41 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0349-PR-tree-optimization-49161.patch @@ -0,0 +1,200 @@ +From a6f15e84e042ffb95afa499d2bd2d6b2758f85f9 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 26 May 2011 10:20:34 +0000 +Subject: [PATCH] PR tree-optimization/49161 + * tree-vrp.c (struct case_info): New type. + (compare_case_labels): Sort case_info structs instead of + trees, and not primarily by CASE_LABEL uids but by + label_for_block indexes. + (find_switch_asserts): Put case labels into struct case_info + array instead of TREE_VEC, adjust sorting, compare label_for_block + values instead of CASE_LABELs. + + * gcc.c-torture/execute/pr49161.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174272 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 2c4fdd4..b5d9fd3 100644 +new file mode 100644 +index 0000000..cc822da +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/execute/pr49161.c +@@ -0,0 +1,46 @@ ++/* PR tree-optimization/49161 */ ++ ++extern void abort (void); ++ ++int c; ++ ++__attribute__((noinline, noclone)) void ++bar (int x) ++{ ++ if (x != c++) ++ abort (); ++} ++ ++__attribute__((noinline, noclone)) void ++foo (int x) ++{ ++ switch (x) ++ { ++ case 3: goto l1; ++ case 4: goto l2; ++ case 6: goto l3; ++ default: return; ++ } ++l1: ++ goto l4; ++l2: ++ goto l4; ++l3: ++ bar (-1); ++l4: ++ bar (0); ++ if (x != 4) ++ bar (1); ++ if (x != 3) ++ bar (-1); ++ bar (2); ++} ++ ++int ++main () ++{ ++ foo (3); ++ if (c != 3) ++ abort (); ++ return 0; ++} +diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c +index 7bff5fa..6914a08 100644 +--- a/gcc/tree-vrp.c ++++ b/gcc/tree-vrp.c +@@ -4672,28 +4672,35 @@ find_conditional_asserts (basic_block bb, gimple last) + return need_assert; + } + +-/* Compare two case labels sorting first by the destination label uid ++struct case_info ++{ ++ tree expr; ++ basic_block bb; ++}; ++ ++/* Compare two case labels sorting first by the destination bb index + and then by the case value. */ + + static int + compare_case_labels (const void *p1, const void *p2) + { +- const_tree const case1 = *(const_tree const*)p1; +- const_tree const case2 = *(const_tree const*)p2; +- unsigned int uid1 = DECL_UID (CASE_LABEL (case1)); +- unsigned int uid2 = DECL_UID (CASE_LABEL (case2)); ++ const struct case_info *ci1 = (const struct case_info *) p1; ++ const struct case_info *ci2 = (const struct case_info *) p2; ++ int idx1 = ci1->bb->index; ++ int idx2 = ci2->bb->index; + +- if (uid1 < uid2) ++ if (idx1 < idx2) + return -1; +- else if (uid1 == uid2) ++ else if (idx1 == idx2) + { + /* Make sure the default label is first in a group. */ +- if (!CASE_LOW (case1)) ++ if (!CASE_LOW (ci1->expr)) + return -1; +- else if (!CASE_LOW (case2)) ++ else if (!CASE_LOW (ci2->expr)) + return 1; + else +- return tree_int_cst_compare (CASE_LOW (case1), CASE_LOW (case2)); ++ return tree_int_cst_compare (CASE_LOW (ci1->expr), ++ CASE_LOW (ci2->expr)); + } + else + return 1; +@@ -4714,8 +4721,8 @@ find_switch_asserts (basic_block bb, gimple last) + gimple_stmt_iterator bsi; + tree op; + edge e; +- tree vec2; +- size_t n = gimple_switch_num_labels(last); ++ struct case_info *ci; ++ size_t n = gimple_switch_num_labels (last); + #if GCC_VERSION >= 4000 + unsigned int idx; + #else +@@ -4730,36 +4737,38 @@ find_switch_asserts (basic_block bb, gimple last) + return false; + + /* Build a vector of case labels sorted by destination label. */ +- vec2 = make_tree_vec (n); ++ ci = XNEWVEC (struct case_info, n); + for (idx = 0; idx < n; ++idx) +- TREE_VEC_ELT (vec2, idx) = gimple_switch_label (last, idx); +- qsort (&TREE_VEC_ELT (vec2, 0), n, sizeof (tree), compare_case_labels); ++ { ++ ci[idx].expr = gimple_switch_label (last, idx); ++ ci[idx].bb = label_to_block (CASE_LABEL (ci[idx].expr)); ++ } ++ qsort (ci, n, sizeof (struct case_info), compare_case_labels); + + for (idx = 0; idx < n; ++idx) + { + tree min, max; +- tree cl = TREE_VEC_ELT (vec2, idx); ++ tree cl = ci[idx].expr; ++ basic_block cbb = ci[idx].bb; + + min = CASE_LOW (cl); + max = CASE_HIGH (cl); + + /* If there are multiple case labels with the same destination + we need to combine them to a single value range for the edge. */ +- if (idx + 1 < n +- && CASE_LABEL (cl) == CASE_LABEL (TREE_VEC_ELT (vec2, idx + 1))) ++ if (idx + 1 < n && cbb == ci[idx + 1].bb) + { + /* Skip labels until the last of the group. */ + do { + ++idx; +- } while (idx < n +- && CASE_LABEL (cl) == CASE_LABEL (TREE_VEC_ELT (vec2, idx))); ++ } while (idx < n && cbb == ci[idx].bb); + --idx; + + /* Pick up the maximum of the case label range. */ +- if (CASE_HIGH (TREE_VEC_ELT (vec2, idx))) +- max = CASE_HIGH (TREE_VEC_ELT (vec2, idx)); ++ if (CASE_HIGH (ci[idx].expr)) ++ max = CASE_HIGH (ci[idx].expr); + else +- max = CASE_LOW (TREE_VEC_ELT (vec2, idx)); ++ max = CASE_LOW (ci[idx].expr); + } + + /* Nothing to do if the range includes the default label until we +@@ -4768,7 +4777,7 @@ find_switch_asserts (basic_block bb, gimple last) + continue; + + /* Find the edge to register the assert expr on. */ +- e = find_edge (bb, label_to_block (CASE_LABEL (cl))); ++ e = find_edge (bb, cbb); + + /* Register the necessary assertions for the operand in the + SWITCH_EXPR. */ +@@ -4786,6 +4795,7 @@ find_switch_asserts (basic_block bb, gimple last) + } + } + ++ XDELETEVEC (ci); + return need_assert; + } + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0350-PR-c-49165.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0350-PR-c-49165.patch new file mode 100644 index 000000000..d684188b9 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0350-PR-c-49165.patch @@ -0,0 +1,89 @@ +From 7a439d1a410aadbff83965a4ad40c92499caa66b Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 26 May 2011 10:27:57 +0000 +Subject: [PATCH] PR c++/49165 + * gimplify.c (shortcut_cond_r): Don't special case + COND_EXPRs if they have void type on one of their arms. + + * g++.dg/eh/cond5.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174274 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 908d736..4c34795 100644 +--- a/gcc/gimplify.c ++++ b/gcc/gimplify.c +@@ -2555,7 +2555,9 @@ shortcut_cond_r (tree pred, tree *true_label_p, tree *false_label_p, + new_locus); + append_to_statement_list (t, &expr); + } +- else if (TREE_CODE (pred) == COND_EXPR) ++ else if (TREE_CODE (pred) == COND_EXPR ++ && !VOID_TYPE_P (TREE_TYPE (TREE_OPERAND (pred, 1))) ++ && !VOID_TYPE_P (TREE_TYPE (TREE_OPERAND (pred, 2)))) + { + location_t new_locus; + +@@ -2563,7 +2565,10 @@ shortcut_cond_r (tree pred, tree *true_label_p, tree *false_label_p, + if (a) + if (b) goto yes; else goto no; + else +- if (c) goto yes; else goto no; */ ++ if (c) goto yes; else goto no; ++ ++ Don't do this if one of the arms has void type, which can happen ++ in C++ when the arm is throw. */ + + /* Keep the original source location on the first 'if'. Set the source + location of the ? on the second 'if'. */ +new file mode 100644 +index 0000000..3f0c599 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/eh/cond5.C +@@ -0,0 +1,43 @@ ++// PR c++/49165 ++// { dg-do run } ++ ++extern "C" void abort (); ++ ++int ++foo (bool x, int y) ++{ ++ if (y < 10 && (x ? true : throw 1)) ++ y++; ++ if (y > 20 || (x ? true : throw 2)) ++ y++; ++ return y; ++} ++ ++int ++main () ++{ ++ if (foo (true, 0) != 2 ++ || foo (true, 10) != 11 ++ || foo (false, 30) != 31) ++ abort (); ++ try ++ { ++ foo (false, 0); ++ abort (); ++ } ++ catch (int i) ++ { ++ if (i != 1) ++ abort (); ++ } ++ try ++ { ++ foo (false, 10); ++ abort (); ++ } ++ catch (int i) ++ { ++ if (i != 2) ++ abort (); ++ } ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0351-PR-target-44643.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0351-PR-target-44643.patch new file mode 100644 index 000000000..18b150103 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0351-PR-target-44643.patch @@ -0,0 +1,44 @@ +From b17f4e7b2f554537d075f35ad5d1b40419d119e8 Mon Sep 17 00:00:00 2001 +From: gjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 26 May 2011 12:52:03 +0000 +Subject: [PATCH] PR target/44643 + * config/avr/avr.c (avr_insert_attributes): Leave TREE_READONLY + alone. Error if non-const data has attribute progmem. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174281 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 92cc7b6..19b020b 100644 +--- a/gcc/config/avr/avr.c ++++ b/gcc/config/avr/avr.c +@@ -4995,14 +4995,20 @@ avr_insert_attributes (tree node, tree *attributes) + && (TREE_STATIC (node) || DECL_EXTERNAL (node)) + && avr_progmem_p (node, *attributes)) + { +- static const char dsec[] = ".progmem.data"; +- *attributes = tree_cons (get_identifier ("section"), +- build_tree_list (NULL, build_string (strlen (dsec), dsec)), +- *attributes); +- +- /* ??? This seems sketchy. Why can't the user declare the +- thing const in the first place? */ +- TREE_READONLY (node) = 1; ++ if (TREE_READONLY (node)) ++ { ++ static const char dsec[] = ".progmem.data"; ++ ++ *attributes = tree_cons (get_identifier ("section"), ++ build_tree_list (NULL, build_string (strlen (dsec), dsec)), ++ *attributes); ++ } ++ else ++ { ++ error ("variable %q+D must be const in order to be put into" ++ " read-only section by means of %<__attribute__((progmem))%>", ++ node); ++ } + } + } + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0352-PR-c-48424.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0352-PR-c-48424.patch new file mode 100644 index 000000000..0ae608ba4 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0352-PR-c-48424.patch @@ -0,0 +1,105 @@ +From 1d07ea72697228c40996bb2e61c7b5b8ed38dc36 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 26 May 2011 13:44:20 +0000 +Subject: [PATCH] PR c++/48424 + * decl.c (grokparms): Function parameter packs don't need to + go at the end. + * pt.c (type_unification_real): But they aren't deduced otherwise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174287 138bc75d-0d04-0410-961f-82ee72b054a4 + +index b3de096..dac87dd 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -10358,12 +10358,6 @@ grokparms (tree parmlist, tree *parms) + init = check_default_argument (decl, init); + } + +- if (TREE_CODE (decl) == PARM_DECL +- && FUNCTION_PARAMETER_PACK_P (decl) +- && TREE_CHAIN (parm) +- && TREE_CHAIN (parm) != void_list_node) +- error ("parameter packs must be at the end of the parameter list"); +- + DECL_CHAIN (decl) = decls; + decls = decl; + result = tree_cons (init, type, result); +diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c +index 7c71092..f648511 100644 +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -14039,11 +14039,24 @@ type_unification_real (tree tparms, + while (parms && parms != void_list_node + && ia < nargs) + { +- if (TREE_CODE (TREE_VALUE (parms)) == TYPE_PACK_EXPANSION) +- break; +- + parm = TREE_VALUE (parms); ++ ++ if (TREE_CODE (parm) == TYPE_PACK_EXPANSION ++ && (!TREE_CHAIN (parms) || TREE_CHAIN (parms) == void_list_node)) ++ /* For a function parameter pack that occurs at the end of the ++ parameter-declaration-list, the type A of each remaining ++ argument of the call is compared with the type P of the ++ declarator-id of the function parameter pack. */ ++ break; ++ + parms = TREE_CHAIN (parms); ++ ++ if (TREE_CODE (parm) == TYPE_PACK_EXPANSION) ++ /* For a function parameter pack that does not occur at the ++ end of the parameter-declaration-list, the type of the ++ parameter pack is a non-deduced context. */ ++ continue; ++ + arg = args[ia]; + ++ia; + arg_expr = NULL; +new file mode 100644 +index 0000000..378162e +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/variadic111.C +@@ -0,0 +1,19 @@ ++// PR c++/48424 ++// { dg-options -std=c++0x } ++ ++template<typename... Args1> ++struct S ++{ ++ template<typename... Args2> ++ void f(Args1... args1, Args2&&... args2) ++ { ++ } ++}; ++ ++int main() ++{ ++ S<int, double> s; ++ s.f(1,2.0,false,'a'); ++} ++ ++// { dg-final { scan-assembler "_ZN1SIIidEE1fIIbcEEEvidDpOT_" } } +diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic41.C b/gcc/testsuite/g++.dg/cpp0x/variadic41.C +index d209766..9cfd847 100644 +--- a/gcc/testsuite/g++.dg/cpp0x/variadic41.C ++++ b/gcc/testsuite/g++.dg/cpp0x/variadic41.C +@@ -1,3 +1,14 @@ ++// A function parameter pack is only deduced if it's at the end + // { dg-options "-std=gnu++0x" } + template<typename... Args> +-void f(const Args&... args, int oops); // { dg-error "end" } ++void f(const Args&... args, int oops); ++ ++int main() ++{ ++ f<>(1); ++ f(1); ++ f<int>(1,2); ++ f(1,2); // { dg-error "no match" } ++} ++ ++// { dg-prune-output "note" } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0354-config-rs6000-rs6000.c-rs6000_register_move_cost-Mak.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0354-config-rs6000-rs6000.c-rs6000_register_move_cost-Mak.patch new file mode 100644 index 000000000..e5cfa1d72 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0354-config-rs6000-rs6000.c-rs6000_register_move_cost-Mak.patch @@ -0,0 +1,28 @@ +From d51320157aee7ce2a4e2478c8457eae2022192fb Mon Sep 17 00:00:00 2001 +From: pthaugen <pthaugen@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 26 May 2011 15:33:43 +0000 +Subject: [PATCH] * config/rs6000/rs6000.c (rs6000_register_move_cost): Make LR/CTR + moves expensive on Power7 also. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174294 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 898a87b..b39801a 100644 +--- a/gcc/config/rs6000/rs6000.c ++++ b/gcc/config/rs6000/rs6000.c +@@ -26670,9 +26670,10 @@ rs6000_register_move_cost (enum machine_mode mode, + else if (from == CR_REGS) + ret = 4; + +- /* Power6 has slower LR/CTR moves so make them more expensive than +- memory in order to bias spills to memory .*/ +- else if (rs6000_cpu == PROCESSOR_POWER6 ++ /* For those processors that have slow LR/CTR moves, make them more ++ expensive than memory in order to bias spills to memory .*/ ++ else if ((rs6000_cpu == PROCESSOR_POWER6 ++ || rs6000_cpu == PROCESSOR_POWER7) + && reg_classes_intersect_p (from, LINK_OR_CTR_REGS)) + ret = 6 * hard_regno_nregs[0][mode]; + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0355-2011-05-26-Paul-Thomas-pault-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0355-2011-05-26-Paul-Thomas-pault-gcc.gnu.org.patch new file mode 100644 index 000000000..7f0518a1b --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0355-2011-05-26-Paul-Thomas-pault-gcc.gnu.org.patch @@ -0,0 +1,168 @@ +From a5c09be2d509aeba1efb986f8996d4847883cc5a Mon Sep 17 00:00:00 2001 +From: pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 26 May 2011 20:49:07 +0000 +Subject: [PATCH] 2011-05-26 Paul Thomas <pault@gcc.gnu.org> + Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/48955 + * trans-expr.c (gfc_trans_assignment_1): GFC_REVERSE_NOT_SET + changed to GFC_ENABLE_REVERSE. + * trans-array.c (gfc_init_loopinfo): GFC_CANNOT_REVERSE changed + to GFC_INHIBIT_REVERSE. + * gfortran.h : Enum gfc_reverse is now GFC_ENABLE_REVERSE, + GFC_FORWARD_SET, GFC_REVERSE_SET and GFC_INHIBIT_REVERSE. + * dependency.c (gfc_dep_resolver): Change names for elements of + gfc_reverse as necessary. Change the logic so that forward + dependences are remembered as well as backward ones. When both + have appeared, force a temporary. + +2011-05-26 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/48955 + * gfortran.dg/dependency_40.f90 : New test. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174308 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 77e8df7..58cfb65 100644 +--- a/gcc/fortran/dependency.c ++++ b/gcc/fortran/dependency.c +@@ -1793,7 +1793,7 @@ gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref, gfc_reverse *reverse) + + /* Now deal with the loop reversal logic: This only works on + ranges and is activated by setting +- reverse[n] == GFC_CAN_REVERSE ++ reverse[n] == GFC_ENABLE_REVERSE + The ability to reverse or not is set by previous conditions + in this dimension. If reversal is not activated, the + value GFC_DEP_BACKWARD is reset to GFC_DEP_OVERLAP. */ +@@ -1801,25 +1801,34 @@ gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref, gfc_reverse *reverse) + && lref->u.ar.dimen_type[n] == DIMEN_RANGE) + { + /* Set reverse if backward dependence and not inhibited. */ +- if (reverse && reverse[n] != GFC_CANNOT_REVERSE) ++ if (reverse && reverse[n] == GFC_ENABLE_REVERSE) + reverse[n] = (this_dep == GFC_DEP_BACKWARD) ? + GFC_REVERSE_SET : reverse[n]; + +- /* Inhibit loop reversal if dependence not compatible. */ +- if (reverse && reverse[n] != GFC_REVERSE_NOT_SET +- && this_dep != GFC_DEP_EQUAL +- && this_dep != GFC_DEP_BACKWARD +- && this_dep != GFC_DEP_NODEP) ++ /* Set forward if forward dependence and not inhibited. */ ++ if (reverse && reverse[n] == GFC_ENABLE_REVERSE) ++ reverse[n] = (this_dep == GFC_DEP_FORWARD) ? ++ GFC_FORWARD_SET : reverse[n]; ++ ++ /* Flag up overlap if dependence not compatible with ++ the overall state of the expression. */ ++ if (reverse && reverse[n] == GFC_REVERSE_SET ++ && this_dep == GFC_DEP_FORWARD) ++ { ++ reverse[n] = GFC_INHIBIT_REVERSE; ++ this_dep = GFC_DEP_OVERLAP; ++ } ++ else if (reverse && reverse[n] == GFC_FORWARD_SET ++ && this_dep == GFC_DEP_BACKWARD) + { +- reverse[n] = GFC_CANNOT_REVERSE; +- if (this_dep != GFC_DEP_FORWARD) +- this_dep = GFC_DEP_OVERLAP; ++ reverse[n] = GFC_INHIBIT_REVERSE; ++ this_dep = GFC_DEP_OVERLAP; + } + + /* If no intention of reversing or reversing is explicitly + inhibited, convert backward dependence to overlap. */ +- if (this_dep == GFC_DEP_BACKWARD +- && (reverse == NULL || reverse[n] == GFC_CANNOT_REVERSE)) ++ if ((reverse == NULL && this_dep == GFC_DEP_BACKWARD) ++ || (reverse != NULL && reverse[n] == GFC_INHIBIT_REVERSE)) + this_dep = GFC_DEP_OVERLAP; + } + +diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h +index 165bd2f..f20a29b 100644 +--- a/gcc/fortran/gfortran.h ++++ b/gcc/fortran/gfortran.h +@@ -578,10 +578,10 @@ gfc_fcoarray; + + typedef enum + { +- GFC_REVERSE_NOT_SET, ++ GFC_ENABLE_REVERSE, ++ GFC_FORWARD_SET, + GFC_REVERSE_SET, +- GFC_CAN_REVERSE, +- GFC_CANNOT_REVERSE ++ GFC_INHIBIT_REVERSE + } + gfc_reverse; + +diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c +index 3d4a52a..b64e10d 100644 +--- a/gcc/fortran/trans-array.c ++++ b/gcc/fortran/trans-array.c +@@ -2223,7 +2223,7 @@ gfc_init_loopinfo (gfc_loopinfo * loop) + for (n = 0; n < GFC_MAX_DIMENSIONS; n++) + { + loop->order[n] = n; +- loop->reverse[n] = GFC_CANNOT_REVERSE; ++ loop->reverse[n] = GFC_INHIBIT_REVERSE; + } + + loop->ss = gfc_ss_terminator; +diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c +index 1d678e6..ade7e54 100644 +--- a/gcc/fortran/trans-expr.c ++++ b/gcc/fortran/trans-expr.c +@@ -6067,8 +6067,8 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag, + /* Calculate the bounds of the scalarization. */ + gfc_conv_ss_startstride (&loop); + /* Enable loop reversal. */ +- for (n = 0; n < loop.dimen; n++) +- loop.reverse[n] = GFC_REVERSE_NOT_SET; ++ for (n = 0; n < GFC_MAX_DIMENSIONS; n++) ++ loop.reverse[n] = GFC_ENABLE_REVERSE; + /* Resolve any data dependencies in the statement. */ + gfc_conv_resolve_dependencies (&loop, lss, rss); + /* Setup the scalarizing loops. */ +new file mode 100644 +index 0000000..b7bd4f9 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/dependency_40.f90 +@@ -0,0 +1,29 @@ ++! { dg-do run } ++! PR 48955 - missing array temporary when there was both a forward ++! and a backward dependency. ++! Test case slightly modified from the original one by Kacper Kowalik. ++program ala ++ implicit none ++ ++ integer, parameter :: n = 6 ++ real, dimension(n), parameter :: result = [1.,10.,30.,90.,270., 243.]; ++ real, dimension(n) :: v0, v1 ++ character(len=80) :: line1, line2 ++ ++ v0 = [1.0, 3.0, 9.0, 27.0, 81.0, 243.0] ++ v1 = v0 ++ ++ v1(2:n-1) = v1(1:n-2) + v1(3:n) ++ if (any(v1 /= result)) call abort ++ v1 = v0 ++ v1(2:n-1) = v0(1:n-2) + v0(3:n) ++ if (any(v1 /= result)) call abort ++ ++ v1 = v0 ++ v1(2:n-1) = v1(3:n) + v1(1:n-2) ++ if (any(v1 /= result)) call abort ++ v1 = v0 ++ v1(2:n-1) = v0(3:n) + v0(1:n-2) ++ if (any(v1 /= result)) call abort ++ ++end program ala +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0357-PR-c-48657.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0357-PR-c-48657.patch new file mode 100644 index 000000000..49a0763db --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0357-PR-c-48657.patch @@ -0,0 +1,149 @@ +From 04ed2c7147286ab11c8ba25e486e3f726c4970d4 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 27 May 2011 18:10:48 +0000 +Subject: [PATCH] PR c++/48657 + PR c++/49176 + * decl.c (cp_finish_decl): Simplify template handling. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174346 138bc75d-0d04-0410-961f-82ee72b054a4 + +index dac87dd..8395b2b 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -5760,7 +5760,6 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, + const char *asmspec = NULL; + int was_readonly = 0; + bool var_definition_p = false; +- int saved_processing_template_decl; + tree auto_node; + + if (decl == error_mark_node) +@@ -5782,7 +5781,6 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, + + /* Assume no cleanup is required. */ + cleanup = NULL_TREE; +- saved_processing_template_decl = processing_template_decl; + + /* If a name was specified, get the string. */ + if (global_scope_p (current_binding_level)) +@@ -5882,45 +5880,24 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, + template is instantiated. But, if DECL is a variable constant + then it can be used in future constant expressions, so its value + must be available. */ +- if (!(init +- && init_const_expr_p +- && !type_dependent_p +- && decl_maybe_constant_var_p (decl) +- && !value_dependent_init_p (init))) +- { +- if (init) +- DECL_INITIAL (decl) = init; +- if (TREE_CODE (decl) == VAR_DECL +- && !DECL_PRETTY_FUNCTION_P (decl) +- && !type_dependent_p) +- maybe_deduce_size_from_array_init (decl, init); +- goto finish_end; +- } +- +- if (!DECL_CLASS_SCOPE_P (decl)) ++ if (init ++ && init_const_expr_p ++ && !type_dependent_p ++ && decl_maybe_constant_var_p (decl) ++ && !value_dependent_init_p (init)) + { + tree init_code = check_initializer (decl, init, flags, &cleanup); +- if (init_code) +- DECL_INITIAL (decl) = init; +- goto finish_end; ++ if (init_code == NULL_TREE) ++ init = NULL_TREE; + } ++ else if (TREE_CODE (decl) == VAR_DECL ++ && !DECL_PRETTY_FUNCTION_P (decl) ++ && !type_dependent_p) ++ maybe_deduce_size_from_array_init (decl, init); + +- if (TREE_CODE (init) == TREE_LIST) +- { +- /* If the parenthesized-initializer form was used (e.g., +- "int A<N>::i(X)"), then INIT will be a TREE_LIST of initializer +- arguments. (There is generally only one.) We convert them +- individually. */ +- tree list = init; +- for (; list; list = TREE_CHAIN (list)) +- { +- tree elt = TREE_VALUE (list); +- TREE_VALUE (list) = fold_non_dependent_expr (elt); +- } +- } +- else +- init = fold_non_dependent_expr (init); +- processing_template_decl = 0; ++ if (init) ++ DECL_INITIAL (decl) = init; ++ return; + } + + /* Take care of TYPE_DECLs up front. */ +@@ -5943,7 +5920,7 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, + + rest_of_decl_compilation (decl, DECL_FILE_SCOPE_P (decl), + at_eof); +- goto finish_end; ++ return; + } + + /* A reference will be modified here, as it is initialized. */ +@@ -6067,8 +6044,7 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, + else if (TREE_CODE (type) == ARRAY_TYPE) + layout_type (type); + +- if (!processing_template_decl +- && TREE_STATIC (decl) ++ if (TREE_STATIC (decl) + && !at_function_scope_p () + && current_function_decl == NULL) + /* So decl is a global variable or a static member of a +@@ -6088,9 +6064,8 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, + + /* Let the middle end know about variables and functions -- but not + static data members in uninstantiated class templates. */ +- if (!saved_processing_template_decl +- && (TREE_CODE (decl) == VAR_DECL +- || TREE_CODE (decl) == FUNCTION_DECL)) ++ if (TREE_CODE (decl) == VAR_DECL ++ || TREE_CODE (decl) == FUNCTION_DECL) + { + if (TREE_CODE (decl) == VAR_DECL) + { +@@ -6177,9 +6152,6 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, + if (cleanup) + push_cleanup (decl, cleanup, false); + +- finish_end: +- processing_template_decl = saved_processing_template_decl; +- + if (was_readonly) + TREE_READONLY (decl) = 1; + } +new file mode 100644 +index 0000000..5d3ec5b +--- /dev/null ++++ b/gcc/testsuite/g++.dg/template/const5.C +@@ -0,0 +1,12 @@ ++// PR c++/49176 ++// { dg-options -std=c++0x } ++ ++struct A { static int a(); }; ++ ++template<int> ++struct B { static int const b; }; ++ ++int f() { return B<0>::b; } ++ ++template<int I> ++int const B<I>::b=A::a(); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0358-PR-c-49165.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0358-PR-c-49165.patch new file mode 100644 index 000000000..cbe05a533 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0358-PR-c-49165.patch @@ -0,0 +1,89 @@ +From 0a0395125e1f619c73c0d0c754c630cd92cc4aa7 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 27 May 2011 19:23:46 +0000 +Subject: [PATCH] PR c++/49165 + * c-common.c (c_common_truthvalue_conversion) <case COND_EXPR>: For + C++ don't call c_common_truthvalue_conversion on void type arms. + + * g++.dg/eh/cond6.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174351 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 0be3996..ea5a196 100644 +--- a/gcc/c-family/c-common.c ++++ b/gcc/c-family/c-common.c +@@ -3915,14 +3915,15 @@ c_common_truthvalue_conversion (location_t location, tree expr) + /* Distribute the conversion into the arms of a COND_EXPR. */ + if (c_dialect_cxx ()) + { ++ tree op1 = TREE_OPERAND (expr, 1); ++ tree op2 = TREE_OPERAND (expr, 2); ++ /* In C++ one of the arms might have void type if it is throw. */ ++ if (!VOID_TYPE_P (TREE_TYPE (op1))) ++ op1 = c_common_truthvalue_conversion (location, op1); ++ if (!VOID_TYPE_P (TREE_TYPE (op2))) ++ op2 = c_common_truthvalue_conversion (location, op2); + expr = fold_build3_loc (location, COND_EXPR, truthvalue_type_node, +- TREE_OPERAND (expr, 0), +- c_common_truthvalue_conversion (location, +- TREE_OPERAND (expr, +- 1)), +- c_common_truthvalue_conversion (location, +- TREE_OPERAND (expr, +- 2))); ++ TREE_OPERAND (expr, 0), op1, op2); + goto ret; + } + else +new file mode 100644 +index 0000000..1eed63e +--- /dev/null ++++ b/gcc/testsuite/g++.dg/eh/cond6.C +@@ -0,0 +1,43 @@ ++// PR c++/49165 ++// { dg-do run } ++ ++extern "C" void abort (); ++ ++int ++foo (bool x, int y) ++{ ++ if (y < 10 && (x ? 1 : throw 1)) ++ y++; ++ if (y > 20 || (x ? 1 : throw 2)) ++ y++; ++ return y; ++} ++ ++int ++main () ++{ ++ if (foo (true, 0) != 2 ++ || foo (true, 10) != 11 ++ || foo (false, 30) != 31) ++ abort (); ++ try ++ { ++ foo (false, 0); ++ abort (); ++ } ++ catch (int i) ++ { ++ if (i != 1) ++ abort (); ++ } ++ try ++ { ++ foo (false, 10); ++ abort (); ++ } ++ catch (int i) ++ { ++ if (i != 2) ++ abort (); ++ } ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0359-PR-c-48284.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0359-PR-c-48284.patch new file mode 100644 index 000000000..2fd1843d5 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0359-PR-c-48284.patch @@ -0,0 +1,40 @@ +From a726d4116cb23c1f9873f3309c1c078d2113726d Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 27 May 2011 20:48:17 +0000 +Subject: [PATCH] PR c++/48284 + * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot + with INDIRECT_REF of REFERENCE_TYPE. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174362 138bc75d-0d04-0410-961f-82ee72b054a4 + +index dffc764..931e24d 100644 +--- a/gcc/cp/error.c ++++ b/gcc/cp/error.c +@@ -1879,7 +1879,10 @@ dump_expr (tree t, int flags) + && strcmp (IDENTIFIER_POINTER (DECL_NAME (ob)), "this"))) + { + dump_expr (ob, flags | TFF_EXPR_IN_PARENS); +- pp_cxx_arrow (cxx_pp); ++ if (TREE_CODE (TREE_TYPE (ob)) == REFERENCE_TYPE) ++ pp_cxx_dot (cxx_pp); ++ else ++ pp_cxx_arrow (cxx_pp); + } + } + else +new file mode 100644 +index 0000000..3515652 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/error6.C +@@ -0,0 +1,8 @@ ++// PR c++/48284 ++// { dg-options -std=c++0x } ++ ++template<typename C> ++auto g(C& c) -> decltype (c.f()) { return c.f(); } // { dg-error "decltype .c\\.f" } ++ ++template<typename C> ++auto g(C& c) -> decltype (c.f()) { return c.f(); } // { dg-error "decltype .c\\.f" } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0360-PR-c-47277.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0360-PR-c-47277.patch new file mode 100644 index 000000000..0881d8355 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0360-PR-c-47277.patch @@ -0,0 +1,38 @@ +From 631b8035922a95739c34b650b88a139a8f16474a Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 27 May 2011 20:48:24 +0000 +Subject: [PATCH] PR c++/47277 + * parser.c (cp_parser_unqualified_id): Don't check + constructor_name_p for enums. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174363 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 4d6ddcc..bc2b5bd 100644 +--- a/gcc/cp/parser.c ++++ b/gcc/cp/parser.c +@@ -4320,7 +4320,8 @@ cp_parser_unqualified_id (cp_parser* parser, + && (cp_lexer_peek_nth_token (parser->lexer, 2)->type + != CPP_LESS) + && (token->u.value == TYPE_IDENTIFIER (scope) +- || constructor_name_p (token->u.value, scope))) ++ || (CLASS_TYPE_P (scope) ++ && constructor_name_p (token->u.value, scope)))) + { + cp_lexer_consume_token (parser->lexer); + return build_nt (BIT_NOT_EXPR, scope); +new file mode 100644 +index 0000000..5575ca6 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/enum18.C +@@ -0,0 +1,8 @@ ++// PR c++/47277 ++// { dg-options -std=c++0x } ++ ++int main(void) { ++ enum e {}; ++ e ev; ++ ev.e::~e_u(); // { dg-error "" } ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0362-PR-c-47049.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0362-PR-c-47049.patch new file mode 100644 index 000000000..83e52a6cb --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0362-PR-c-47049.patch @@ -0,0 +1,62 @@ +From 6d713af63560a2a98ee2e13d52eb339b57387bc7 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 28 May 2011 03:22:31 +0000 +Subject: [PATCH] PR c++/47049 + * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing. + * decl.c (start_preparsed_function): Don't call comdat_linkage for + a template. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174377 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 8395b2b..7e20009 100644 +--- a/gcc/cp/decl.c ++++ b/gcc/cp/decl.c +@@ -12425,6 +12425,7 @@ start_preparsed_function (tree decl1, tree attrs, int flags) + DECL_EXTERNAL (decl1) = 0; + + if (ctx != NULL_TREE && DECL_DECLARED_INLINE_P (ctx) ++ && !processing_template_decl + && TREE_PUBLIC (ctx)) + /* This is a function in a local class in an extern inline + function. */ +diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c +index b113626..cfd6cf0 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -8518,7 +8518,7 @@ maybe_add_lambda_conv_op (tree type) + { + /* Put the thunk in the same comdat group as the call op. */ + struct cgraph_node *callop_node, *thunk_node; +- DECL_COMDAT_GROUP (statfn) = DECL_COMDAT_GROUP (callop); ++ DECL_COMDAT_GROUP (statfn) = cxx_comdat_group (callop); + callop_node = cgraph_node (callop); + thunk_node = cgraph_node (statfn); + gcc_assert (callop_node->same_comdat_group == NULL); +new file mode 100644 +index 0000000..12ffde7 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template2.C +@@ -0,0 +1,20 @@ ++// PR c++/47049 ++// { dg-options -std=c++0x } ++ ++enum { E = 0, F = 1 }; ++template <int N, int M = ((N == 1) ? F : E)> class S {}; ++template <int N> ++struct T ++{ ++ static void ++ foo (S<N> *p) ++ { ++ S<N> u; ++ [&u] ()->bool {} (); ++ } ++}; ++ ++int main() ++{ ++ T<0>().foo(0); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0364-2011-05-29-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0364-2011-05-29-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..251260acc --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0364-2011-05-29-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,68 @@ +From d5ea0b26fccb8359f0edce472053beca74f50f93 Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 29 May 2011 17:00:13 +0000 +Subject: [PATCH] 2011-05-29 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/49217 + * ipa-pure-const.c (propagate_pure_const): Fix typos. + + * gcc.dg/torture/pr49217.c: New testcase. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174399 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 3b4cc02..b9476e6 100644 +--- a/gcc/ipa-pure-const.c ++++ b/gcc/ipa-pure-const.c +@@ -1223,7 +1223,7 @@ propagate_pure_const (void) + break; + + /* Now process the indirect call. */ +- for (ie = node->indirect_calls; ie; ie = ie->next_callee) ++ for (ie = w->indirect_calls; ie; ie = ie->next_callee) + { + enum pure_const_state_e edge_state = IPA_CONST; + bool edge_looping = false; +@@ -1246,7 +1246,7 @@ propagate_pure_const (void) + break; + + /* And finally all loads and stores. */ +- for (i = 0; ipa_ref_list_reference_iterate (&node->ref_list, i, ref); i++) ++ for (i = 0; ipa_ref_list_reference_iterate (&w->ref_list, i, ref); i++) + { + enum pure_const_state_e ref_state = IPA_CONST; + bool ref_looping = false; +new file mode 100644 +index 0000000..e8a89de +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/torture/pr49217.c +@@ -0,0 +1,26 @@ ++/* { dg-do run } */ ++/* { dg-options "-fno-early-inlining" } */ ++ ++extern void abort (void); ++int i; ++static void foo(void); ++void __attribute__((noinline)) ++bar (void) ++{ ++ if (!i) ++ foo (); ++} ++static void ++foo(void) ++{ ++ i = 1; ++ bar (); ++} ++int main() ++{ ++ i = 0; ++ bar(); ++ if (i != 1) ++ abort (); ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0365-gcc.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0365-gcc.patch new file mode 100644 index 000000000..378076392 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0365-gcc.patch @@ -0,0 +1,125 @@ +From 158892fce220b03d3fe3d8d7656e1b0786609283 Mon Sep 17 00:00:00 2001 +From: rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 29 May 2011 17:47:51 +0000 +Subject: [PATCH] gcc/ + PR target/43995 + * config/mips/mips.c (mips_pic_call_symbol_from_set): Add a + recurse_p argument. Only follow register copies if it is set, + and prevent mips_find_pic_call_symbol from recursing. + (mips_find_pic_call_symbol): Add a recurse_p argument. + Pass it to mips_pic_call_symbol_from_set. + (mips_annotate_pic_calls): Update accordingly. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174404 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 9de479b..027fc2d 100644 +--- a/gcc/config/mips/mips.c ++++ b/gcc/config/mips/mips.c +@@ -1186,7 +1186,7 @@ static const struct mips_rtx_cost_data + } + }; + +-static rtx mips_find_pic_call_symbol (rtx, rtx); ++static rtx mips_find_pic_call_symbol (rtx, rtx, bool); + static int mips_register_move_cost (enum machine_mode, reg_class_t, + reg_class_t); + static unsigned int mips_function_arg_boundary (enum machine_mode, const_tree); +@@ -14160,12 +14160,16 @@ mips_call_expr_from_insn (rtx insn, rtx *second_call) + } + + /* REG is set in DEF. See if the definition is one of the ways we load a +- register with a symbol address for a mips_use_pic_fn_addr_reg_p call. If +- it is return the symbol reference of the function, otherwise return +- NULL_RTX. */ ++ register with a symbol address for a mips_use_pic_fn_addr_reg_p call. ++ If it is, return the symbol reference of the function, otherwise return ++ NULL_RTX. ++ ++ If RECURSE_P is true, use mips_find_pic_call_symbol to interpret ++ the values of source registers, otherwise treat such registers as ++ having an unknown value. */ + + static rtx +-mips_pic_call_symbol_from_set (df_ref def, rtx reg) ++mips_pic_call_symbol_from_set (df_ref def, rtx reg, bool recurse_p) + { + rtx def_insn, set; + +@@ -14192,21 +14196,39 @@ mips_pic_call_symbol_from_set (df_ref def, rtx reg) + return symbol; + } + +- /* Follow simple register copies. */ +- if (REG_P (src)) +- return mips_find_pic_call_symbol (def_insn, src); ++ /* Follow at most one simple register copy. Such copies are ++ interesting in cases like: ++ ++ for (...) ++ { ++ locally_binding_fn (...); ++ } ++ ++ and: ++ ++ locally_binding_fn (...); ++ ... ++ locally_binding_fn (...); ++ ++ where the load of locally_binding_fn can legitimately be ++ hoisted or shared. However, we do not expect to see complex ++ chains of copies, so a full worklist solution to the problem ++ would probably be overkill. */ ++ if (recurse_p && REG_P (src)) ++ return mips_find_pic_call_symbol (def_insn, src, false); + } + + return NULL_RTX; + } + +-/* Find the definition of the use of REG in INSN. See if the definition is +- one of the ways we load a register with a symbol address for a +- mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference of +- the function, otherwise return NULL_RTX. */ ++/* Find the definition of the use of REG in INSN. See if the definition ++ is one of the ways we load a register with a symbol address for a ++ mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference ++ of the function, otherwise return NULL_RTX. RECURSE_P is as for ++ mips_pic_call_symbol_from_set. */ + + static rtx +-mips_find_pic_call_symbol (rtx insn, rtx reg) ++mips_find_pic_call_symbol (rtx insn, rtx reg, bool recurse_p) + { + df_ref use; + struct df_link *defs; +@@ -14218,7 +14240,7 @@ mips_find_pic_call_symbol (rtx insn, rtx reg) + defs = DF_REF_CHAIN (use); + if (!defs) + return NULL_RTX; +- symbol = mips_pic_call_symbol_from_set (defs->ref, reg); ++ symbol = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p); + if (!symbol) + return NULL_RTX; + +@@ -14227,7 +14249,7 @@ mips_find_pic_call_symbol (rtx insn, rtx reg) + { + rtx other; + +- other = mips_pic_call_symbol_from_set (defs->ref, reg); ++ other = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p); + if (!rtx_equal_p (symbol, other)) + return NULL_RTX; + } +@@ -14298,7 +14320,7 @@ mips_annotate_pic_calls (void) + if (!REG_P (reg)) + continue; + +- symbol = mips_find_pic_call_symbol (insn, reg); ++ symbol = mips_find_pic_call_symbol (insn, reg, true); + if (symbol) + { + mips_annotate_pic_call_expr (call, symbol); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0366-gcc.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0366-gcc.patch new file mode 100644 index 000000000..5b3f4bd89 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0366-gcc.patch @@ -0,0 +1,52 @@ +From c3806c1e1e0c9895d17d729a96179f71f124857e Mon Sep 17 00:00:00 2001 +From: rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 29 May 2011 17:48:14 +0000 +Subject: [PATCH] gcc/ + * config/mips/mips.c (mips_cfun_call_saved_reg_p): Handle global + registers. + +gcc/testsuite/ + * gcc.target/mips/reg-var-1.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174405 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 027fc2d..8069a0b 100644 +--- a/gcc/config/mips/mips.c ++++ b/gcc/config/mips/mips.c +@@ -9053,6 +9053,11 @@ mips_interrupt_extra_call_saved_reg_p (unsigned int regno) + static bool + mips_cfun_call_saved_reg_p (unsigned int regno) + { ++ /* If the user makes an ordinarily-call-saved register global, ++ that register is no longer call-saved. */ ++ if (global_regs[regno]) ++ return false; ++ + /* Interrupt handlers need to save extra registers. */ + if (cfun->machine->interrupt_handler_p + && mips_interrupt_extra_call_saved_reg_p (regno)) +new file mode 100644 +index 0000000..d8b8118 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/mips/reg-var-1.c +@@ -0,0 +1,16 @@ ++/* { dg-do run } */ ++register int g asm ("$18"); ++ ++void __attribute__((noinline)) ++test (void) ++{ ++ g = g + 1; ++} ++ ++int ++main (void) ++{ ++ g = 2; ++ test (); ++ return g != 3; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0367-Add-PR-target-43700-to-last-changelog-entry.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0367-Add-PR-target-43700-to-last-changelog-entry.patch new file mode 100644 index 000000000..420710a34 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0367-Add-PR-target-43700-to-last-changelog-entry.patch @@ -0,0 +1,7 @@ +From e844fd1afbcb37f828f48c5aa80941f1c5349957 Mon Sep 17 00:00:00 2001 +From: rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 29 May 2011 17:50:18 +0000 +Subject: [PATCH] Add PR target/43700 to last changelog entry. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174406 138bc75d-0d04-0410-961f-82ee72b054a4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0369-PR-target-45263.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0369-PR-target-45263.patch new file mode 100644 index 000000000..6a0d1602b --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0369-PR-target-45263.patch @@ -0,0 +1,71 @@ +From 361940153255ddf5f62977479589c074b7e8f93a Mon Sep 17 00:00:00 2001 +From: gjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 30 May 2011 08:53:12 +0000 +Subject: [PATCH] PR target/45263 + * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): + Don't use r20 around calls of __tablejump_elpm__ + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174427 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 4a15f94..2e8d951 100644 +--- a/gcc/config/avr/libgcc.S ++++ b/gcc/config/avr/libgcc.S +@@ -791,22 +791,22 @@ __do_clear_bss: + #if defined(__AVR_HAVE_RAMPZ__) + __do_global_ctors: + ldi r17, hi8(__ctors_start) +- ldi r16, hh8(__ctors_start) + ldi r28, lo8(__ctors_end) + ldi r29, hi8(__ctors_end) +- ldi r20, hh8(__ctors_end) ++ ldi r16, hh8(__ctors_end) + rjmp .L__do_global_ctors_start + .L__do_global_ctors_loop: + sbiw r28, 2 +- sbc r20, __zero_reg__ ++ sbc r16, __zero_reg__ + mov_h r31, r29 + mov_l r30, r28 +- out __RAMPZ__, r20 ++ out __RAMPZ__, r16 + XCALL __tablejump_elpm__ + .L__do_global_ctors_start: + cpi r28, lo8(__ctors_start) + cpc r29, r17 +- cpc r20, r16 ++ ldi r24, hh8(__ctors_start) ++ cpc r16, r24 + brne .L__do_global_ctors_loop + #else + __do_global_ctors: +@@ -832,22 +832,22 @@ __do_global_ctors: + #if defined(__AVR_HAVE_RAMPZ__) + __do_global_dtors: + ldi r17, hi8(__dtors_end) +- ldi r16, hh8(__dtors_end) + ldi r28, lo8(__dtors_start) + ldi r29, hi8(__dtors_start) +- ldi r20, hh8(__dtors_start) ++ ldi r16, hh8(__dtors_start) + rjmp .L__do_global_dtors_start + .L__do_global_dtors_loop: + sbiw r28, 2 +- sbc r20, __zero_reg__ ++ sbc r16, __zero_reg__ + mov_h r31, r29 + mov_l r30, r28 +- out __RAMPZ__, r20 ++ out __RAMPZ__, r16 + XCALL __tablejump_elpm__ + .L__do_global_dtors_start: + cpi r28, lo8(__dtors_end) + cpc r29, r17 +- cpc r20, r16 ++ ldi r24, hh8(__dtors_end) ++ cpc r16, r24 + brne .L__do_global_dtors_loop + #else + __do_global_dtors: +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0370-2011-05-30-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0370-2011-05-30-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..e42ce20c8 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0370-2011-05-30-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,69 @@ +From e6b2e8c99b9295953acd13658d44591561252337 Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 30 May 2011 11:17:35 +0000 +Subject: [PATCH] 2011-05-30 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/49218 + * tree-vrp.c (adjust_range_with_scev): Properly check whether + overflow occured. + + * gcc.c-torture/execute/pr49218.c: New testcase. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174430 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 2f50595..be083fc 100644 +new file mode 100644 +index 0000000..2fb18dd +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/execute/pr49218.c +@@ -0,0 +1,20 @@ ++#ifdef __SIZEOF_INT128__ ++typedef __int128 L; ++#else ++typedef long long L; ++#endif ++float f; ++ ++int ++main () ++{ ++ L i = f; ++ if (i <= 10) ++ do ++ { ++ ++i; ++ asm (""); ++ } ++ while (i != 11); ++ return 0; ++} +diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c +index 6914a08..299a948 100644 +--- a/gcc/tree-vrp.c ++++ b/gcc/tree-vrp.c +@@ -3422,11 +3422,17 @@ adjust_range_with_scev (value_range_t *vr, struct loop *loop, + loop->nb_iterations_upper_bound, + double_int_one), + unsigned_p, &overflow); +- tem = double_int_to_tree (TREE_TYPE (init), dtmp); + /* If the multiplication overflowed we can't do a meaningful +- adjustment. */ +- if (!overflow && double_int_equal_p (dtmp, tree_to_double_int (tem))) +- { ++ adjustment. Likewise if the result doesn't fit in the type ++ of the induction variable. For a signed type we have to ++ check whether the result has the expected signedness which ++ is that of the step as nb_iterations_upper_bound is unsigned. */ ++ if (!overflow ++ && double_int_fits_to_tree_p (TREE_TYPE (init), dtmp) ++ && (unsigned_p ++ || ((dtmp.high ^ TREE_INT_CST_HIGH (step)) >= 0))) ++ { ++ tem = double_int_to_tree (TREE_TYPE (init), dtmp); + extract_range_from_binary_expr (&maxvr, PLUS_EXPR, + TREE_TYPE (init), init, tem); + /* Likewise if the addition did. */ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0371-PR-c-49223.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0371-PR-c-49223.patch new file mode 100644 index 000000000..45e2320b7 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0371-PR-c-49223.patch @@ -0,0 +1,99 @@ +From 2be264baf4367b63b7cb88bf3d7cb5c687d91c28 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 30 May 2011 12:18:59 +0000 +Subject: [PATCH] PR c++/49223 + * semantics.c (finish_omp_clauses): Call require_complete_type + even for copyin/copyprivate clauses. Only call + cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P. + + * g++.dg/gomp/pr49223-1.C: New test. + * g++.dg/gomp/pr49223-2.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174433 138bc75d-0d04-0410-961f-82ee72b054a4 + +index cfd6cf0..d56423e 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -3945,12 +3945,13 @@ finish_omp_clauses (tree clauses) + break; + } + +- if (need_complete_non_reference) ++ if (need_complete_non_reference || need_copy_assignment) + { + t = require_complete_type (t); + if (t == error_mark_node) + remove = true; +- else if (TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE) ++ else if (TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE ++ && need_complete_non_reference) + { + error ("%qE has reference type for %qs", t, name); + remove = true; +@@ -3992,6 +3993,7 @@ finish_omp_clauses (tree clauses) + Save the results, because later we won't be in the right context + for making these queries. */ + if (CLASS_TYPE_P (inner_type) ++ && COMPLETE_TYPE_P (inner_type) + && (need_default_ctor || need_copy_ctor || need_copy_assignment) + && !type_dependent_expression_p (t) + && cxx_omp_create_clause_info (c, inner_type, need_default_ctor, +new file mode 100644 +index 0000000..307210f +--- /dev/null ++++ b/gcc/testsuite/g++.dg/gomp/pr49223-1.C +@@ -0,0 +1,28 @@ ++// PR c++/49223 ++// { dg-do compile } ++// { dg-options "-fopenmp" } ++ ++template <int N> ++struct V ++{ ++ V () {} ++ ~V () {} ++}; ++ ++template <int N> ++struct S ++{ ++ void foo () ++ { ++ V <0> v; ++ #pragma omp parallel private (v) ++ ; ++ } ++}; ++ ++void ++bar (void) ++{ ++ S <0> s; ++ s.foo (); ++} +diff --git a/gcc/testsuite/g++.dg/gomp/pr49223-2.C b/gcc/testsuite/g++.dg/gomp/pr49223-2.C +new file mode 100644 +index 0000000..9539773 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/gomp/pr49223-2.C +@@ -0,0 +1,16 @@ ++// PR c++/49223 ++// { dg-do compile } ++// { dg-require-effective-target tls } ++// { dg-options "-fopenmp" } ++ ++struct S; // { dg-error "forward declaration" } ++extern __thread struct S s; // { dg-error "has incomplete type" } ++struct T; ++extern __thread struct T t; ++ ++void ++foo () ++{ ++ #pragma omp parallel copyin (s) ++ ; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0373-2011-05-31-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0373-2011-05-31-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..fc512f736 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0373-2011-05-31-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,72 @@ +From d255e20552a56f1aa9b75a0ca45de257e935cd58 Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 31 May 2011 12:23:55 +0000 +Subject: [PATCH] 2011-05-31 Richard Guenther <rguenther@suse.de> + + Backport from mainline + 2011-05-11 Richard Guenther <rguenther@suse.de> + + PR middle-end/48953 + * tree-inline.c (remap_gimple_op_r): Also remap types of MEM_REFs. + + * gcc.dg/torture/pr48953.c: New testcase. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174475 138bc75d-0d04-0410-961f-82ee72b054a4 + +index b4b333f..d5ea116 100644 +new file mode 100644 +index 0000000..41a3d7b +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/torture/pr48953.c +@@ -0,0 +1,17 @@ ++/* { dg-do run } */ ++/* { dg-options "-fno-tree-dce" } */ ++ ++static inline int foo (int n, int k) ++{ ++ struct S ++ { ++ int i[n]; ++ int value; ++ } s[2]; ++ return s[k].value = 0; ++} ++ ++int main () ++{ ++ return foo (2, 0); ++} +diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c +index f2255f8..ef3f1a3 100644 +--- a/gcc/tree-inline.c ++++ b/gcc/tree-inline.c +@@ -816,6 +816,7 @@ remap_gimple_op_r (tree *tp, int *walk_subtrees, void *data) + if (TREE_CODE (*tp) == MEM_REF) + { + tree ptr = TREE_OPERAND (*tp, 0); ++ tree type = remap_type (TREE_TYPE (*tp), id); + tree old = *tp; + tree tem; + +@@ -826,7 +827,7 @@ remap_gimple_op_r (tree *tp, int *walk_subtrees, void *data) + if ((tem = maybe_fold_offset_to_reference (EXPR_LOCATION (*tp), + ptr, + TREE_OPERAND (*tp, 1), +- TREE_TYPE (*tp))) ++ type)) + && TREE_THIS_VOLATILE (tem) == TREE_THIS_VOLATILE (old)) + { + tree *tem_basep = &tem; +@@ -848,7 +849,7 @@ remap_gimple_op_r (tree *tp, int *walk_subtrees, void *data) + } + else + { +- *tp = fold_build2 (MEM_REF, TREE_TYPE (*tp), ++ *tp = fold_build2 (MEM_REF, type, + ptr, TREE_OPERAND (*tp, 1)); + TREE_THIS_VOLATILE (*tp) = TREE_THIS_VOLATILE (old); + TREE_THIS_NOTRAP (*tp) = TREE_THIS_NOTRAP (old); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0374-2011-05-31-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0374-2011-05-31-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..6c90f4bb8 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0374-2011-05-31-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,64 @@ +From 0fdd5e79651b8a9446b6653c66beaee26b67a80a Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 31 May 2011 12:25:52 +0000 +Subject: [PATCH] 2011-05-31 Richard Guenther <rguenther@suse.de> + + Backport from mainline + 2011-05-19 Richard Guenther <rguenther@suse.de> + + PR middle-end/48985 + * tree-object-size.c (addr_object_size): If the pointed-to + variable is a decl use DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT. + + * gcc.dg/builtin-object-size-11.c: New testcase. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174476 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d5ea116..ae5689b 100644 +new file mode 100644 +index 0000000..a98bc35 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/builtin-object-size-11.c +@@ -0,0 +1,21 @@ ++/* PR48985 */ ++/* { dg-do run } */ ++/* { dg-options "-std=gnu89" } */ ++ ++extern void abort (void); ++ ++struct s { ++ int i; ++ char c[]; ++} s = { 1, "01234" }; ++ ++__SIZE_TYPE__ f (void) { return __builtin_object_size (&s.c, 0); } ++ ++int ++main() ++{ ++ if (f() != sizeof ("01234")) ++ abort (); ++ ++ return 0; ++} +diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c +index 043b445..41118d2 100644 +--- a/gcc/tree-object-size.c ++++ b/gcc/tree-object-size.c +@@ -205,6 +205,12 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, + pt_var_size = size_int (sz); + } + else if (pt_var ++ && DECL_P (pt_var) ++ && host_integerp (DECL_SIZE_UNIT (pt_var), 1) ++ && (unsigned HOST_WIDE_INT) ++ tree_low_cst (DECL_SIZE_UNIT (pt_var), 1) < offset_limit) ++ pt_var_size = DECL_SIZE_UNIT (pt_var); ++ else if (pt_var + && (SSA_VAR_P (pt_var) || TREE_CODE (pt_var) == STRING_CST) + && TYPE_SIZE_UNIT (TREE_TYPE (pt_var)) + && host_integerp (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)), 1) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0375-Fix-fma4_fmsubadd-and-fma4_fmaddsub-mode-suffixes.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0375-Fix-fma4_fmsubadd-and-fma4_fmaddsub-mode-suffixes.patch new file mode 100644 index 000000000..6fd197602 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0375-Fix-fma4_fmsubadd-and-fma4_fmaddsub-mode-suffixes.patch @@ -0,0 +1,36 @@ +From 6570337948b5dd25e20cb7e6db45a3abb5b62d39 Mon Sep 17 00:00:00 2001 +From: qneill <qneill@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 31 May 2011 14:32:38 +0000 +Subject: [PATCH] Fix fma4_fmsubadd and fma4_fmaddsub mode suffixes. + +2011-05-31 Quentin Neill <quentin.neill@amd.com> + + * config/i386/sse.md (fma4_fmsubadd): Use <ssemodesuffix>. + (fma4_fmaddsub): Likewise + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174485 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 7e18678..0e03dd4 100644 +--- a/gcc/config/i386/sse.md ++++ b/gcc/config/i386/sse.md +@@ -2068,7 +2068,7 @@ + (match_operand:AVXMODEF2P 3 "nonimmediate_operand" "xm,x")] + UNSPEC_FMADDSUB))] + "TARGET_FMA4" +- "vfmaddsubps\t{%3, %2, %1, %0|%0, %1, %2, %3}" ++ "vfmaddsub<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "ssemuladd") + (set_attr "mode" "<MODE>")]) + +@@ -2081,7 +2081,7 @@ + (match_operand:AVXMODEF2P 3 "nonimmediate_operand" "xm,x"))] + UNSPEC_FMADDSUB))] + "TARGET_FMA4" +- "vfmsubaddps\t{%3, %2, %1, %0|%0, %1, %2, %3}" ++ "vfmsubadd<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "ssemuladd") + (set_attr "mode" "<MODE>")]) + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0376-2011-05-31-Thomas-Koenig-tkoenig-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0376-2011-05-31-Thomas-Koenig-tkoenig-gcc.gnu.org.patch new file mode 100644 index 000000000..9948adb59 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0376-2011-05-31-Thomas-Koenig-tkoenig-gcc.gnu.org.patch @@ -0,0 +1,237 @@ +From de5792a9c6fd7c2d80640c54c9f901abf5ca56a4 Mon Sep 17 00:00:00 2001 +From: tkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 31 May 2011 21:37:01 +0000 +Subject: [PATCH] 2011-05-31 Thomas Koenig <tkoenig@gcc.gnu.org> + + Backport from trunk + PR fortran/45786 + * interface.c (gfc_equivalent_op): New function. + (gfc_check_interface): Use gfc_equivalent_op instead + of switch statement. + * decl.c (access_attr_decl): Also set access to an + equivalent operator. + +2011-05-31 Thomas Koenig <tkoenig@gcc.gnu.org> + + Backport from trunk + PR fortran/45786 + * gfortran.dg/operator_7.f90: New test case. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174513 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 8b5f92b..80249b5 100644 +--- a/gcc/fortran/decl.c ++++ b/gcc/fortran/decl.c +@@ -6467,8 +6467,19 @@ access_attr_decl (gfc_statement st) + case INTERFACE_INTRINSIC_OP: + if (gfc_current_ns->operator_access[op] == ACCESS_UNKNOWN) + { ++ gfc_intrinsic_op other_op; ++ + gfc_current_ns->operator_access[op] = + (st == ST_PUBLIC) ? ACCESS_PUBLIC : ACCESS_PRIVATE; ++ ++ /* Handle the case if there is another op with the same ++ function, for INTRINSIC_EQ vs. INTRINSIC_EQ_OS and so on. */ ++ other_op = gfc_equivalent_op (op); ++ ++ if (other_op != INTRINSIC_NONE) ++ gfc_current_ns->operator_access[other_op] = ++ (st == ST_PUBLIC) ? ACCESS_PUBLIC : ACCESS_PRIVATE; ++ + } + else + { +diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h +index f20a29b..f3c4e8a 100644 +--- a/gcc/fortran/gfortran.h ++++ b/gcc/fortran/gfortran.h +@@ -2816,6 +2816,7 @@ gfc_symtree* gfc_find_sym_in_symtree (gfc_symbol*); + bool gfc_arglist_matches_symbol (gfc_actual_arglist**, gfc_symbol*); + bool gfc_check_operator_interface (gfc_symbol*, gfc_intrinsic_op, locus); + int gfc_has_vector_subscript (gfc_expr*); ++gfc_intrinsic_op gfc_equivalent_op (gfc_intrinsic_op); + + /* io.c */ + extern gfc_st_label format_asterisk; +diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c +index b5f77c3..18aaac1 100644 +--- a/gcc/fortran/interface.c ++++ b/gcc/fortran/interface.c +@@ -1264,6 +1264,54 @@ check_uop_interfaces (gfc_user_op *uop) + } + } + ++/* Given an intrinsic op, return an equivalent op if one exists, ++ or INTRINSIC_NONE otherwise. */ ++ ++gfc_intrinsic_op ++gfc_equivalent_op (gfc_intrinsic_op op) ++{ ++ switch(op) ++ { ++ case INTRINSIC_EQ: ++ return INTRINSIC_EQ_OS; ++ ++ case INTRINSIC_EQ_OS: ++ return INTRINSIC_EQ; ++ ++ case INTRINSIC_NE: ++ return INTRINSIC_NE_OS; ++ ++ case INTRINSIC_NE_OS: ++ return INTRINSIC_NE; ++ ++ case INTRINSIC_GT: ++ return INTRINSIC_GT_OS; ++ ++ case INTRINSIC_GT_OS: ++ return INTRINSIC_GT; ++ ++ case INTRINSIC_GE: ++ return INTRINSIC_GE_OS; ++ ++ case INTRINSIC_GE_OS: ++ return INTRINSIC_GE; ++ ++ case INTRINSIC_LT: ++ return INTRINSIC_LT_OS; ++ ++ case INTRINSIC_LT_OS: ++ return INTRINSIC_LT; ++ ++ case INTRINSIC_LE: ++ return INTRINSIC_LE_OS; ++ ++ case INTRINSIC_LE_OS: ++ return INTRINSIC_LE; ++ ++ default: ++ return INTRINSIC_NONE; ++ } ++} + + /* For the namespace, check generic, user operator and intrinsic + operator interfaces for consistency and to remove duplicate +@@ -1304,75 +1352,19 @@ gfc_check_interfaces (gfc_namespace *ns) + + for (ns2 = ns; ns2; ns2 = ns2->parent) + { ++ gfc_intrinsic_op other_op; ++ + if (check_interface1 (ns->op[i], ns2->op[i], 0, + interface_name, true)) + goto done; + +- switch (i) +- { +- case INTRINSIC_EQ: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_EQ_OS], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_EQ_OS: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_EQ], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_NE: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_NE_OS], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_NE_OS: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_NE], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_GT: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GT_OS], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_GT_OS: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GT], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_GE: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GE_OS], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_GE_OS: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GE], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_LT: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LT_OS], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_LT_OS: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LT], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_LE: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LE_OS], +- 0, interface_name, true)) goto done; +- break; +- +- case INTRINSIC_LE_OS: +- if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LE], +- 0, interface_name, true)) goto done; +- break; +- +- default: +- break; +- } ++ /* i should be gfc_intrinsic_op, but has to be int with this cast ++ here for stupid C++ compatibility rules. */ ++ other_op = gfc_equivalent_op ((gfc_intrinsic_op) i); ++ if (other_op != INTRINSIC_NONE ++ && check_interface1 (ns->op[i], ns2->op[other_op], ++ 0, interface_name, true)) ++ goto done; + } + } + +new file mode 100644 +index 0000000..66d8dd1 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/operator_7.f90 +@@ -0,0 +1,27 @@ ++! { dg-do compile } ++! PR fortran/45786 - operators were not correctly marked as public ++! if the alternative form was used. ++! Test case contributed by Neil Carlson. ++module foo_type ++ private ++ public :: foo, operator(==) ++ type :: foo ++ integer :: bar ++ end type ++ interface operator(.eq.) ++ module procedure eq_foo ++ end interface ++contains ++ logical function eq_foo (a, b) ++ type(foo), intent(in) :: a, b ++ eq_foo = (a%bar == b%bar) ++ end function ++end module ++ ++ subroutine use_it (a, b) ++ use foo_type ++ type(foo) :: a, b ++ print *, a == b ++end subroutine ++ ++! { dg-final { cleanup-modules "foo_type" } } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0379-PR-tree-optimization-49093.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0379-PR-tree-optimization-49093.patch new file mode 100644 index 000000000..d4dbe8348 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0379-PR-tree-optimization-49093.patch @@ -0,0 +1,61 @@ +From 3fb16a9ff349672beb2818d1139bb689ee424da4 Mon Sep 17 00:00:00 2001 +From: irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 2 Jun 2011 07:02:57 +0000 +Subject: [PATCH] PR tree-optimization/49093 + * tree-vect-data-refs.c (vect_analyze_data_refs): Fail for + volatile data references. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174559 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 5ae1848..20fdeec 100644 +new file mode 100644 +index 0000000..b8bded6 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/vect/pr49093.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -ftree-vectorize -fdump-tree-vect-details -fno-tree-fre" } */ ++ ++volatile unsigned char g_324[4] = {0, 1, 0, 1}; ++void foo (int); ++int x, y; ++void func_81(void) ++{ ++ int l_466, l_439[7] = {0}, g_97; ++lbl_473: ++ if (x) { ++ for (g_97 = 0; (g_97 < 4); ++g_97) { ++ if (y) ++ goto lbl_473; ++ g_324[g_97]; ++ l_466 = l_439[g_97]; ++ } ++ foo(l_466); ++ } ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c +index a1437b5..db5098c 100644 +--- a/gcc/tree-vect-data-refs.c ++++ b/gcc/tree-vect-data-refs.c +@@ -2577,6 +2577,16 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo, + return false; + } + ++ if (TREE_THIS_VOLATILE (DR_REF (dr))) ++ { ++ if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS)) ++ { ++ fprintf (vect_dump, "not vectorized: volatile type "); ++ print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM); ++ } ++ return false; ++ } ++ + base = unshare_expr (DR_BASE_ADDRESS (dr)); + offset = unshare_expr (DR_OFFSET (dr)); + init = unshare_expr (DR_INIT (dr)); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0380-2011-06-02-Steven-G.-Kargl-kargl-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0380-2011-06-02-Steven-G.-Kargl-kargl-gcc.gnu.org.patch new file mode 100644 index 000000000..9dcda3d94 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0380-2011-06-02-Steven-G.-Kargl-kargl-gcc.gnu.org.patch @@ -0,0 +1,139 @@ +From 56d647438bd3a69b44b10fb4e2adaceb5d9fac49 Mon Sep 17 00:00:00 2001 +From: kargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 2 Jun 2011 19:53:02 +0000 +Subject: [PATCH] 2011-06-02 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/49265 + * decl.c (gfc_match_modproc): Allow for a double colon in a module + procedure statement. + * parse.c ( decode_statement): Deal with whitespace around :: in + gfc_match_modproc. + +2011-06-02 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/49265 + * gfortran.dg/module_procedure_double_colon_1.f90: New test. + * gfortran.dg/module_procedure_double_colon_2.f90: New test. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174576 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 80249b5..90693a4 100644 +--- a/gcc/fortran/decl.c ++++ b/gcc/fortran/decl.c +@@ -7005,6 +7005,7 @@ gfc_match_modproc (void) + char name[GFC_MAX_SYMBOL_LEN + 1]; + gfc_symbol *sym; + match m; ++ locus old_locus; + gfc_namespace *module_ns; + gfc_interface *old_interface_head, *interface; + +@@ -7033,10 +7034,23 @@ gfc_match_modproc (void) + end up with a syntax error and need to recover. */ + old_interface_head = gfc_current_interface_head (); + ++ /* Check if the F2008 optional double colon appears. */ ++ gfc_gobble_whitespace (); ++ old_locus = gfc_current_locus; ++ if (gfc_match ("::") == MATCH_YES) ++ { ++ if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: double colon in " ++ "MODULE PROCEDURE statement at %L", &old_locus) ++ == FAILURE) ++ return MATCH_ERROR; ++ } ++ else ++ gfc_current_locus = old_locus; ++ + for (;;) + { +- locus old_locus = gfc_current_locus; + bool last = false; ++ old_locus = gfc_current_locus; + + m = gfc_match_name (name); + if (m == MATCH_NO) +@@ -7048,6 +7062,7 @@ gfc_match_modproc (void) + current namespace. */ + if (gfc_match_eos () == MATCH_YES) + last = true; ++ + if (!last && gfc_match_char (',') != MATCH_YES) + goto syntax; + +diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c +index 7b24cc4..1acd251 100644 +--- a/gcc/fortran/parse.c ++++ b/gcc/fortran/parse.c +@@ -399,7 +399,7 @@ decode_statement (void) + break; + + case 'm': +- match ("module% procedure% ", gfc_match_modproc, ST_MODULE_PROC); ++ match ("module% procedure", gfc_match_modproc, ST_MODULE_PROC); + match ("module", gfc_match_module, ST_MODULE); + break; + +new file mode 100644 +index 0000000..200f0ff +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/module_procedure_double_colon_1.f90 +@@ -0,0 +1,23 @@ ++! { dg-do compile } ++! ++! PR fortran/49265 ++! Contributed by Erik Toussaint ++! ++module m1 ++ implicit none ++ interface foo ++ module procedure::bar ++ module procedure ::bar_none ++ module procedure:: none_bar ++ end interface ++contains ++ subroutine bar ++ end subroutine ++ subroutine bar_none(i) ++ integer i ++ end subroutine ++ subroutine none_bar(x) ++ real x ++ end subroutine ++end module ++! { dg-final { cleanup-modules "m1" } } +diff --git a/gcc/testsuite/gfortran.dg/module_procedure_double_colon_2.f90 b/gcc/testsuite/gfortran.dg/module_procedure_double_colon_2.f90 +new file mode 100644 +index 0000000..9300215 +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/module_procedure_double_colon_2.f90 +@@ -0,0 +1,24 @@ ++! { dg-do compile } ++! { dg-options "-std=f95" } ++! ++! PR fortran/49265 ++! Contributed by Erik Toussaint ++! ++module m1 ++ implicit none ++ interface foo ++ module procedure::bar ! { dg-error "double colon" } ++ module procedure ::bar_none ! { dg-error "double colon" } ++ module procedure:: none_bar ! { dg-error "double colon" } ++ end interface ++contains ++ subroutine bar ++ end subroutine ++ subroutine bar_none(i) ++ integer i ++ end subroutine ++ subroutine none_bar(x) ++ real x ++ end subroutine ++end module ++! { dg-final { cleanup-modules "m1" } } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0382-PR-c-49276.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0382-PR-c-49276.patch new file mode 100644 index 000000000..bedf16cc4 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0382-PR-c-49276.patch @@ -0,0 +1,62 @@ +From 85632cd24fa3d7f890fe9537936088c42792970c Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 3 Jun 2011 20:21:38 +0000 +Subject: [PATCH] PR c++/49276 + * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of + DECL_CONTEXT. + + * g++.dg/cpp0x/lambda/lambda-mangle2.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174620 138bc75d-0d04-0410-961f-82ee72b054a4 + +index f063d47..be4ef0a 100644 +--- a/gcc/cp/mangle.c ++++ b/gcc/cp/mangle.c +@@ -1,6 +1,6 @@ + /* Name mangling for the 3.0 C++ ABI. +- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 +- Free Software Foundation, Inc. ++ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, ++ 2011 Free Software Foundation, Inc. + Written by Alex Samuel <samuel@codesourcery.com> + + This file is part of GCC. +@@ -943,7 +943,7 @@ write_nested_name (const tree decl) + else + { + /* No, just use <prefix> */ +- write_prefix (DECL_CONTEXT (decl)); ++ write_prefix (CP_DECL_CONTEXT (decl)); + write_unqualified_name (decl); + } + write_char ('E'); +new file mode 100644 +index 0000000..4b7d15a +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle2.C +@@ -0,0 +1,21 @@ ++// PR c++/49276 ++// { dg-do compile } ++// { dg-options "-std=c++0x" } ++ ++template <int N> ++struct F ++{ ++ template <typename U> F (U); ++}; ++ ++struct S ++{ ++ void foo (F <0> x = [] {}) {} ++}; ++ ++int ++main () ++{ ++ S s; ++ s.foo (); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0384-PR-tree-optimization-49038.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0384-PR-tree-optimization-49038.patch new file mode 100644 index 000000000..199eb6130 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0384-PR-tree-optimization-49038.patch @@ -0,0 +1,367 @@ +From 57c28e9c809ad3f27fe0743eabb030e8ee8b2af4 Mon Sep 17 00:00:00 2001 +From: irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 4 Jun 2011 09:20:00 +0000 +Subject: [PATCH] PR tree-optimization/49038 + * tree-vect-loop-manip.c (vect_generate_tmps_on_preheader): + Ensure at least one epilogue iteration if required by data + accesses with gaps. + * tree-vectorizer.h (struct _loop_vec_info): Add new field + to mark loops that require peeling for gaps. + * tree-vect-loop.c (new_loop_vec_info): Initialize new field. + (vect_get_known_peeling_cost): Take peeling for gaps into + account. + (vect_transform_loop): Generate epilogue if required by data + access with gaps. + * tree-vect-data-refs.c (vect_analyze_group_access): Mark the + loop as requiring an epilogue if there are gaps in the end of + the strided group. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174635 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 13b7118..8d51590 100644 +new file mode 100644 +index 0000000..91c214f +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/vect/pr49038.c +@@ -0,0 +1,42 @@ ++#include <sys/mman.h> ++#include <stdio.h> ++ ++#define COUNT 320 ++#define MMAP_SIZE 0x10000 ++#define ADDRESS 0x1122000000 ++#define TYPE unsigned short ++ ++#ifndef MAP_ANONYMOUS ++#define MAP_ANONYMOUS MAP_ANON ++#endif ++ ++void __attribute__((noinline)) ++foo (TYPE *__restrict a, TYPE *__restrict b) ++{ ++ int n; ++ ++ for (n = 0; n < COUNT; n++) ++ a[n] = b[n * 2]; ++} ++ ++int ++main (void) ++{ ++ void *x; ++ size_t b_offset; ++ ++ x = mmap ((void *) ADDRESS, MMAP_SIZE, PROT_READ | PROT_WRITE, ++ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); ++ if (x == MAP_FAILED) ++ { ++ perror ("mmap"); ++ return 1; ++ } ++ ++ b_offset = MMAP_SIZE - (2 * COUNT - 1) * sizeof (TYPE); ++ foo ((unsigned short *) x, ++ (unsigned short *) ((char *) x + b_offset)); ++ return 0; ++} ++ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +diff --git a/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c +new file mode 100644 +index 0000000..ccbc366 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c +@@ -0,0 +1,116 @@ ++/* { dg-require-effective-target vect_int } */ ++ ++#include <stdarg.h> ++#include <stdio.h> ++#include "tree-vect.h" ++ ++#define N 160 ++ ++typedef struct { ++ unsigned char a; ++ unsigned char b; ++ unsigned char c; ++ unsigned char d; ++ unsigned char e; ++ unsigned char f; ++ unsigned char g; ++ unsigned char h; ++} s; ++ ++__attribute__ ((noinline)) int ++main1 (s *arr, int n) ++{ ++ int i; ++ s *ptr = arr; ++ s res[N]; ++ unsigned char x; ++ ++ for (i = 0; i < N; i++) ++ { ++ res[i].a = 0; ++ res[i].b = 0; ++ res[i].c = 0; ++ res[i].d = 0; ++ res[i].e = 0; ++ res[i].f = 0; ++ res[i].g = 0; ++ res[i].h = 0; ++ __asm__ volatile (""); ++ } ++ ++ /* Check peeling for gaps for unknown loop bound. */ ++ for (i = 0; i < n; i++) ++ { ++ res[i].c = ptr->b + ptr->c; ++ x = ptr->c + ptr->f; ++ res[i].a = x + ptr->b; ++ res[i].d = ptr->b + ptr->c; ++ res[i].b = ptr->c; ++ res[i].f = ptr->f + ptr->e; ++ res[i].e = ptr->b + ptr->e; ++ res[i].h = ptr->c; ++ res[i].g = ptr->b + ptr->c; ++ ptr++; ++ } ++ ++ /* check results: */ ++ for (i = 0; i < n; i++) ++ { ++ if (res[i].c != arr[i].b + arr[i].c ++ || res[i].a != arr[i].c + arr[i].f + arr[i].b ++ || res[i].d != arr[i].b + arr[i].c ++ || res[i].b != arr[i].c ++ || res[i].f != arr[i].f + arr[i].e ++ || res[i].e != arr[i].b + arr[i].e ++ || res[i].h != arr[i].c ++ || res[i].g != arr[i].b + arr[i].c) ++ abort (); ++ } ++ ++ /* Check also that we don't do more iterations than needed. */ ++ for (i = n; i < N; i++) ++ { ++ if (res[i].c == arr[i].b + arr[i].c ++ || res[i].a == arr[i].c + arr[i].f + arr[i].b ++ || res[i].d == arr[i].b + arr[i].c ++ || res[i].b == arr[i].c ++ || res[i].f == arr[i].f + arr[i].e ++ || res[i].e == arr[i].b + arr[i].e ++ || res[i].h == arr[i].c ++ || res[i].g == arr[i].b + arr[i].c) ++ abort (); ++ } ++ ++ return 0; ++} ++ ++ ++int main (void) ++{ ++ int i; ++ s arr[N]; ++ ++ check_vect (); ++ ++ for (i = 0; i < N; i++) ++ { ++ arr[i].a = 5; ++ arr[i].b = 6; ++ arr[i].c = 17; ++ arr[i].d = 3; ++ arr[i].e = 16; ++ arr[i].f = 16; ++ arr[i].g = 3; ++ arr[i].h = 56; ++ if (arr[i].a == 178) ++ abort(); ++ } ++ ++ main1 (arr, N-2); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ ++ +diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c +index db5098c..1c60388 100644 +--- a/gcc/tree-vect-data-refs.c ++++ b/gcc/tree-vect-data-refs.c +@@ -2045,7 +2045,7 @@ vect_analyze_group_access (struct data_reference *dr) + loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info); + bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info); + HOST_WIDE_INT dr_step = TREE_INT_CST_LOW (step); +- HOST_WIDE_INT stride; ++ HOST_WIDE_INT stride, last_accessed_element = 1; + bool slp_impossible = false; + + /* For interleaving, STRIDE is STEP counted in elements, i.e., the size of the +@@ -2074,6 +2074,16 @@ vect_analyze_group_access (struct data_reference *dr) + fprintf (vect_dump, " step "); + print_generic_expr (vect_dump, step, TDF_SLIM); + } ++ ++ if (loop_vinfo) ++ { ++ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true; ++ ++ if (vect_print_dump_info (REPORT_DETAILS)) ++ fprintf (vect_dump, "Data access with gaps requires scalar " ++ "epilogue loop"); ++ } ++ + return true; + } + +@@ -2139,6 +2149,7 @@ vect_analyze_group_access (struct data_reference *dr) + next = DR_GROUP_NEXT_DR (vinfo_for_stmt (next)); + continue; + } ++ + prev = next; + + /* Check that all the accesses have the same STEP. */ +@@ -2169,6 +2180,8 @@ vect_analyze_group_access (struct data_reference *dr) + gaps += diff - 1; + } + ++ last_accessed_element += diff; ++ + /* Store the gap from the previous member of the group. If there is no + gap in the access, DR_GROUP_GAP is always 1. */ + DR_GROUP_GAP (vinfo_for_stmt (next)) = diff; +@@ -2260,6 +2273,15 @@ vect_analyze_group_access (struct data_reference *dr) + VEC_safe_push (gimple, heap, BB_VINFO_STRIDED_STORES (bb_vinfo), + stmt); + } ++ ++ /* There is a gap in the end of the group. */ ++ if (stride - last_accessed_element > 0 && loop_vinfo) ++ { ++ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true; ++ if (vect_print_dump_info (REPORT_DETAILS)) ++ fprintf (vect_dump, "Data access with gaps requires scalar " ++ "epilogue loop"); ++ } + } + + return true; +diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c +index b691cd2..da2c9b7 100644 +--- a/gcc/tree-vect-loop-manip.c ++++ b/gcc/tree-vect-loop-manip.c +@@ -1551,7 +1551,7 @@ vect_generate_tmps_on_preheader (loop_vec_info loop_vinfo, + edge pe; + basic_block new_bb; + gimple_seq stmts; +- tree ni_name; ++ tree ni_name, ni_minus_gap_name; + tree var; + tree ratio_name; + tree ratio_mult_vf_name; +@@ -1568,9 +1568,39 @@ vect_generate_tmps_on_preheader (loop_vec_info loop_vinfo, + ni_name = vect_build_loop_niters (loop_vinfo, cond_expr_stmt_list); + log_vf = build_int_cst (TREE_TYPE (ni), exact_log2 (vf)); + ++ /* If epilogue loop is required because of data accesses with gaps, we ++ subtract one iteration from the total number of iterations here for ++ correct calculation of RATIO. */ ++ if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)) ++ { ++ ni_minus_gap_name = fold_build2 (MINUS_EXPR, TREE_TYPE (ni_name), ++ ni_name, ++ build_one_cst (TREE_TYPE (ni_name))); ++ if (!is_gimple_val (ni_minus_gap_name)) ++ { ++ var = create_tmp_var (TREE_TYPE (ni), "ni_gap"); ++ add_referenced_var (var); ++ ++ stmts = NULL; ++ ni_minus_gap_name = force_gimple_operand (ni_minus_gap_name, &stmts, ++ true, var); ++ if (cond_expr_stmt_list) ++ gimple_seq_add_seq (&cond_expr_stmt_list, stmts); ++ else ++ { ++ pe = loop_preheader_edge (loop); ++ new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts); ++ gcc_assert (!new_bb); ++ } ++ } ++ } ++ else ++ ni_minus_gap_name = ni_name; ++ + /* Create: ratio = ni >> log2(vf) */ + +- ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_name), ni_name, log_vf); ++ ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_minus_gap_name), ++ ni_minus_gap_name, log_vf); + if (!is_gimple_val (ratio_name)) + { + var = create_tmp_var (TREE_TYPE (ni), "bnd"); +diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c +index 7692eb8..44c1ecd 100644 +--- a/gcc/tree-vect-loop.c ++++ b/gcc/tree-vect-loop.c +@@ -760,6 +760,7 @@ new_loop_vec_info (struct loop *loop) + LOOP_VINFO_SLP_INSTANCES (res) = VEC_alloc (slp_instance, heap, 10); + LOOP_VINFO_SLP_UNROLLING_FACTOR (res) = 1; + LOOP_VINFO_PEELING_HTAB (res) = NULL; ++ LOOP_VINFO_PEELING_FOR_GAPS (res) = false; + + return res; + } +@@ -2149,6 +2150,10 @@ vect_get_known_peeling_cost (loop_vec_info loop_vinfo, int peel_iters_prologue, + peel_iters_prologue = niters < peel_iters_prologue ? + niters : peel_iters_prologue; + *peel_iters_epilogue = (niters - peel_iters_prologue) % vf; ++ /* If we need to peel for gaps, but no peeling is required, we have to ++ peel VF iterations. */ ++ if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) && !*peel_iters_epilogue) ++ *peel_iters_epilogue = vf; + } + + return (peel_iters_prologue * scalar_single_iter_cost) +@@ -4721,7 +4726,8 @@ vect_transform_loop (loop_vec_info loop_vinfo) + do_peeling_for_loop_bound + = (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) + || (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) +- && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0)); ++ && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0) ++ || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)); + + if (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (loop_vinfo) + || LOOP_REQUIRES_VERSIONING_FOR_ALIAS (loop_vinfo)) +diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h +index ee8410c..c1ac81c 100644 +--- a/gcc/tree-vectorizer.h ++++ b/gcc/tree-vectorizer.h +@@ -251,6 +251,11 @@ typedef struct _loop_vec_info { + /* Hash table used to choose the best peeling option. */ + htab_t peeling_htab; + ++ /* When we have strided data accesses with gaps, we may introduce invalid ++ memory accesses. We peel the last iteration of the loop to prevent ++ this. */ ++ bool peeling_for_gaps; ++ + } *loop_vec_info; + + /* Access Functions. */ +@@ -278,6 +283,7 @@ typedef struct _loop_vec_info { + #define LOOP_VINFO_SLP_UNROLLING_FACTOR(L) (L)->slp_unrolling_factor + #define LOOP_VINFO_REDUCTIONS(L) (L)->reductions + #define LOOP_VINFO_PEELING_HTAB(L) (L)->peeling_htab ++#define LOOP_VINFO_PEELING_FOR_GAPS(L) (L)->peeling_for_gaps + + #define LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT(L) \ + VEC_length (gimple, (L)->may_misalign_stmts) > 0 +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0385-PR-debug-47590.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0385-PR-debug-47590.patch new file mode 100644 index 000000000..cf623ba61 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0385-PR-debug-47590.patch @@ -0,0 +1,490 @@ +From d457844076501a1f81fa5f867326a2018a61ac98 Mon Sep 17 00:00:00 2001 +From: aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 4 Jun 2011 10:15:48 +0000 +Subject: [PATCH] PR debug/47590 + * target.def (delay_sched2, delay_vartrack): New. + * doc/tm.texi.in: Update. + * doc/tm.texi: Rebuild. + * sched-rgn.c (gate_handle_sched2): Fail if delay_sched2. + * var-tracking.c (gate_handle_var_tracking): Likewise. + * config/bfin/bfin.c (bfin_flag_schedule_insns2): Drop. + (bfin_flag_var_tracking): Drop. + (output_file_start): Don't save and override flag_var_tracking. + (bfin_option_override): Ditto flag_schedule_insns_after_reload. + (bfin_reorg): Test original variables. + (TARGET_DELAY_SCHED2, TARGET_DELAY_VARTRACK): Define. + * config/ia64/ia64.c (ia64_flag_schedule_insns2): Drop. + (ia64_flag_var_tracking): Drop. + (TARGET_DELAY_SCHED2, TARGET_DELAY_VARTRACK): Define. + (ia64_file_start): Don't save and override flag_var_tracking. + (ia64_override_options_after_change): Ditto + flag_schedule_insns_after_reload. + (ia64_reorg): Test original variables. + * config/picochip/picochip.c (picochip_flag_schedule_insns2): Drop. + (picochip_flag_var_tracking): Drop. + (TARGET_DELAY_SCHED2, TARGET_DELAY_VARTRACK): Define. + (picochip_option_override): Don't save and override + flag_schedule_insns_after_reload. + (picochip_asm_file_start): Ditto flag_var_tracking. + (picochip_reorg): Test original variables. + * config/spu/spu.c (spu_flag_var_tracking): Drop. + (TARGET_DELAY_VARTRACK): Define. + (spu_var_tracking): New. + (spu_machine_dependent_reorg): Call it. + (asm_file_start): Don't save and override flag_var_tracking. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174637 138bc75d-0d04-0410-961f-82ee72b054a4 + +index a6f2a38..60cd09e 100644 +--- a/gcc/config/bfin/bfin.c ++++ b/gcc/config/bfin/bfin.c +@@ -88,14 +88,6 @@ static int ret_regs[] = FUNCTION_RETURN_REGISTERS; + /* Nonzero if -mshared-library-id was given. */ + static int bfin_lib_id_given; + +-/* Nonzero if -fschedule-insns2 was given. We override it and +- call the scheduler ourselves during reorg. */ +-static int bfin_flag_schedule_insns2; +- +-/* Determines whether we run variable tracking in machine dependent +- reorganization. */ +-static int bfin_flag_var_tracking; +- + /* -mcpu support */ + bfin_cpu_t bfin_cpu_type = BFIN_CPU_UNKNOWN; + +@@ -356,13 +348,6 @@ output_file_start (void) + FILE *file = asm_out_file; + int i; + +- /* Variable tracking should be run after all optimizations which change order +- of insns. It also needs a valid CFG. This can't be done in +- bfin_option_override, because flag_var_tracking is finalized after +- that. */ +- bfin_flag_var_tracking = flag_var_tracking; +- flag_var_tracking = 0; +- + fprintf (file, ".file \"%s\";\n", input_filename); + + for (i = 0; arg_regs[i] >= 0; i++) +@@ -2725,11 +2710,6 @@ bfin_option_override (void) + + flag_schedule_insns = 0; + +- /* Passes after sched2 can break the helpful TImode annotations that +- haifa-sched puts on every insn. Just do scheduling in reorg. */ +- bfin_flag_schedule_insns2 = flag_schedule_insns_after_reload; +- flag_schedule_insns_after_reload = 0; +- + init_machine_status = bfin_init_machine_status; + } + +@@ -5502,7 +5482,7 @@ bfin_reorg (void) + with old MDEP_REORGS that are not CFG based. Recompute it now. */ + compute_bb_for_insn (); + +- if (bfin_flag_schedule_insns2) ++ if (flag_schedule_insns_after_reload) + { + splitting_for_sched = 1; + split_all_insns (); +@@ -5531,7 +5511,7 @@ bfin_reorg (void) + + workaround_speculation (); + +- if (bfin_flag_var_tracking) ++ if (flag_var_tracking) + { + timevar_push (TV_VAR_TRACKING); + variable_tracking_main (); +@@ -6702,4 +6682,14 @@ bfin_conditional_register_usage (void) + #undef TARGET_TRAMPOLINE_INIT + #define TARGET_TRAMPOLINE_INIT bfin_trampoline_init + ++/* Passes after sched2 can break the helpful TImode annotations that ++ haifa-sched puts on every insn. Just do scheduling in reorg. */ ++#undef TARGET_DELAY_SCHED2 ++#define TARGET_DELAY_SCHED2 true ++ ++/* Variable tracking should be run after all optimizations which ++ change order of insns. It also needs a valid CFG. */ ++#undef TARGET_DELAY_VARTRACK ++#define TARGET_DELAY_VARTRACK true ++ + struct gcc_target targetm = TARGET_INITIALIZER; +diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c +index 1d3f8b1..71de697 100644 +--- a/gcc/config/ia64/ia64.c ++++ b/gcc/config/ia64/ia64.c +@@ -105,14 +105,6 @@ static const char * const ia64_output_reg_names[8] = + /* Which cpu are we scheduling for. */ + enum processor_type ia64_tune = PROCESSOR_ITANIUM2; + +-/* Determines whether we run our final scheduling pass or not. We always +- avoid the normal second scheduling pass. */ +-static int ia64_flag_schedule_insns2; +- +-/* Determines whether we run variable tracking in machine dependent +- reorganization. */ +-static int ia64_flag_var_tracking; +- + /* Variables which are this size or smaller are put in the sdata/sbss + sections. */ + +@@ -634,6 +626,14 @@ static const struct default_options ia64_option_optimization_table[] = + #undef TARGET_PREFERRED_RELOAD_CLASS + #define TARGET_PREFERRED_RELOAD_CLASS ia64_preferred_reload_class + ++#undef TARGET_DELAY_SCHED2 ++#define TARGET_DELAY_SCHED2 true ++ ++/* Variable tracking should be run after all optimizations which ++ change order of insns. It also needs a valid CFG. */ ++#undef TARGET_DELAY_VARTRACK ++#define TARGET_DELAY_VARTRACK true ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + typedef enum +@@ -2389,13 +2389,6 @@ ia64_expand_atomic_op (enum rtx_code code, rtx mem, rtx val, + static void + ia64_file_start (void) + { +- /* Variable tracking should be run after all optimizations which change order +- of insns. It also needs a valid CFG. This can't be done in +- ia64_option_override, because flag_var_tracking is finalized after +- that. */ +- ia64_flag_var_tracking = flag_var_tracking; +- flag_var_tracking = 0; +- + default_file_start (); + emit_safe_across_calls (); + } +@@ -5733,9 +5726,6 @@ ia64_option_override (void) + static void + ia64_override_options_after_change (void) + { +- ia64_flag_schedule_insns2 = flag_schedule_insns_after_reload; +- flag_schedule_insns_after_reload = 0; +- + if (optimize >= 3 + && !global_options_set.x_flag_selective_scheduling + && !global_options_set.x_flag_selective_scheduling2) +@@ -9407,7 +9397,7 @@ ia64_reorg (void) + if (optimize == 0) + split_all_insns (); + +- if (optimize && ia64_flag_schedule_insns2 ++ if (optimize && flag_schedule_insns_after_reload + && dbg_cnt (ia64_sched2)) + { + timevar_push (TV_SCHED2); +@@ -9537,7 +9527,7 @@ ia64_reorg (void) + + emit_predicate_relation_info (); + +- if (ia64_flag_var_tracking) ++ if (flag_var_tracking) + { + timevar_push (TV_VAR_TRACKING); + variable_tracking_main (); +diff --git a/gcc/config/picochip/picochip.c b/gcc/config/picochip/picochip.c +index 1ca95b4..dd4e34e 100644 +--- a/gcc/config/picochip/picochip.c ++++ b/gcc/config/picochip/picochip.c +@@ -149,13 +149,6 @@ const char *picochip_regnames[] = REGISTER_NAMES; + + /* Target scheduling information. */ + +-/* Determine whether we run our final scheduling pass or not. We always +- avoid the normal second scheduling pass. */ +-int picochip_flag_schedule_insns2; +- +-/* Check if variable tracking needs to be run. */ +-int picochip_flag_var_tracking; +- + /* This flag indicates whether the next instruction to be output is a + VLIW continuation instruction. It is used to communicate between + final_prescan_insn and asm_output_opcode. */ +@@ -343,6 +336,17 @@ static const struct default_options picochip_option_optimization_table[] = + #undef TARGET_EXCEPT_UNWIND_INFO + #define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info + ++/* The 2nd scheduling pass option is switched off, and a machine ++ dependent reorganisation ensures that it is run later on, after the ++ second jump optimisation. */ ++#undef TARGET_DELAY_SCHED2 ++#define TARGET_DELAY_SCHED2 true ++ ++/* Variable tracking should be run after all optimizations which ++ change order of insns. It also needs a valid CFG. */ ++#undef TARGET_DELAY_VARTRACK ++#define TARGET_DELAY_VARTRACK true ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + +@@ -356,10 +360,7 @@ picochip_return_in_memory(const_tree type, const_tree fntype ATTRIBUTE_UNUSED) + return ((unsigned HOST_WIDE_INT) int_size_in_bytes (type) > 4); + } + +-/* Allow some options to be overriden. In particular, the 2nd +- scheduling pass option is switched off, and a machine dependent +- reorganisation ensures that it is run later on, after the second +- jump optimisation. */ ++/* Allow some options to be overriden. */ + + static void + picochip_option_override (void) +@@ -396,18 +397,16 @@ picochip_option_override (void) + if (optimize >= 1) + flag_section_anchors = 1; + +- /* Turn off the second scheduling pass, and move it to +- picochip_reorg, to avoid having the second jump optimisation +- trash the instruction modes (e.g., instructions are changed to +- TImode to mark the beginning of cycles). Two types of DFA +- scheduling are possible: space and speed. In both cases, +- instructions are reordered to avoid stalls (e.g., memory loads +- stall for one cycle). Speed scheduling will also enable VLIW +- instruction packing. VLIW instructions use more code space, so +- VLIW scheduling is disabled when scheduling for size. */ +- picochip_flag_schedule_insns2 = flag_schedule_insns_after_reload; +- flag_schedule_insns_after_reload = 0; +- if (picochip_flag_schedule_insns2) ++ /* The second scheduling pass runs within picochip_reorg, to avoid ++ having the second jump optimisation trash the instruction modes ++ (e.g., instructions are changed to TImode to mark the beginning ++ of cycles). Two types of DFA scheduling are possible: space and ++ speed. In both cases, instructions are reordered to avoid stalls ++ (e.g., memory loads stall for one cycle). Speed scheduling will ++ also enable VLIW instruction packing. VLIW instructions use more ++ code space, so VLIW scheduling is disabled when scheduling for ++ size. */ ++ if (flag_schedule_insns_after_reload) + { + if (optimize_size) + picochip_schedule_type = DFA_TYPE_SPACE; +@@ -461,7 +460,6 @@ picochip_option_override (void) + error ("invalid mul type specified (%s) - expected mac, mul or none", + picochip_mul_type_string); + } +- + } + + +@@ -1813,13 +1811,6 @@ picochip_asm_file_start (void) + fprintf (asm_out_file, "// Has multiply: Yes (Mac unit)\n"); + else + fprintf (asm_out_file, "// Has multiply: No\n"); +- +- /* Variable tracking should be run after all optimizations which change order +- of insns. It also needs a valid CFG. This can't be done in +- picochip_option_override, because flag_var_tracking is finalized after +- that. */ +- picochip_flag_var_tracking = flag_var_tracking; +- flag_var_tracking = 0; + } + + /* Output the end of an ASM file. */ +@@ -3369,15 +3360,16 @@ picochip_reorg (void) + delete_insn (prologue_end_note); + } + } +- if (picochip_flag_var_tracking) +- { +- timevar_push (TV_VAR_TRACKING); +- variable_tracking_main (); +- /* We also have to deal with variable tracking notes in the middle +- of VLIW packets. */ +- reorder_var_tracking_notes(); +- timevar_pop (TV_VAR_TRACKING); +- } ++ ++ if (flag_var_tracking) ++ { ++ timevar_push (TV_VAR_TRACKING); ++ variable_tracking_main (); ++ /* We also have to deal with variable tracking notes in the ++ middle of VLIW packets. */ ++ reorder_var_tracking_notes(); ++ timevar_pop (TV_VAR_TRACKING); ++ } + } + + /* Return the ALU character identifier for the current +diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c +index d80d86d..5c30a6e 100644 +--- a/gcc/config/spu/spu.c ++++ b/gcc/config/spu/spu.c +@@ -245,10 +245,6 @@ int spu_tune; + inserted in pairs, so we round down. */ + int spu_hint_dist = (8*4) - (2*4); + +-/* Determines whether we run variable tracking in machine dependent +- reorganization. */ +-static int spu_flag_var_tracking; +- + enum spu_immediate { + SPU_NONE, + SPU_IL, +@@ -495,6 +491,11 @@ static const struct attribute_spec spu_attribute_table[] = + #undef TARGET_REF_MAY_ALIAS_ERRNO + #define TARGET_REF_MAY_ALIAS_ERRNO spu_ref_may_alias_errno + ++/* Variable tracking should be run after all optimizations which ++ change order of insns. It also needs a valid CFG. */ ++#undef TARGET_DELAY_VARTRACK ++#define TARGET_DELAY_VARTRACK true ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + static void +@@ -2686,6 +2687,19 @@ insert_hbrp (void) + + static int in_spu_reorg; + ++static void ++spu_var_tracking (void) ++{ ++ if (flag_var_tracking) ++ { ++ df_analyze (); ++ timevar_push (TV_VAR_TRACKING); ++ variable_tracking_main (); ++ timevar_pop (TV_VAR_TRACKING); ++ df_finish_pass (false); ++ } ++} ++ + /* Insert branch hints. There are no branch optimizations after this + pass, so it's safe to set our branch hints now. */ + static void +@@ -2705,6 +2719,7 @@ spu_machine_dependent_reorg (void) + function might have hinted a call or return. */ + insert_hbrp (); + pad_bb (); ++ spu_var_tracking (); + return; + } + +@@ -2911,14 +2926,7 @@ spu_machine_dependent_reorg (void) + XVECEXP (unspec, 0, 0) = plus_constant (label_ref, offset); + } + +- if (spu_flag_var_tracking) +- { +- df_analyze (); +- timevar_push (TV_VAR_TRACKING); +- variable_tracking_main (); +- timevar_pop (TV_VAR_TRACKING); +- df_finish_pass (false); +- } ++ spu_var_tracking (); + + free_bb_for_insn (); + +@@ -7049,19 +7057,6 @@ spu_libgcc_shift_count_mode (void) + static void + asm_file_start (void) + { +- /* Variable tracking should be run after all optimizations which +- change order of insns. It also needs a valid CFG. Therefore, +- *if* we make nontrivial changes in machine-dependent reorg, +- run variable tracking after those. However, if we do not run +- our machine-dependent reorg pass, we must still run the normal +- variable tracking pass (or else we will ICE in final since +- debug insns have not been removed). */ +- if (TARGET_BRANCH_HINTS && optimize) +- { +- spu_flag_var_tracking = flag_var_tracking; +- flag_var_tracking = 0; +- } +- + default_file_start (); + } + +diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi +index 85e1d88..f7c0cce 100644 +--- a/gcc/doc/tm.texi ++++ b/gcc/doc/tm.texi +@@ -9430,6 +9430,14 @@ tables, and hence is desirable if it works. + True if the @code{.debug_pubtypes} and @code{.debug_pubnames} sections should be emitted. These sections are not used on most platforms, and in particular GDB does not use them. + @end deftypevr + ++@deftypevr {Target Hook} bool TARGET_DELAY_SCHED2 ++True if sched2 is not to be run at its normal place. This usually means it will be run as part of machine-specific reorg. ++@end deftypevr ++ ++@deftypevr {Target Hook} bool TARGET_DELAY_VARTRACK ++True if vartrack is not to be run at its normal place. This usually means it will be run as part of machine-specific reorg. ++@end deftypevr ++ + @defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2}) + A C statement to issue assembly directives that create a difference + @var{lab1} minus @var{lab2}, using an integer of the given @var{size}. +diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in +index a799bc4..40acf65 100644 +--- a/gcc/doc/tm.texi.in ++++ b/gcc/doc/tm.texi.in +@@ -9388,6 +9388,10 @@ tables, and hence is desirable if it works. + + @hook TARGET_WANT_DEBUG_PUB_SECTIONS + ++@hook TARGET_DELAY_SCHED2 ++ ++@hook TARGET_DELAY_VARTRACK ++ + @defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2}) + A C statement to issue assembly directives that create a difference + @var{lab1} minus @var{lab2}, using an integer of the given @var{size}. +diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c +index 6c4fd46..e6400b6 100644 +--- a/gcc/sched-rgn.c ++++ b/gcc/sched-rgn.c +@@ -3518,7 +3518,7 @@ gate_handle_sched2 (void) + { + #ifdef INSN_SCHEDULING + return optimize > 0 && flag_schedule_insns_after_reload +- && dbg_cnt (sched2_func); ++ && !targetm.delay_sched2 && dbg_cnt (sched2_func); + #else + return 0; + #endif +diff --git a/gcc/target.def b/gcc/target.def +index 57134cb..ecacd44 100644 +--- a/gcc/target.def ++++ b/gcc/target.def +@@ -2723,6 +2723,16 @@ DEFHOOKPOD + in particular GDB does not use them.", + bool, false) + ++DEFHOOKPOD ++(delay_sched2, "True if sched2 is not to be run at its normal place. \ ++This usually means it will be run as part of machine-specific reorg.", ++bool, false) ++ ++DEFHOOKPOD ++(delay_vartrack, "True if vartrack is not to be run at its normal place. \ ++This usually means it will be run as part of machine-specific reorg.", ++bool, false) ++ + /* Leave the boolean fields at the end. */ + + /* Empty macro arguments are undefined in C90, so use an empty macro. */ +diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c +index b7ba0b9..ab141c1 100644 +--- a/gcc/var-tracking.c ++++ b/gcc/var-tracking.c +@@ -8615,7 +8615,7 @@ variable_tracking_main (void) + static bool + gate_handle_var_tracking (void) + { +- return (flag_var_tracking); ++ return (flag_var_tracking && !targetm.delay_vartrack); + } + + +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0386-2011-06-04-Jonathan-Wakely-jwakely.gcc-gmail.com.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0386-2011-06-04-Jonathan-Wakely-jwakely.gcc-gmail.com.patch new file mode 100644 index 000000000..05967c768 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0386-2011-06-04-Jonathan-Wakely-jwakely.gcc-gmail.com.patch @@ -0,0 +1,29 @@ +From 6387f8d0edf17d5a0ffe499ab890a9a2d3a32940 Mon Sep 17 00:00:00 2001 +From: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 4 Jun 2011 16:20:55 +0000 +Subject: [PATCH] 2011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com> + + PR c++/33840 + * g++.dg/diagnostic/bitfld2.C: New. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174645 138bc75d-0d04-0410-961f-82ee72b054a4 + +new file mode 100644 +index 0000000..10b7d9c +--- /dev/null ++++ b/gcc/testsuite/g++.dg/diagnostic/bitfld2.C +@@ -0,0 +1,9 @@ ++// PR c++/33840 ++// { dg-do compile } ++ ++template<int> struct A ++{ ++ struct {} : 2; // { dg-error "expected ';' after struct" } ++}; ++// { dg-error "ISO C.. forbids declaration" "" { target *-*-* } 6 } ++// { dg-error "ISO C.. prohibits anonymous" "" { target *-*-* } 6 } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0388-PR-target-49186.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0388-PR-target-49186.patch new file mode 100644 index 000000000..b12cf14ac --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0388-PR-target-49186.patch @@ -0,0 +1,48 @@ +From 55f5d999fdde931e7c015bed37510c46234bb459 Mon Sep 17 00:00:00 2001 +From: kkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 5 Jun 2011 21:47:42 +0000 +Subject: [PATCH] PR target/49186 + * config/sh/sh.c (expand_cbranchdi4): Set msw_skip when the high + part of the second operand is 0. + * gcc.c-torture/execute/pr49186.c: New. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174665 138bc75d-0d04-0410-961f-82ee72b054a4 + +index ffe84b1..05acb0a 100644 +--- a/gcc/config/sh/sh.c ++++ b/gcc/config/sh/sh.c +@@ -2131,7 +2131,10 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code comparison) + else if (op2h != CONST0_RTX (SImode)) + msw_taken = LTU; + else +- break; ++ { ++ msw_skip = swap_condition (LTU); ++ break; ++ } + msw_skip = swap_condition (msw_taken); + } + break; +new file mode 100644 +index 0000000..743815b +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/execute/pr49186.c +@@ -0,0 +1,15 @@ ++/* PR target/49186 */ ++extern void abort (void); ++ ++int ++main () ++{ ++ int x; ++ unsigned long long uv = 0x1000000001ULL; ++ ++ x = (uv < 0x80) ? 1 : ((uv < 0x800) ? 2 : 3); ++ if (x != 3) ++ abort (); ++ ++ return 0; ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0389-config-sparc-sparc.c-output_return-Fix-thinko-in-the.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0389-config-sparc-sparc.c-output_return-Fix-thinko-in-the.patch new file mode 100644 index 000000000..7e52179e0 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0389-config-sparc-sparc.c-output_return-Fix-thinko-in-the.patch @@ -0,0 +1,45 @@ +From 82ededd899a80bf419dd2c4d942a4776a1e13dd5 Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sun, 5 Jun 2011 23:20:21 +0000 +Subject: [PATCH] * config/sparc/sparc.c (output_return): Fix thinko in the output of an + EH return when delayed branches are disabled. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174671 138bc75d-0d04-0410-961f-82ee72b054a4 + +index c6a2047..753028f 100644 +--- a/gcc/config/sparc/sparc.c ++++ b/gcc/config/sparc/sparc.c +@@ -4763,18 +4763,20 @@ output_return (rtx insn) + machinery occupies the delay slot. */ + gcc_assert (! final_sequence); + +- if (! flag_delayed_branch) +- fputs ("\tadd\t%fp, %g1, %fp\n", asm_out_file); +- +- if (TARGET_V9) +- fputs ("\treturn\t%i7+8\n", asm_out_file); +- else +- fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file); ++ if (flag_delayed_branch) ++ { ++ if (TARGET_V9) ++ fputs ("\treturn\t%i7+8\n", asm_out_file); ++ else ++ fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file); + +- if (flag_delayed_branch) +- fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file); ++ fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file); ++ } + else +- fputs ("\t nop\n", asm_out_file); ++ { ++ fputs ("\trestore\n\tadd\t%sp, %g1, %sp\n", asm_out_file); ++ fputs ("\tjmp\t%o7+8\n\t nop\n", asm_out_file); ++ } + } + else if (final_sequence) + { +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0391-PR-c-49134.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0391-PR-c-49134.patch new file mode 100644 index 000000000..66f0033a1 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0391-PR-c-49134.patch @@ -0,0 +1,24 @@ +From 71a7bfbc37759a3f596366544c21ec55c4a75385 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 6 Jun 2011 04:31:24 +0000 +Subject: [PATCH] PR c++/49134 + * tree.c (build_target_expr): Deal with ARM ABI tweaks. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174684 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 16b9ca1..0e08eaf 100644 +--- a/gcc/cp/tree.c ++++ b/gcc/cp/tree.c +@@ -286,6 +286,9 @@ build_target_expr (tree decl, tree value) + #ifdef ENABLE_CHECKING + gcc_assert (VOID_TYPE_P (TREE_TYPE (value)) + || TREE_TYPE (decl) == TREE_TYPE (value) ++ /* On ARM ctors return 'this'. */ ++ || (TREE_CODE (TREE_TYPE (value)) == POINTER_TYPE ++ && TREE_CODE (value) == CALL_EXPR) + || useless_type_conversion_p (TREE_TYPE (decl), + TREE_TYPE (value))); + #endif +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0392-2011-06-06-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0392-2011-06-06-Richard-Guenther-rguenther-suse.de.patch new file mode 100644 index 000000000..bded821fe --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0392-2011-06-06-Richard-Guenther-rguenther-suse.de.patch @@ -0,0 +1,267 @@ +From 701245b3347bb4ac5433de15e4c69924c2d1a7e8 Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 6 Jun 2011 10:13:23 +0000 +Subject: [PATCH] 2011-06-06 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/48702 + * tree-ssa-address.c (create_mem_ref_raw): Create MEM_REFs + only when we know the base address is within bounds. + * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Do not + assume the base address of TARGET_MEM_REFs is in bounds. + (indirect_refs_may_alias_p): Fix TARGET_MEM_REF without index tests. + + * gcc.dg/torture/pr48702.c: New testcase. + + Backport from mainline + 2011-05-31 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/49235 + * tree-ssa-address.c (gen_addr_rtx): Ignore base if it is const0_rtx. + (create_mem_ref_raw): Create MEM_REF even if base is INTEGER_CST. + + * gcc.dg/pr49235.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174688 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 1a7b287..b3199f9 100644 +new file mode 100644 +index 0000000..f1e589f +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr49235.c +@@ -0,0 +1,25 @@ ++/* PR rtl-optimization/49235 */ ++/* { dg-do compile { target { int32plus } } } */ ++/* { dg-options "-O -fno-delete-null-pointer-checks -fno-tree-scev-cprop -ftree-vectorize -fno-vect-cost-model -w" } */ ++ ++void ++foo (void) ++{ ++ unsigned i; ++ unsigned *p = 0; ++ for (i = 0; i < 4; ++i) ++ *p++ = 0; ++ for (i = 0; i < 4; ++i) ++ *p++ = 0; ++} ++ ++void ++bar (void) ++{ ++ unsigned i; ++ unsigned *p = (unsigned *) (__UINTPTR_TYPE__) 0x12340000; ++ for (i = 0; i < 4; ++i) ++ *p++ = 0; ++ for (i = 0; i < 4; ++i) ++ *p++ = 0; ++} +diff --git a/gcc/testsuite/gcc.dg/torture/pr48702.c b/gcc/testsuite/gcc.dg/torture/pr48702.c +new file mode 100644 +index 0000000..1ec371d +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/torture/pr48702.c +@@ -0,0 +1,47 @@ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++#define LEN 4 ++ ++static inline void unpack(int array[LEN]) ++{ ++ int ii, val; ++ val = 1; ++ for (ii = 0; ii < LEN; ii++) { ++ array[ii] = val % 2; ++ val = val / 2; ++ } ++} ++ ++static inline int pack(int array[LEN]) ++{ ++ int ans, ii; ++ ans = 0; ++ for (ii = LEN-1; ii >= 0; ii--) { ++ ans = 2 * ans + array[ii]; ++ } ++ return ans; ++} ++ ++int __attribute__((noinline)) ++foo() ++{ ++ int temp, ans; ++ int array[LEN]; ++ unpack(array); ++ temp = array[0]; ++ array[0] = array[2]; ++ array[2] = temp; ++ ans = pack(array); ++ return ans; ++} ++ ++int main(void) ++{ ++ int val; ++ val = foo(); ++ if (val != 4) ++ abort (); ++ return 0; ++} +diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c +index a9ca835..437460d 100644 +--- a/gcc/tree-ssa-address.c ++++ b/gcc/tree-ssa-address.c +@@ -1,5 +1,5 @@ + /* Memory address lowering and addressing mode selection. +- Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 ++ Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. + + This file is part of GCC. +@@ -129,7 +129,7 @@ gen_addr_rtx (enum machine_mode address_mode, + *addr = act_elem; + } + +- if (base) ++ if (base && base != const0_rtx) + { + if (*addr) + *addr = simplify_gen_binary (PLUS, address_mode, base, *addr); +@@ -361,8 +361,11 @@ create_mem_ref_raw (tree type, tree alias_ptr_type, struct mem_address *addr, + index2 = addr->base; + } + +- /* If possible use a plain MEM_REF instead of a TARGET_MEM_REF. */ +- if (alias_ptr_type ++ /* If possible use a plain MEM_REF instead of a TARGET_MEM_REF. ++ ??? As IVOPTs does not follow restrictions to where the base ++ pointer may point to create a MEM_REF only if we know that ++ base is valid. */ ++ if ((TREE_CODE (base) == ADDR_EXPR || TREE_CODE (base) == INTEGER_CST) + && (!index2 || integer_zerop (index2)) + && (!addr->index || integer_zerop (addr->index))) + return fold_build2 (MEM_REF, type, base, addr->offset); +diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c +index 8434179..1d213df 100644 +--- a/gcc/tree-ssa-alias.c ++++ b/gcc/tree-ssa-alias.c +@@ -719,8 +719,9 @@ indirect_ref_may_alias_decl_p (tree ref1 ATTRIBUTE_UNUSED, tree base1, + alias_set_type base2_alias_set, bool tbaa_p) + { + tree ptr1; +- tree ptrtype1; ++ tree ptrtype1, dbase2; + HOST_WIDE_INT offset1p = offset1, offset2p = offset2; ++ HOST_WIDE_INT doffset1, doffset2; + + ptr1 = TREE_OPERAND (base1, 0); + +@@ -744,11 +745,12 @@ indirect_ref_may_alias_decl_p (tree ref1 ATTRIBUTE_UNUSED, tree base1, + the pointer access is beyond the extent of the variable access. + (the pointer base cannot validly point to an offset less than zero + of the variable). +- They also cannot alias if the pointer may not point to the decl. */ +- if ((TREE_CODE (base1) != TARGET_MEM_REF +- || (!TMR_INDEX (base1) && !TMR_INDEX2 (base1))) ++ ??? IVOPTs creates bases that do not honor this restriction, ++ so do not apply this optimization for TARGET_MEM_REFs. */ ++ if (TREE_CODE (base1) != TARGET_MEM_REF + && !ranges_overlap_p (MAX (0, offset1p), -1, offset2p, max_size2)) + return false; ++ /* They also cannot alias if the pointer may not point to the decl. */ + if (!ptr_deref_may_alias_decl_p (ptr1, base2)) + return false; + +@@ -771,20 +773,6 @@ indirect_ref_may_alias_decl_p (tree ref1 ATTRIBUTE_UNUSED, tree base1, + if (base2_alias_set == -1) + base2_alias_set = get_alias_set (base2); + +- /* If both references are through the same type, they do not alias +- if the accesses do not overlap. This does extra disambiguation +- for mixed/pointer accesses but requires strict aliasing. +- For MEM_REFs we require that the component-ref offset we computed +- is relative to the start of the type which we ensure by +- comparing rvalue and access type and disregarding the constant +- pointer offset. */ +- if ((TREE_CODE (base1) != TARGET_MEM_REF +- || (!TMR_INDEX (base1) && !TMR_INDEX2 (base1))) +- && (TREE_CODE (base1) != MEM_REF +- || same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (ptrtype1)) == 1) +- && same_type_for_tbaa (TREE_TYPE (ptrtype1), TREE_TYPE (base2)) == 1) +- return ranges_overlap_p (offset1, max_size1, offset2, max_size2); +- + /* When we are trying to disambiguate an access with a pointer dereference + as base versus one with a decl as base we can use both the size + of the decl and its dynamic type for extra disambiguation. +@@ -814,6 +802,48 @@ indirect_ref_may_alias_decl_p (tree ref1 ATTRIBUTE_UNUSED, tree base1, + && tree_int_cst_lt (DECL_SIZE (base2), TYPE_SIZE (TREE_TYPE (ptrtype1)))) + return false; + ++ if (!ref2) ++ return true; ++ ++ /* If the decl is accressed via a MEM_REF, reconstruct the base ++ we can use for TBAA and an appropriately adjusted offset. */ ++ dbase2 = ref2; ++ while (handled_component_p (dbase2)) ++ dbase2 = TREE_OPERAND (dbase2, 0); ++ doffset1 = offset1; ++ doffset2 = offset2; ++ if (TREE_CODE (dbase2) == MEM_REF ++ || TREE_CODE (dbase2) == TARGET_MEM_REF) ++ { ++ double_int moff = mem_ref_offset (dbase2); ++ moff = double_int_lshift (moff, ++ BITS_PER_UNIT == 8 ++ ? 3 : exact_log2 (BITS_PER_UNIT), ++ HOST_BITS_PER_DOUBLE_INT, true); ++ if (double_int_negative_p (moff)) ++ doffset1 -= double_int_neg (moff).low; ++ else ++ doffset2 -= moff.low; ++ } ++ ++ /* If either reference is view-converted, give up now. */ ++ if (same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (ptrtype1)) != 1 ++ || same_type_for_tbaa (TREE_TYPE (dbase2), ++ TREE_TYPE (reference_alias_ptr_type (dbase2))) != 1) ++ return true; ++ ++ /* If both references are through the same type, they do not alias ++ if the accesses do not overlap. This does extra disambiguation ++ for mixed/pointer accesses but requires strict aliasing. ++ For MEM_REFs we require that the component-ref offset we computed ++ is relative to the start of the type which we ensure by ++ comparing rvalue and access type and disregarding the constant ++ pointer offset. */ ++ if ((TREE_CODE (base1) != TARGET_MEM_REF ++ || (!TMR_INDEX (base1) && !TMR_INDEX2 (base1))) ++ && same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (dbase2)) == 1) ++ return ranges_overlap_p (doffset1, max_size1, doffset2, max_size2); ++ + /* Do access-path based disambiguation. */ + if (ref1 && ref2 + && handled_component_p (ref1) +@@ -942,12 +972,12 @@ indirect_refs_may_alias_p (tree ref1 ATTRIBUTE_UNUSED, tree base1, + /* If both references are through the same type, they do not alias + if the accesses do not overlap. This does extra disambiguation + for mixed/pointer accesses but requires strict aliasing. */ +- if ((TREE_CODE (base1) != TARGET_MEM_REF || !TMR_INDEX (base1)) +- && (TREE_CODE (base2) != TARGET_MEM_REF || !TMR_INDEX (base2)) +- && (TREE_CODE (base1) != MEM_REF +- || same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (ptrtype1)) == 1) +- && (TREE_CODE (base2) != MEM_REF +- || same_type_for_tbaa (TREE_TYPE (base2), TREE_TYPE (ptrtype2)) == 1) ++ if ((TREE_CODE (base1) != TARGET_MEM_REF ++ || (!TMR_INDEX (base1) && !TMR_INDEX2 (base1))) ++ && (TREE_CODE (base2) != TARGET_MEM_REF ++ || (!TMR_INDEX (base2) && !TMR_INDEX2 (base2))) ++ && same_type_for_tbaa (TREE_TYPE (base1), TREE_TYPE (ptrtype1)) == 1 ++ && same_type_for_tbaa (TREE_TYPE (base2), TREE_TYPE (ptrtype2)) == 1 + && same_type_for_tbaa (TREE_TYPE (ptrtype1), + TREE_TYPE (ptrtype2)) == 1) + return ranges_overlap_p (offset1, max_size1, offset2, max_size2); +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0393-2011-06-06-Mikael-Pettersson-mikpe-it.uu.se.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0393-2011-06-06-Mikael-Pettersson-mikpe-it.uu.se.patch new file mode 100644 index 000000000..0333872b8 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0393-2011-06-06-Mikael-Pettersson-mikpe-it.uu.se.patch @@ -0,0 +1,59 @@ +From 5bc2d161c3700f4916bcdef05043a8420d8c0ebe Mon Sep 17 00:00:00 2001 +From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 6 Jun 2011 11:46:14 +0000 +Subject: [PATCH] 2011-06-06 Mikael Pettersson <mikpe@it.uu.se> + + PR tree-optimization/49243 + * calls.c (setjmp_call_p): Also check if fndecl has the + returns_twice attribute. + + * gcc.dg/pr49243.c: New. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174696 138bc75d-0d04-0410-961f-82ee72b054a4 + +index f539f66..1c161bf 100644 +--- a/gcc/calls.c ++++ b/gcc/calls.c +@@ -548,6 +548,8 @@ special_function_p (const_tree fndecl, int flags) + int + setjmp_call_p (const_tree fndecl) + { ++ if (DECL_IS_RETURNS_TWICE (fndecl)) ++ return ECF_RETURNS_TWICE; + return special_function_p (fndecl, 0) & ECF_RETURNS_TWICE; + } + +new file mode 100644 +index 0000000..f896b05 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/pr49243.c +@@ -0,0 +1,25 @@ ++/* PR tree-optimization/49243 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Winline" } */ ++ ++extern unsigned long jb[]; ++extern int my_setjmp(unsigned long jb[]) __attribute__((returns_twice)); ++extern int decode(const char*); ++ ++static inline int wrapper(const char **s_ptr) /* { dg-warning "(inlining failed|function 'wrapper' can never be inlined because it uses setjmp)" } */ ++{ ++ if (my_setjmp(jb) == 0) { ++ const char *s = *s_ptr; ++ while (decode(s) != 0) ++ *s_ptr = ++s; ++ return 0; ++ } else ++ return -1; ++} ++ ++void parse(const char *data) ++{ ++ const char *s = data; ++ if (!(wrapper(&s) == -1 && (s - data) == 1)) /* { dg-warning "called from here" } */ ++ __builtin_abort(); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0394-2011-06-06-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0394-2011-06-06-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch new file mode 100644 index 000000000..72312cf62 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0394-2011-06-06-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch @@ -0,0 +1,27 @@ +From 1404c365ac02fa05c2ab6e1759239b35f45f8cb0 Mon Sep 17 00:00:00 2001 +From: krebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 6 Jun 2011 14:34:54 +0000 +Subject: [PATCH] 2011-06-06 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * longlong.h (smul_ppmm): The resulting register pair contains the + higher order word first. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174703 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 5937a48..1bab76d 100644 +--- a/gcc/longlong.h ++++ b/gcc/longlong.h +@@ -349,7 +349,7 @@ UDItype __umulsidi3 (USItype, USItype); + __asm__ ("mr\t%%r0,%3" \ + : "=r" (r0), "=r" (r1) \ + : "r" (r1), "r" (m1)); \ +- (xh) = r1; (xl) = r0; \ ++ (xh) = r0; (xl) = r1; \ + } while (0) + #define sdiv_qrnnd(q, r, n1, n0, d) \ + do { \ +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0395-PR-c-49264.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0395-PR-c-49264.patch new file mode 100644 index 000000000..eab6abedb --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0395-PR-c-49264.patch @@ -0,0 +1,134 @@ +From 90eb3072e3353e49d60c903664b2e9e2efc5d1de Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 6 Jun 2011 17:16:35 +0000 +Subject: [PATCH] PR c++/49264 + * gimple-fold.c (fold_stmt_1): Don't try to fold *& on the lhs + if stmt folded into nothing. + * tree-inline.c (fold_marked_statements): If a builtin at the + end of a bb folded into nothing, just update cgraph edges + and move to next bb. + * cgraph.c (cgraph_update_edges_for_call_stmt_node): Allow new_stmt + to be NULL. Don't compute count and frequency if new_call is NULL. + + * g++.dg/opt/pr49264.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174713 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 64d278f..41265f8 100644 +--- a/gcc/cgraph.c ++++ b/gcc/cgraph.c +@@ -1241,13 +1241,17 @@ cgraph_make_edge_direct (struct cgraph_edge *edge, struct cgraph_node *callee, + + /* Update or remove the corresponding cgraph edge if a GIMPLE_CALL + OLD_STMT changed into NEW_STMT. OLD_CALL is gimple_call_fndecl +- of OLD_STMT if it was previously call statement. */ ++ of OLD_STMT if it was previously call statement. ++ If NEW_STMT is NULL, the call has been dropped without any ++ replacement. */ + + static void + cgraph_update_edges_for_call_stmt_node (struct cgraph_node *node, +- gimple old_stmt, tree old_call, gimple new_stmt) ++ gimple old_stmt, tree old_call, ++ gimple new_stmt) + { +- tree new_call = (is_gimple_call (new_stmt)) ? gimple_call_fndecl (new_stmt) : 0; ++ tree new_call = (new_stmt && is_gimple_call (new_stmt)) ++ ? gimple_call_fndecl (new_stmt) : 0; + + /* We are seeing indirect calls, then there is nothing to update. */ + if (!new_call && !old_call) +@@ -1287,7 +1291,7 @@ cgraph_update_edges_for_call_stmt_node (struct cgraph_node *node, + loop_nest = e->loop_nest; + cgraph_remove_edge (e); + } +- else ++ else if (new_call) + { + /* We are seeing new direct call; compute profile info based on BB. */ + basic_block bb = gimple_bb (new_stmt); +diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c +index 910e3b0..cd8f409 100644 +--- a/gcc/gimple-fold.c ++++ b/gcc/gimple-fold.c +@@ -1484,6 +1484,11 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace) + bool changed = false; + gimple stmt = gsi_stmt (*gsi); + unsigned i; ++ gimple_stmt_iterator gsinext = *gsi; ++ gimple next_stmt; ++ ++ gsi_next (&gsinext); ++ next_stmt = gsi_end_p (gsinext) ? NULL : gsi_stmt (gsinext); + + /* Fold the main computation performed by the statement. */ + switch (gimple_code (stmt)) +@@ -1572,10 +1577,19 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace) + default:; + } + ++ /* If stmt folds into nothing and it was the last stmt in a bb, ++ don't call gsi_stmt. */ ++ if (gsi_end_p (*gsi)) ++ { ++ gcc_assert (next_stmt == NULL); ++ return changed; ++ } ++ + stmt = gsi_stmt (*gsi); + +- /* Fold *& on the lhs. */ +- if (gimple_has_lhs (stmt)) ++ /* Fold *& on the lhs. Don't do this if stmt folded into nothing, ++ as we'd changing the next stmt. */ ++ if (gimple_has_lhs (stmt) && stmt != next_stmt) + { + tree lhs = gimple_get_lhs (stmt); + if (lhs && REFERENCE_CLASS_P (lhs)) +new file mode 100644 +index 0000000..dc23740 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/opt/pr49264.C +@@ -0,0 +1,19 @@ ++// PR c++/49264 ++// { dg-do compile } ++// { dg-options "-O2" } ++ ++struct B { }; ++struct A { char a[sizeof (B) + 1]; } a; ++ ++static inline void ++foo (const B &b) ++{ ++ __builtin_memcpy (&a, &b, sizeof (b)); ++} ++ ++void ++bar () ++{ ++ B c; ++ foo (c); ++} +diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c +index ef3f1a3..a0162de 100644 +--- a/gcc/tree-inline.c ++++ b/gcc/tree-inline.c +@@ -4117,6 +4117,14 @@ fold_marked_statements (int first, struct pointer_set_t *statements) + if (fold_stmt (&gsi)) + { + gimple new_stmt; ++ /* If a builtin at the end of a bb folded into nothing, ++ the following loop won't work. */ ++ if (gsi_end_p (gsi)) ++ { ++ cgraph_update_edges_for_call_stmt (old_stmt, ++ old_decl, NULL); ++ break; ++ } + if (gsi_end_p (i2)) + i2 = gsi_start_bb (BASIC_BLOCK (first)); + else +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0396-PR-fortran-49268.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0396-PR-fortran-49268.patch new file mode 100644 index 000000000..00b8b2d87 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0396-PR-fortran-49268.patch @@ -0,0 +1,88 @@ +From 2dafec1aa5217475f84c316a2e15bd8f197c12e3 Mon Sep 17 00:00:00 2001 +From: langton <langton@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 6 Jun 2011 18:17:26 +0000 +Subject: [PATCH] PR fortran/49268 + * trans-decl.c (gfc_trans_deferred_vars): Treat assumed-size Cray + pointees as AS_EXPLICIT. + + PR fortran/49268 + * gfortran.dg/PR49268.f90: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174719 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 08207e0..9add565 100644 +--- a/gcc/fortran/trans-decl.c ++++ b/gcc/fortran/trans-decl.c +@@ -3388,7 +3388,11 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block) + + if (sym->attr.dimension) + { +- switch (sym->as->type) ++ /* Assumed-size Cray pointees need to be treated as AS_EXPLICIT. */ ++ array_type tmp = sym->as->type; ++ if (tmp == AS_ASSUMED_SIZE && sym->as->cp_was_assumed) ++ tmp = AS_EXPLICIT; ++ switch (tmp) + { + case AS_EXPLICIT: + if (sym->attr.dummy || sym->attr.result) +new file mode 100644 +index 0000000..5b274cf +--- /dev/null ++++ b/gcc/testsuite/gfortran.dg/PR49268.f90 +@@ -0,0 +1,51 @@ ++! { dg-do run } ++! { dg-options "-fcray-pointer" } ++ ++! Test the fix for a runtime error ++! Contributed by Mike Kumbera <kumbera1@llnl.gov> ++ ++ program bob ++ implicit none ++ integer*8 ipfoo ++ integer n,m,i,j ++ real*8 foo ++ ++ common /ipdata/ ipfoo ++ common /ipsize/ n,m ++ POINTER ( ipfoo, foo(3,7) ) ++ ++ n=3 ++ m=7 ++ ++ ipfoo=malloc(8*n*m) ++ do i=1,n ++ do j=1,m ++ foo(i,j)=1.d0 ++ end do ++ end do ++ call use_foo() ++ end program bob ++ ++ ++ subroutine use_foo() ++ implicit none ++ integer n,m,i,j ++ integer*8 ipfoo ++ common /ipdata/ ipfoo ++ common /ipsize/ n,m ++ real*8 foo,boo ++ ++ !fails if * is the last dimension ++ POINTER ( ipfoo, foo(n,*) ) ++ ++ !works if the last dimension is specified ++ !POINTER ( ipfoo, foo(n,m) ) ++ boo=0.d0 ++ do i=1,n ++ do j=1,m ++ boo=foo(i,j)+1.0 ++ if (abs (boo - 2.0) .gt. 1e-6) call abort ++ end do ++ end do ++ ++ end subroutine use_foo +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0397-config-rs6000-rs6000.h-REG_CLASS_CONTENTS-Remove-vr0.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0397-config-rs6000-rs6000.h-REG_CLASS_CONTENTS-Remove-vr0.patch new file mode 100644 index 000000000..f16dfa26d --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0397-config-rs6000-rs6000.h-REG_CLASS_CONTENTS-Remove-vr0.patch @@ -0,0 +1,23 @@ +From 0cfb433f886da255a687e7f6fea53257a0710196 Mon Sep 17 00:00:00 2001 +From: pthaugen <pthaugen@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 6 Jun 2011 19:12:57 +0000 +Subject: [PATCH] * config/rs6000/rs6000.h (REG_CLASS_CONTENTS): Remove vr0..vr2 from + NON_FLOAT_REGS. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174720 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 72b47ec..a8d4239 100644 +--- a/gcc/config/rs6000/rs6000.h ++++ b/gcc/config/rs6000/rs6000.h +@@ -1237,7 +1237,7 @@ enum reg_class + { 0xffffffff, 0x00000000, 0x0000000f, 0x00022000 }, /* SPEC_OR_GEN_REGS */ \ + { 0x00000000, 0x00000000, 0x00000010, 0x00000000 }, /* CR0_REGS */ \ + { 0x00000000, 0x00000000, 0x00000ff0, 0x00000000 }, /* CR_REGS */ \ +- { 0xffffffff, 0x00000000, 0x0000efff, 0x00020000 }, /* NON_FLOAT_REGS */ \ ++ { 0xffffffff, 0x00000000, 0x00000fff, 0x00020000 }, /* NON_FLOAT_REGS */ \ + { 0x00000000, 0x00000000, 0x00001000, 0x00000000 }, /* CA_REGS */ \ + { 0xffffffff, 0xffffffff, 0xffffffff, 0x0003ffff } /* ALL_REGS */ \ + } +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0398-PR-c-49298.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0398-PR-c-49298.patch new file mode 100644 index 000000000..777656a1c --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0398-PR-c-49298.patch @@ -0,0 +1,37 @@ +From f4e84e1c8443edee24be10cea492892f3621933a Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Mon, 6 Jun 2011 20:07:26 +0000 +Subject: [PATCH] PR c++/49298 + * semantics.c (potential_constant_expression_1): Handle FIELD_DECL. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174722 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d56423e..5cb8f49 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -7429,6 +7429,8 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) + case TEMPLATE_PARM_INDEX: + case TRAIT_EXPR: + case IDENTIFIER_NODE: ++ /* We can see a FIELD_DECL in a pointer-to-member expression. */ ++ case FIELD_DECL: + return true; + + case PARM_DECL: +new file mode 100644 +index 0000000..873000b +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/regress/ptrmem1.C +@@ -0,0 +1,9 @@ ++// PR c++/49298 ++// { dg-options -std=c++0x } ++ ++template <class T, int T::*> struct B { }; ++template <class T> struct A ++{ ++ int i; ++ B<A,&A::i> b; ++}; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0400-PR-gcov-profile-49299.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0400-PR-gcov-profile-49299.patch new file mode 100644 index 000000000..ac84e6a82 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0400-PR-gcov-profile-49299.patch @@ -0,0 +1,158 @@ +From a9093bc0aa135388aec0930c07f021c85c39dd93 Mon Sep 17 00:00:00 2001 +From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 7 Jun 2011 09:53:17 +0000 +Subject: [PATCH] PR gcov-profile/49299 + * value-prof.c (gimple_ic): Don't assume icall has + a fallthru edge. + + * gcc.dg/tree-prof/pr49299-1.c: New test. + * gcc.dg/tree-prof/pr49299-2.c: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174739 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 629f79a..8ee5730 100644 +new file mode 100644 +index 0000000..dd45baf +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/tree-prof/pr49299-1.c +@@ -0,0 +1,34 @@ ++/* { dg-options "-O2" } */ ++ ++__attribute__((noreturn)) void (*fn) (void); ++ ++volatile int v; ++ ++__attribute__((noreturn)) void ++fn0 (void) ++{ ++ __builtin_exit (0); ++} ++ ++__attribute__((noreturn)) void ++fn1 (void) ++{ ++ __builtin_exit (1); ++} ++ ++__attribute__((noinline, noclone)) void ++setfn (__attribute__((noreturn)) void (*x) (void)) ++{ ++ fn = x; ++} ++ ++int ++main () ++{ ++ int i; ++ if (v < 1) ++ setfn (fn0); ++ else ++ setfn (fn1); ++ fn (); ++} +diff --git a/gcc/testsuite/gcc.dg/tree-prof/pr49299-2.c b/gcc/testsuite/gcc.dg/tree-prof/pr49299-2.c +new file mode 100644 +index 0000000..220c8c8 +--- /dev/null ++++ b/gcc/testsuite/gcc.dg/tree-prof/pr49299-2.c +@@ -0,0 +1,34 @@ ++/* { dg-options "-O2" } */ ++ ++void (*fn) (void); ++ ++volatile int v; ++ ++__attribute__((noreturn)) void ++fn0 (void) ++{ ++ __builtin_exit (0); ++} ++ ++void ++fn1 (void) ++{ ++} ++ ++__attribute__((noinline, noclone)) void ++setfn (void (*x) (void)) ++{ ++ fn = x; ++} ++ ++int ++main () ++{ ++ int i; ++ if (v < 1) ++ setfn (fn0); ++ else ++ setfn (fn1); ++ fn (); ++ return 0; ++} +diff --git a/gcc/value-prof.c b/gcc/value-prof.c +index 8491c77..da7c0e5 100644 +--- a/gcc/value-prof.c ++++ b/gcc/value-prof.c +@@ -1104,9 +1104,9 @@ gimple_ic (gimple icall_stmt, struct cgraph_node *direct_call, + { + gimple dcall_stmt, load_stmt, cond_stmt; + tree tmp0, tmp1, tmpv, tmp; +- basic_block cond_bb, dcall_bb, icall_bb, join_bb; ++ basic_block cond_bb, dcall_bb, icall_bb, join_bb = NULL; + tree optype = build_pointer_type (void_type_node); +- edge e_cd, e_ci, e_di, e_dj, e_ij; ++ edge e_cd, e_ci, e_di, e_dj = NULL, e_ij; + gimple_stmt_iterator gsi; + int lp_nr; + +@@ -1153,12 +1153,19 @@ gimple_ic (gimple icall_stmt, struct cgraph_node *direct_call, + else + { + e_ij = find_fallthru_edge (icall_bb->succs); +- e_ij->probability = REG_BR_PROB_BASE; +- e_ij->count = all - count; +- e_ij = single_pred_edge (split_edge (e_ij)); ++ /* The indirect call might be noreturn. */ ++ if (e_ij != NULL) ++ { ++ e_ij->probability = REG_BR_PROB_BASE; ++ e_ij->count = all - count; ++ e_ij = single_pred_edge (split_edge (e_ij)); ++ } ++ } ++ if (e_ij != NULL) ++ { ++ join_bb = e_ij->dest; ++ join_bb->count = all; + } +- join_bb = e_ij->dest; +- join_bb->count = all; + + e_cd->flags = (e_cd->flags & ~EDGE_FALLTHRU) | EDGE_TRUE_VALUE; + e_cd->probability = prob; +@@ -1170,12 +1177,15 @@ gimple_ic (gimple icall_stmt, struct cgraph_node *direct_call, + + remove_edge (e_di); + +- e_dj = make_edge (dcall_bb, join_bb, EDGE_FALLTHRU); +- e_dj->probability = REG_BR_PROB_BASE; +- e_dj->count = count; ++ if (e_ij != NULL) ++ { ++ e_dj = make_edge (dcall_bb, join_bb, EDGE_FALLTHRU); ++ e_dj->probability = REG_BR_PROB_BASE; ++ e_dj->count = count; + +- e_ij->probability = REG_BR_PROB_BASE; +- e_ij->count = all - count; ++ e_ij->probability = REG_BR_PROB_BASE; ++ e_ij->count = all - count; ++ } + + /* Insert PHI node for the call result if necessary. */ + if (gimple_call_lhs (icall_stmt) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0401-PR-c-48780.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0401-PR-c-48780.patch new file mode 100644 index 000000000..d896acf60 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0401-PR-c-48780.patch @@ -0,0 +1,63 @@ +From 06d3ff4b37b05f4f4f2295222ae3d2818eb8232b Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Tue, 7 Jun 2011 15:12:15 +0000 +Subject: [PATCH] PR c++/48780 + * typeck.c (perform_integral_promotions): Don't promote scoped enums. + * call.c (convert_arg_to_ellipsis): Promote them here in old ABI. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174753 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 246fb6d..7019da9 100644 +--- a/gcc/cp/call.c ++++ b/gcc/cp/call.c +@@ -5724,7 +5724,15 @@ convert_arg_to_ellipsis (tree arg) + else if (NULLPTR_TYPE_P (arg_type)) + arg = null_pointer_node; + else if (INTEGRAL_OR_ENUMERATION_TYPE_P (arg_type)) +- arg = perform_integral_promotions (arg); ++ { ++ if (SCOPED_ENUM_P (arg_type) && !abi_version_at_least (6)) ++ { ++ warning (OPT_Wabi, "scoped enum %qT will not promote to an " ++ "integral type in a future version of GCC", arg_type); ++ arg = cp_convert (ENUM_UNDERLYING_TYPE (arg_type), arg); ++ } ++ arg = perform_integral_promotions (arg); ++ } + + arg = require_complete_type (arg); + arg_type = TREE_TYPE (arg); +diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c +index 2022f0f..6214452 100644 +--- a/gcc/cp/typeck.c ++++ b/gcc/cp/typeck.c +@@ -1946,6 +1946,9 @@ perform_integral_promotions (tree expr) + if (!type || TREE_CODE (type) != ENUMERAL_TYPE) + type = TREE_TYPE (expr); + gcc_assert (INTEGRAL_OR_ENUMERATION_TYPE_P (type)); ++ /* Scoped enums don't promote. */ ++ if (SCOPED_ENUM_P (type)) ++ return expr; + promoted_type = type_promotes_to (type); + if (type != promoted_type) + expr = cp_convert (promoted_type, expr); +new file mode 100644 +index 0000000..acdd86c +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/enum19.C +@@ -0,0 +1,12 @@ ++// We shouldn't give an ABI warning about promotion in switch. ++// { dg-options "-std=c++0x -fabi-version=5 -Wabi" } ++ ++enum class Foo { X }; ++void test(Foo val) ++{ ++ switch(val) ++ { ++ case Foo::X: ++ break; ++ } ++}; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0403-PR-target-49238.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0403-PR-target-49238.patch new file mode 100644 index 000000000..d43c6357e --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0403-PR-target-49238.patch @@ -0,0 +1,53 @@ +From 097c985ab5f847fba2fe4f9e53732b75f2ecf266 Mon Sep 17 00:00:00 2001 +From: kkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 8 Jun 2011 04:07:25 +0000 +Subject: [PATCH] PR target/49238 + * config/sh/sh.c (expand_cbranchdi4): Use a scratch register if + needed when original operands are used for msw_skip comparison. + * gcc.c-torture/compile/pr49238.c: New. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174793 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 05acb0a..ee80028 100644 +--- a/gcc/config/sh/sh.c ++++ b/gcc/config/sh/sh.c +@@ -2187,6 +2187,13 @@ expand_cbranchdi4 (rtx *operands, enum rtx_code comparison) + { + operands[1] = op1h; + operands[2] = op2h; ++ if (reload_completed ++ && ! arith_reg_or_0_operand (op2h, SImode) ++ && (true_regnum (op1h) || (comparison != EQ && comparison != NE))) ++ { ++ emit_move_insn (scratch, operands[2]); ++ operands[2] = scratch; ++ } + } + + operands[3] = skip_label = gen_label_rtx (); +new file mode 100644 +index 0000000..fd8443a +--- /dev/null ++++ b/gcc/testsuite/gcc.c-torture/compile/pr49238.c +@@ -0,0 +1,18 @@ ++/* PR target/49238 */ ++extern int bar (void); ++ ++void ++foo (unsigned long long a, int b) ++{ ++ int i; ++ ++ if (b) ++ for (a = -12; a >= 10; a = bar ()) ++ break; ++ else ++ return; ++ ++ for (i = 0; i < 10; i += 10) ++ if ((i == bar ()) | (bar () >= a)) ++ bar (); ++} +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0404-Support-unknown-Intel-family-0x6-CPUs.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0404-Support-unknown-Intel-family-0x6-CPUs.patch new file mode 100644 index 000000000..df628a76e --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0404-Support-unknown-Intel-family-0x6-CPUs.patch @@ -0,0 +1,48 @@ +From d70a1b2dbd4a959f37b5e3b3b4ca297960ac31fa Mon Sep 17 00:00:00 2001 +From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 8 Jun 2011 13:50:59 +0000 +Subject: [PATCH] Support unknown Intel family 0x6 CPUs. + +2011-06-08 H.J. Lu <hongjiu.lu@intel.com> + + Backport from mainline + 2011-06-08 H.J. Lu <hongjiu.lu@intel.com> + + * config/i386/driver-i386.c (host_detect_local_cpu): Support + unknown Intel family 0x6 CPUs. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174810 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 4fc6b45..985a6ff 100644 +--- a/gcc/config/i386/driver-i386.c ++++ b/gcc/config/i386/driver-i386.c +@@ -587,9 +587,22 @@ const char *host_detect_local_cpu (int argc, const char **argv) + default: + if (arch) + { +- if (has_ssse3) +- /* If it is an unknown CPU with SSSE3, assume Core 2. */ +- cpu = "core2"; ++ /* This is unknown family 0x6 CPU. */ ++ if (has_avx) ++ /* Assume Sandy Bridge. */ ++ cpu = "corei7-avx"; ++ else if (has_sse4_2) ++ /* Assume Core i7. */ ++ cpu = "corei7"; ++ else if (has_ssse3) ++ { ++ if (has_movbe) ++ /* Assume Atom. */ ++ cpu = "atom"; ++ else ++ /* Assume Core 2. */ ++ cpu = "core2"; ++ } + else if (has_sse3) + /* It is Core Duo. */ + cpu = "pentium-m"; +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0406-config-sparc-sparc.md-return_internal-Adjust-length-.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0406-config-sparc-sparc.md-return_internal-Adjust-length-.patch new file mode 100644 index 000000000..c7a0df5e0 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0406-config-sparc-sparc.md-return_internal-Adjust-length-.patch @@ -0,0 +1,24 @@ +From 3a73dbd964bf9e608856fef233e9a2639155c7a7 Mon Sep 17 00:00:00 2001 +From: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Thu, 9 Jun 2011 19:50:46 +0000 +Subject: [PATCH] * config/sparc/sparc.md (return_internal): Adjust 'length' attribute. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174856 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 5e16179..1ff599d 100644 +--- a/gcc/config/sparc/sparc.md ++++ b/gcc/config/sparc/sparc.md +@@ -6322,9 +6322,7 @@ + (if_then_else (eq_attr "isa" "v9") + (const_int 2) + (const_int 3)) +- (if_then_else (eq_attr "isa" "v9") +- (const_int 3) +- (const_int 4))) ++ (const_int 4)) + (eq_attr "empty_delay_slot" "true") + (if_then_else (eq_attr "delayed_branch" "true") + (const_int 2) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0408-semantics.c-potential_constant_expression_1-Handle-d.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0408-semantics.c-potential_constant_expression_1-Handle-d.patch new file mode 100644 index 000000000..0c23053d9 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0408-semantics.c-potential_constant_expression_1-Handle-d.patch @@ -0,0 +1,35 @@ +From 8c66e45c90175c237c15b91b6fc5b9097f257c08 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 10 Jun 2011 04:23:26 +0000 +Subject: [PATCH] * semantics.c (potential_constant_expression_1): Handle destructor + call. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174887 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 5cb8f49..7e62b61 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -7703,6 +7703,12 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) + want_rval = true; + goto binary; + ++ case BIT_NOT_EXPR: ++ /* A destructor. */ ++ if (TYPE_P (TREE_OPERAND (t, 0))) ++ return true; ++ /* else fall through. */ ++ + case REALPART_EXPR: + case IMAGPART_EXPR: + case CONJ_EXPR: +@@ -7711,7 +7717,6 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) + case FLOAT_EXPR: + case NEGATE_EXPR: + case ABS_EXPR: +- case BIT_NOT_EXPR: + case TRUTH_NOT_EXPR: + case FIXED_CONVERT_EXPR: + case UNARY_PLUS_EXPR: +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0409-semantics.c-finish_compound_literal-Set-TREE_HAS_CON.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0409-semantics.c-finish_compound_literal-Set-TREE_HAS_CON.patch new file mode 100644 index 000000000..d92921c4f --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0409-semantics.c-finish_compound_literal-Set-TREE_HAS_CON.patch @@ -0,0 +1,22 @@ +From 02526060d4af8f71d4a8fd527fd5d57e85023f32 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 10 Jun 2011 04:23:34 +0000 +Subject: [PATCH] * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174888 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 7e62b61..cc775b3 100644 +--- a/gcc/cp/semantics.c ++++ b/gcc/cp/semantics.c +@@ -2329,6 +2329,8 @@ finish_compound_literal (tree type, tree compound_literal) + if (TREE_CODE (type) == ARRAY_TYPE) + cp_complete_array_type (&type, compound_literal, false); + compound_literal = digest_init (type, compound_literal); ++ if (TREE_CODE (compound_literal) == CONSTRUCTOR) ++ TREE_HAS_CONSTRUCTOR (compound_literal) = true; + /* Put static/constant array temporaries in static variables, but always + represent class temporaries with TARGET_EXPR so we elide copies. */ + if ((!at_function_scope_p () || CP_TYPE_CONST_P (type)) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0410-lib-target-supports.exp.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0410-lib-target-supports.exp.patch new file mode 100644 index 000000000..ae3e16cef --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0410-lib-target-supports.exp.patch @@ -0,0 +1,34 @@ +From 5aac027a2e060e22e5fd400e57c021ef0e82fe4c Mon Sep 17 00:00:00 2001 +From: janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 10 Jun 2011 18:26:28 +0000 +Subject: [PATCH] * lib/target-supports.exp + (check_effective_target_arm_neon_fp16_ok_nocache): Return 0 if + multilib flags use -mfpu with a value other than neon-fp16. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174921 138bc75d-0d04-0410-961f-82ee72b054a4 + +index d2c6fff..a1d94d9 100644 +--- a/gcc/testsuite/lib/target-supports.exp ++++ b/gcc/testsuite/lib/target-supports.exp +@@ -1941,7 +1941,7 @@ proc add_options_for_arm_neon_fp16 { flags } { + } + + # Return 1 if this is an ARM target supporting -mfpu=neon-fp16 +-# -mfloat-abi=softfp or equivalent options. Some multilibs may be ++# -mfloat-abi=softfp or equivalent options. Skip multilibs that are + # incompatible with these options. Also set et_arm_neon_flags to the + # best options to add. + +@@ -1949,6 +1949,9 @@ proc check_effective_target_arm_neon_fp16_ok_nocache { } { + global et_arm_neon_fp16_flags + set et_arm_neon_fp16_flags "" + if { [check_effective_target_arm32] } { ++ if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "-mfpu=neon-fp16*" } ]] { ++ return 0 ++ } + # Always add -mfpu=neon-fp16, since there is no preprocessor + # macro for FP16 support. + foreach flags {"-mfpu=neon-fp16" "-mfpu=neon-fp16 -mfloat-abi=softfp"} { +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0411-gcc-testsuite-gcc.target-arm-20090811-1.c-Skip-for-i.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0411-gcc-testsuite-gcc.target-arm-20090811-1.c-Skip-for-i.patch new file mode 100644 index 000000000..c0c21cc6a --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0411-gcc-testsuite-gcc.target-arm-20090811-1.c-Skip-for-i.patch @@ -0,0 +1,79 @@ +From 402f14acd8d298bc8d11cd77fd6e60780903e1b1 Mon Sep 17 00:00:00 2001 +From: janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Fri, 10 Jun 2011 18:28:18 +0000 +Subject: [PATCH] * gcc/testsuite/gcc.target/arm/20090811-1.c: Skip for incompatible + options, do not override other options. + * gcc/testsuite/gcc.target/arm/combine-cmp-shift.c: Skip for + incompatible options. + * gcc/testsuite/gcc.target/arm/pr45094.c: Likewise. + * gcc/testsuite/gcc.target/arm/scd42-1.c: Likewise. + * gcc/testsuite/gcc.target/arm/scd42-3.c: Likewise. + * gcc/testsuite/gcc.target/arm/thumb-ltu.c: Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174923 138bc75d-0d04-0410-961f-82ee72b054a4 + +index bc0dc93..d820601 100644 +--- a/gcc/testsuite/gcc.target/arm/20090811-1.c ++++ b/gcc/testsuite/gcc.target/arm/20090811-1.c +@@ -1,4 +1,7 @@ + /* { dg-do compile } */ ++/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv7-a" } } */ ++/* { dg-skip-if "do not override -mcpu" { *-*-* } { "-mcpu=*" } { "-mcpu=cortex-a8" } } */ ++/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */ + /* { dg-options "-O3 -mcpu=cortex-a8 -mfpu=vfp3 -mfloat-abi=softfp" } */ + + typedef struct cb +diff --git a/gcc/testsuite/gcc.target/arm/combine-cmp-shift.c b/gcc/testsuite/gcc.target/arm/combine-cmp-shift.c +index 1cacc29..a64f20e 100644 +--- a/gcc/testsuite/gcc.target/arm/combine-cmp-shift.c ++++ b/gcc/testsuite/gcc.target/arm/combine-cmp-shift.c +@@ -1,3 +1,4 @@ ++/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv7-a" } } */ + /* { dg-options "-O2 -mcpu=cortex-a8" } */ + /* { dg-final { scan-assembler "cmp\tr\[0-9\]*, r\[0-9\]*, asr #31" } } */ + +diff --git a/gcc/testsuite/gcc.target/arm/pr45094.c b/gcc/testsuite/gcc.target/arm/pr45094.c +index 05f16d8..f35e7bb 100644 +--- a/gcc/testsuite/gcc.target/arm/pr45094.c ++++ b/gcc/testsuite/gcc.target/arm/pr45094.c +@@ -1,4 +1,5 @@ + /* { dg-do run } */ ++/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv7-a" } } */ + /* { dg-require-effective-target arm_neon_hw } */ + /* { dg-options "-O2 -mcpu=cortex-a8" } */ + /* { dg-add-options arm_neon } */ +diff --git a/gcc/testsuite/gcc.target/arm/scd42-1.c b/gcc/testsuite/gcc.target/arm/scd42-1.c +index e02a898..2cd1eeb 100644 +--- a/gcc/testsuite/gcc.target/arm/scd42-1.c ++++ b/gcc/testsuite/gcc.target/arm/scd42-1.c +@@ -1,5 +1,6 @@ + /* Verify that mov is preferred on XScale for loading a 1 byte constant. */ + /* { dg-do compile } */ ++/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "" } } */ + /* { dg-options "-mcpu=xscale -O" } */ + + unsigned load1(void) __attribute__ ((naked)); +diff --git a/gcc/testsuite/gcc.target/arm/scd42-3.c b/gcc/testsuite/gcc.target/arm/scd42-3.c +index b2e6666..d1d07b0 100644 +--- a/gcc/testsuite/gcc.target/arm/scd42-3.c ++++ b/gcc/testsuite/gcc.target/arm/scd42-3.c +@@ -1,5 +1,6 @@ + /* Verify that ldr is preferred on XScale for loading a 3 or 4 byte constant. */ + /* { dg-do compile } */ ++/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "" } } */ + /* { dg-options "-mcpu=xscale -O" } */ + + unsigned load4(void) __attribute__ ((naked)); +diff --git a/gcc/testsuite/gcc.target/arm/thumb-ltu.c b/gcc/testsuite/gcc.target/arm/thumb-ltu.c +index 899b8d2..2467121 100644 +--- a/gcc/testsuite/gcc.target/arm/thumb-ltu.c ++++ b/gcc/testsuite/gcc.target/arm/thumb-ltu.c +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv6" "-march=armv6j" "-march=armv6z" } } */ + /* { dg-options "-mcpu=arm1136jf-s -mthumb -O2" } */ + + void f(unsigned a, unsigned b, unsigned c, unsigned d) +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0413-config-i386-sse.md-vec_dupv4sf-Correct-mode-of-force.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0413-config-i386-sse.md-vec_dupv4sf-Correct-mode-of-force.patch new file mode 100644 index 000000000..983b4d443 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0413-config-i386-sse.md-vec_dupv4sf-Correct-mode-of-force.patch @@ -0,0 +1,50 @@ +From f3bc59535b5f2f6c0eb0ac46d3cbc0ffed8249f3 Mon Sep 17 00:00:00 2001 +From: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat, 11 Jun 2011 12:06:31 +0000 +Subject: [PATCH] * config/i386/sse.md (vec_dupv4sf): Correct mode of forced register. + (*vec_dupv2df): Rename from vec_dupv2df. + (vec_dupv2df): New expander. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174950 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 0e03dd4..12b307a 100644 +--- a/gcc/config/i386/sse.md ++++ b/gcc/config/i386/sse.md +@@ -3816,7 +3816,7 @@ + "TARGET_SSE" + { + if (!TARGET_AVX) +- operands[1] = force_reg (V4SFmode, operands[1]); ++ operands[1] = force_reg (SFmode, operands[1]); + }) + + (define_insn "*vec_dupv4sf_avx" +@@ -5117,6 +5117,16 @@ + (set_attr "length_immediate" "*,*,*,1,*,*") + (set_attr "mode" "DF,V1DF,V1DF,V2DF,V1DF,V1DF")]) + ++(define_expand "vec_dupv2df" ++ [(set (match_operand:V2DF 0 "register_operand" "") ++ (vec_duplicate:V2DF ++ (match_operand:DF 1 "nonimmediate_operand" "")))] ++ "TARGET_SSE2" ++{ ++ if (!TARGET_SSE3) ++ operands[1] = force_reg (DFmode, operands[1]); ++}) ++ + (define_insn "*vec_dupv2df_sse3" + [(set (match_operand:V2DF 0 "register_operand" "=x") + (vec_duplicate:V2DF +@@ -5127,7 +5137,7 @@ + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "DF")]) + +-(define_insn "vec_dupv2df" ++(define_insn "*vec_dupv2df" + [(set (match_operand:V2DF 0 "register_operand" "=x") + (vec_duplicate:V2DF + (match_operand:DF 1 "register_operand" "0")))] +-- +1.7.0.4 + diff --git a/meta/recipes-devtools/gcc/gcc-4_6-branch-backports.inc b/meta/recipes-devtools/gcc/gcc-4_6-branch-backports.inc index 38669790a..34a348d3b 100644 --- a/meta/recipes-devtools/gcc/gcc-4_6-branch-backports.inc +++ b/meta/recipes-devtools/gcc/gcc-4_6-branch-backports.inc @@ -157,4 +157,172 @@ GCC-4_6-BRANCH-BACKPORTS = "file://gcc-4_6-branch-backports/0002-Backport-from-m file://gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch \ file://gcc-4_6-branch-backports/0196-Backport-4.7-patchtes-to-4.6.patch \ file://gcc-4_6-branch-backports/0198-2011-04-29-Tobias-Burnus-burnus-net-b.de.patch \ - file://gcc-4_6-branch-backports/0199-2011-04-29-Paolo-Carlini-paolo.carlini-oracle.com.patch" + file://gcc-4_6-branch-backports/0199-2011-04-29-Paolo-Carlini-paolo.carlini-oracle.com.patch \ + file://gcc-4_6-branch-backports/0201-PR-tree-optimization-48809.patch \ + file://gcc-4_6-branch-backports/0202-2011-04-30-Paul-Thomas-pault-gcc.gnu.org.patch \ + file://gcc-4_6-branch-backports/0203-2011-04-30-Jerry-DeLisle-jvdelisle-gcc.gnu.org.patch \ + file://gcc-4_6-branch-backports/0205-2011-04-30-Doug-Kwan-dougkwan-google.com.patch \ + file://gcc-4_6-branch-backports/0207-Backport-from-mainline.patch \ + file://gcc-4_6-branch-backports/0209-PR-target-48723.patch \ + file://gcc-4_6-branch-backports/0210-2011-05-03-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0211-PR-target-48774.patch \ + file://gcc-4_6-branch-backports/0212-2011-05-03-Paolo-Carlini-paolo.carlini-oracle.com.patch \ + file://gcc-4_6-branch-backports/0214-include-ext-sso_string_base.h-__sso_string_base-_M_c.patch \ + file://gcc-4_6-branch-backports/0215-config-i386-i386.md-movdi_internal_rex64-TYPE_SSEMOV.patch \ + file://gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch \ + file://gcc-4_6-branch-backports/0218-PR-c-48749.patch \ + file://gcc-4_6-branch-backports/0219-Backport-from-mainline.patch \ + file://gcc-4_6-branch-backports/0220-gcc.patch \ + file://gcc-4_6-branch-backports/0221-PR-ada-48844.patch \ + file://gcc-4_6-branch-backports/0222-PR-c-40975.patch \ + file://gcc-4_6-branch-backports/0223-Add-missing-break-for-OPT_mfpu_-case.patch \ + file://gcc-4_6-branch-backports/0224-2011-05-06-Jonathan-Wakely-jwakely.gcc-gmail.com.patch \ + file://gcc-4_6-branch-backports/0226-Fix-PR-c-48838.patch \ + file://gcc-4_6-branch-backports/0227-PR-fortran-48894.patch \ + file://gcc-4_6-branch-backports/0228-2011-05-06-Ramana-Radhakrishnan-ramana.radhakrishnan.patch \ + file://gcc-4_6-branch-backports/0229-2011-05-06-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch \ + file://gcc-4_6-branch-backports/0230-PR-target-48900.patch \ + file://gcc-4_6-branch-backports/0231-config-i386-i386.md-movdf_internal_nointeger-Apply.patch \ + file://gcc-4_6-branch-backports/0232-PR-c-48089.patch \ + file://gcc-4_6-branch-backports/0233-PR-c-48446.patch \ + file://gcc-4_6-branch-backports/0234-PR-c-48911.patch \ + file://gcc-4_6-branch-backports/0235-PR-c-48909.patch \ + file://gcc-4_6-branch-backports/0239-var-tracking.c-find_mem_expr_in_1pdv-Fix-thinko.patch \ + file://gcc-4_6-branch-backports/0240-Fix-PR-c-48574.patch \ + file://gcc-4_6-branch-backports/0241-2011-05-09-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch \ + file://gcc-4_6-branch-backports/0242-2011-05-09-Paolo-Carlini-paolo.carlini-oracle.com.patch \ + file://gcc-4_6-branch-backports/0244-PR-tree-optimization-48611.patch \ + file://gcc-4_6-branch-backports/0245-Backported-from-mainline.patch \ + file://gcc-4_6-branch-backports/0246-config-rx-rx.h-JUMP_ALIGN-LABEL_ALIGN-LOOP_ALIGN-Def.patch \ + file://gcc-4_6-branch-backports/0248-config-rx-rx.c-rx_memory_move_cost-Reduce-the-cost-f.patch \ + file://gcc-4_6-branch-backports/0249-Fix-PRs-48857-48495.patch \ + file://gcc-4_6-branch-backports/0251-gcc-cp-ChangeLog.patch \ + file://gcc-4_6-branch-backports/0252-PR-debug-48159.patch \ + file://gcc-4_6-branch-backports/0253-2011-05-11-Tobias-Burnus-burnus-net-b.de.patch \ + file://gcc-4_6-branch-backports/0255-pt.c-build_non_dependent_expr-Don-t-check-null_ptr_c.patch \ + file://gcc-4_6-branch-backports/0256-config-rx-rx.h-HAVE_PRE_DECREMENT-Fix-typo.patch \ + file://gcc-4_6-branch-backports/0257-zh_CN.po-Update.patch \ + file://gcc-4_6-branch-backports/0258-PR-debug-48967.patch \ + file://gcc-4_6-branch-backports/0259-2011-05-12-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0260-PR-tree-optimization-48975.patch \ + file://gcc-4_6-branch-backports/0263-zh_CN.po-Update.patch \ + file://gcc-4_6-branch-backports/0266-config-i386-i386.md-movxf_internal-Disable-CONST_DOU.patch \ + file://gcc-4_6-branch-backports/0267-PR-preprocessor-48677.patch \ + file://gcc-4_6-branch-backports/0269-PR-target-48986.patch \ + file://gcc-4_6-branch-backports/0270-config-rx-rx.md-Add-peephole-to-remove-redundant-ext.patch \ + file://gcc-4_6-branch-backports/0271-config-rx-rx.c-rx_memory_move_cost-Include-cost-of-r.patch \ + file://gcc-4_6-branch-backports/0273-PR-tree-optimization-49000.patch \ + file://gcc-4_6-branch-backports/0274-PR-tree-optimization-49000.patch \ + file://gcc-4_6-branch-backports/0275-2011-05-18-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0277-2011-05-18-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0278-PR-tree-optimization-49039.patch \ + file://gcc-4_6-branch-backports/0279-Properly-handle-256bit-load-cast.patch \ + file://gcc-4_6-branch-backports/0281-PR-c-48869.patch \ + file://gcc-4_6-branch-backports/0282-gcc.c-torture-execute-960321-1.x-Remove.patch \ + file://gcc-4_6-branch-backports/0283-zh_CN.po-Update.patch \ + file://gcc-4_6-branch-backports/0284-PR-c-49043.patch \ + file://gcc-4_6-branch-backports/0285-2011-05-19-Uros-Bizjak-ubizjak-gmail.com.patch \ + file://gcc-4_6-branch-backports/0287-PR-tree-optimization-49073.patch \ + file://gcc-4_6-branch-backports/0288-2011-05-20-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0289-PR-bootstrap-49086.patch \ + file://gcc-4_6-branch-backports/0290-PR-c-48873.patch \ + file://gcc-4_6-branch-backports/0291-PR-c-48736.patch \ + file://gcc-4_6-branch-backports/0292-PR-c-48745.patch \ + file://gcc-4_6-branch-backports/0293-semantics.c-register_constexpr_fundef-Add-to-hash-ta.patch \ + file://gcc-4_6-branch-backports/0294-semantics.c-validate_constexpr_fundecl-Check-DECL_TE.patch \ + file://gcc-4_6-branch-backports/0295-PR-c-48948.patch \ + file://gcc-4_6-branch-backports/0296-DR-1073.patch \ + file://gcc-4_6-branch-backports/0298-In-gcc-objc.patch \ + file://gcc-4_6-branch-backports/0299-PR-c-49066.patch \ + file://gcc-4_6-branch-backports/0300-config-sparc-sparc.c-eligible_for_return_delay-Do-no.patch \ + file://gcc-4_6-branch-backports/0301-config-sparc-sparc.md-setjmp-Handle-PIC-mode-and-use.patch \ + file://gcc-4_6-branch-backports/0303-PR-c-48780.patch \ + file://gcc-4_6-branch-backports/0304-PR-c-48945.patch \ + file://gcc-4_6-branch-backports/0305-PR-middle-end-49029.patch \ + file://gcc-4_6-branch-backports/0306-PR-target-49104.patch \ + file://gcc-4_6-branch-backports/0307-config.gcc-sparc-elf-Add-sparc-t-crtin.patch \ + file://gcc-4_6-branch-backports/0308-PR-c-48647.patch \ + file://gcc-4_6-branch-backports/0309-2011-05-22-Jonathan-Wakely-jwakely.gcc-gmail.com.patch \ + file://gcc-4_6-branch-backports/0311-PR-middle-end-48973.patch \ + file://gcc-4_6-branch-backports/0312-PR-c-49120.patch \ + file://gcc-4_6-branch-backports/0313-PR-debug-49032.patch \ + file://gcc-4_6-branch-backports/0314-PR-lto-49123.patch \ + file://gcc-4_6-branch-backports/0316-Always-add-mno-XXX-for-march-native.patch \ + file://gcc-4_6-branch-backports/0317-PR-target-49133.patch \ + file://gcc-4_6-branch-backports/0318-config-sparc-sparc.c-sparc_option_override-If-not-se.patch \ + file://gcc-4_6-branch-backports/0320-PR-c-48617.patch \ + file://gcc-4_6-branch-backports/0321-PR-c-47544.patch \ + file://gcc-4_6-branch-backports/0322-PR-c-47336.patch \ + file://gcc-4_6-branch-backports/0323-PR-c-47263.patch \ + file://gcc-4_6-branch-backports/0324-PR-c-49105.patch \ + file://gcc-4_6-branch-backports/0325-PR-c-48884.patch \ + file://gcc-4_6-branch-backports/0326-PR-c-49042.patch \ + file://gcc-4_6-branch-backports/0327-PR-c-49136.patch \ + file://gcc-4_6-branch-backports/0328-In-libobjc.patch \ + file://gcc-4_6-branch-backports/0329-2011-05-24-Paolo-Carlini-paolo.carlini-oracle.com.patch \ + file://gcc-4_6-branch-backports/0330-PR-tree-optimization-44897.patch \ + file://gcc-4_6-branch-backports/0331-PR-target-49128.patch \ + file://gcc-4_6-branch-backports/0332-PR-c-48292.patch \ + file://gcc-4_6-branch-backports/0333-PR-c-45080.patch \ + file://gcc-4_6-branch-backports/0334-PR-c-45418.patch \ + file://gcc-4_6-branch-backports/0335-PR-c-48935.patch \ + file://gcc-4_6-branch-backports/0336-gcc.target-arm-fp16-compile-none-1.c-Update-expected.patch \ + file://gcc-4_6-branch-backports/0337-PR-c-47184.patch \ + file://gcc-4_6-branch-backports/0338-PR-c-46696.patch \ + file://gcc-4_6-branch-backports/0339-PR-c-46245.patch \ + file://gcc-4_6-branch-backports/0340-PR-c-46145.patch \ + file://gcc-4_6-branch-backports/0341-PR-c-45698.patch \ + file://gcc-4_6-branch-backports/0342-PR-c-44311.patch \ + file://gcc-4_6-branch-backports/0343-gcc-cp-ChangeLog.patch \ + file://gcc-4_6-branch-backports/0344-2011-05-25-Paolo-Carlini-paolo.carlini-oracle.com.patch \ + file://gcc-4_6-branch-backports/0345-2011-05-25-Paolo-Carlini-paolo.carlini-oracle.com.patch \ + file://gcc-4_6-branch-backports/0347-PR-c-45401.patch \ + file://gcc-4_6-branch-backports/0348-PR-c-49156.patch \ + file://gcc-4_6-branch-backports/0349-PR-tree-optimization-49161.patch \ + file://gcc-4_6-branch-backports/0350-PR-c-49165.patch \ + file://gcc-4_6-branch-backports/0351-PR-target-44643.patch \ + file://gcc-4_6-branch-backports/0352-PR-c-48424.patch \ + file://gcc-4_6-branch-backports/0354-config-rs6000-rs6000.c-rs6000_register_move_cost-Mak.patch \ + file://gcc-4_6-branch-backports/0355-2011-05-26-Paul-Thomas-pault-gcc.gnu.org.patch \ + file://gcc-4_6-branch-backports/0357-PR-c-48657.patch \ + file://gcc-4_6-branch-backports/0358-PR-c-49165.patch \ + file://gcc-4_6-branch-backports/0359-PR-c-48284.patch \ + file://gcc-4_6-branch-backports/0360-PR-c-47277.patch \ + file://gcc-4_6-branch-backports/0362-PR-c-47049.patch \ + file://gcc-4_6-branch-backports/0364-2011-05-29-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0365-gcc.patch \ + file://gcc-4_6-branch-backports/0366-gcc.patch \ + file://gcc-4_6-branch-backports/0369-PR-target-45263.patch \ + file://gcc-4_6-branch-backports/0370-2011-05-30-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0371-PR-c-49223.patch \ + file://gcc-4_6-branch-backports/0373-2011-05-31-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0374-2011-05-31-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0375-Fix-fma4_fmsubadd-and-fma4_fmaddsub-mode-suffixes.patch \ + file://gcc-4_6-branch-backports/0376-2011-05-31-Thomas-Koenig-tkoenig-gcc.gnu.org.patch \ + file://gcc-4_6-branch-backports/0379-PR-tree-optimization-49093.patch \ + file://gcc-4_6-branch-backports/0380-2011-06-02-Steven-G.-Kargl-kargl-gcc.gnu.org.patch \ + file://gcc-4_6-branch-backports/0382-PR-c-49276.patch \ + file://gcc-4_6-branch-backports/0384-PR-tree-optimization-49038.patch \ + file://gcc-4_6-branch-backports/0385-PR-debug-47590.patch \ + file://gcc-4_6-branch-backports/0386-2011-06-04-Jonathan-Wakely-jwakely.gcc-gmail.com.patch \ + file://gcc-4_6-branch-backports/0388-PR-target-49186.patch \ + file://gcc-4_6-branch-backports/0389-config-sparc-sparc.c-output_return-Fix-thinko-in-the.patch \ + file://gcc-4_6-branch-backports/0391-PR-c-49134.patch \ + file://gcc-4_6-branch-backports/0392-2011-06-06-Richard-Guenther-rguenther-suse.de.patch \ + file://gcc-4_6-branch-backports/0393-2011-06-06-Mikael-Pettersson-mikpe-it.uu.se.patch \ + file://gcc-4_6-branch-backports/0394-2011-06-06-Andreas-Krebbel-Andreas.Krebbel-de.ibm.co.patch \ + file://gcc-4_6-branch-backports/0395-PR-c-49264.patch \ + file://gcc-4_6-branch-backports/0396-PR-fortran-49268.patch \ + file://gcc-4_6-branch-backports/0397-config-rs6000-rs6000.h-REG_CLASS_CONTENTS-Remove-vr0.patch \ + file://gcc-4_6-branch-backports/0398-PR-c-49298.patch \ + file://gcc-4_6-branch-backports/0400-PR-gcov-profile-49299.patch \ + file://gcc-4_6-branch-backports/0401-PR-c-48780.patch \ + file://gcc-4_6-branch-backports/0403-PR-target-49238.patch \ + file://gcc-4_6-branch-backports/0404-Support-unknown-Intel-family-0x6-CPUs.patch \ + file://gcc-4_6-branch-backports/0406-config-sparc-sparc.md-return_internal-Adjust-length-.patch \ + file://gcc-4_6-branch-backports/0408-semantics.c-potential_constant_expression_1-Handle-d.patch \ + file://gcc-4_6-branch-backports/0409-semantics.c-finish_compound_literal-Set-TREE_HAS_CON.patch \ + file://gcc-4_6-branch-backports/0410-lib-target-supports.exp.patch \ + file://gcc-4_6-branch-backports/0411-gcc-testsuite-gcc.target-arm-20090811-1.c-Skip-for-i.patch \ + file://gcc-4_6-branch-backports/0413-config-i386-sse.md-vec_dupv4sf-Correct-mode-of-force.patch" |