summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-09 08:58:02 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-09 08:58:02 +0000
commit9172ac9a5ea3e606d0b464ebd4beba0523d4d0bd (patch)
tree4b0d4dca2f06c192de56977cbd4207b74e1b0e53
parentb63c5ef2ef3d956959b995b7d4853527a7d1f66c (diff)
downloadgcc-9172ac9a5ea3e606d0b464ebd4beba0523d4d0bd.tar.gz
2012-01-09 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 182999 using svnmerge git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@183004 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog.MELT4
-rw-r--r--gcc/ChangeLog186
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in2
-rw-r--r--gcc/ada/ChangeLog39
-rw-r--r--gcc/ada/a-tienio.adb16
-rwxr-xr-xgcc/ada/a-wichha.ads5
-rw-r--r--gcc/ada/a-wichun.ads3
-rwxr-xr-xgcc/ada/a-zchhan.ads5
-rwxr-xr-xgcc/ada/a-zchuni.ads3
-rw-r--r--gcc/ada/gnat_rm.texi8
-rw-r--r--gcc/ada/s-rpc.ads6
-rwxr-xr-xgcc/ada/s-utf_32.adb15
-rwxr-xr-xgcc/ada/s-utf_32.ads3
-rw-r--r--gcc/ada/sem_ch12.adb8
-rw-r--r--gcc/ada/sem_ch3.adb29
-rw-r--r--gcc/ada/sem_ch4.adb4
-rw-r--r--gcc/ada/sem_prag.adb2
-rw-r--r--gcc/ada/sinfo.adb16
-rw-r--r--gcc/ada/sinfo.ads15
-rw-r--r--gcc/bb-reorder.c7
-rw-r--r--gcc/builtin-attrs.def3
-rw-r--r--gcc/c-decl.c11
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c.opt16
-rw-r--r--gcc/calls.c7
-rw-r--r--gcc/cfgloop.c1
-rw-r--r--gcc/cfgloopmanip.c11
-rw-r--r--gcc/cfgrtl.c47
-rw-r--r--gcc/cgraph.h2
-rw-r--r--gcc/cgraphunit.c4
-rw-r--r--gcc/common.opt21
-rw-r--r--gcc/config/ia64/ia64.c18
-rwxr-xr-xgcc/configure15
-rw-r--r--gcc/configure.ac10
-rw-r--r--gcc/cp/ChangeLog34
-rw-r--r--gcc/cp/cp-tree.h1
-rw-r--r--gcc/cp/error.c2
-rw-r--r--gcc/cp/mangle.c146
-rw-r--r--gcc/cp/operators.def7
-rw-r--r--gcc/cp/parser.c13
-rw-r--r--gcc/cp/pt.c2
-rw-r--r--gcc/cp/tree.c2
-rw-r--r--gcc/cppdefault.c9
-rw-r--r--gcc/cselib.c44
-rw-r--r--gcc/doc/cpp.texi4
-rw-r--r--gcc/fortran/ChangeLog38
-rw-r--r--gcc/fortran/expr.c16
-rw-r--r--gcc/fortran/libgfortran.h4
-rw-r--r--gcc/fortran/resolve.c33
-rw-r--r--gcc/fortran/trans-array.c40
-rw-r--r--gcc/fortran/trans-array.h9
-rw-r--r--gcc/fortran/trans-decl.c27
-rw-r--r--gcc/fortran/trans-expr.c10
-rw-r--r--gcc/fortran/trans-intrinsic.c6
-rw-r--r--gcc/fortran/trans-openmp.c6
-rw-r--r--gcc/fortran/trans-stmt.c168
-rw-r--r--gcc/fortran/trans.c144
-rw-r--r--gcc/fortran/trans.h9
-rw-r--r--gcc/gimple.h3
-rw-r--r--gcc/gimplify.c10
-rw-r--r--gcc/go/gofrontend/backend.h10
-rw-r--r--gcc/go/gofrontend/expressions.cc335
-rw-r--r--gcc/go/gofrontend/expressions.h86
-rw-r--r--gcc/go/gofrontend/go.cc3
-rw-r--r--gcc/go/gofrontend/gogo-tree.cc15
-rw-r--r--gcc/go/gofrontend/gogo.cc56
-rw-r--r--gcc/go/gofrontend/gogo.h44
-rw-r--r--gcc/go/gofrontend/runtime.def3
-rw-r--r--gcc/go/gofrontend/types.cc1005
-rw-r--r--gcc/go/gofrontend/types.h148
-rw-r--r--gcc/gtm-builtins.def2
-rw-r--r--gcc/ipa-cp.c5
-rw-r--r--gcc/ipa-inline-analysis.c76
-rw-r--r--gcc/ipa-inline.c71
-rw-r--r--gcc/lto-streamer-out.c1
-rw-r--r--gcc/lto/ChangeLog6
-rw-r--r--gcc/lto/lto-lang.c20
-rw-r--r--gcc/profile.c37
-rw-r--r--gcc/stmt.c13
-rw-r--r--gcc/testsuite/ChangeLog108
-rw-r--r--gcc/testsuite/ada/acats/overflow.lst1
-rw-r--r--gcc/testsuite/c-c++-common/pr51768.c25
-rw-r--r--gcc/testsuite/c-c++-common/tm/memcpy-1.c6
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle51.C27
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle52.C21
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle53.C13
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle54.C19
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle55.C14
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle56.C13
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle57.C16
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle58.C19
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle59.C19
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alias-decl-18.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/error7.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/trailing3.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic111.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic4.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic42.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/new5.C4
-rw-r--r--gcc/testsuite/g++.dg/template/nontype22.C2
-rw-r--r--gcc/testsuite/g++.dg/template/pr35240.C5
-rw-r--r--gcc/testsuite/g++.dg/torture/pr49309.C1
-rw-r--r--gcc/testsuite/g++.dg/torture/pr51600.C16
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr49710.c35
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr51694.c14
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr51761.c10
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr51767.c23
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20120105-1.c24
-rw-r--r--gcc/testsuite/gcc.dg/pr51762.c19
-rw-r--r--gcc/testsuite/gcc.dg/tm/memopt-6.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr51760.c19
-rw-r--r--gcc/testsuite/gcc.dg/tree-prof/pr44777.c43
-rw-r--r--gcc/testsuite/gcc.misc-tests/gcov-13.c1
-rw-r--r--gcc/testsuite/gcc.misc-tests/gcov-14.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/headmerge-2.c2
-rw-r--r--gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f9036
-rw-r--r--gcc/testsuite/gfortran.dg/coarray/subobject_1.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f9021
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f9023
-rw-r--r--gcc/testsuite/gfortran.dg/deallocate_stat.f904
-rw-r--r--gcc/testsuite/gfortran.dg/deallocate_stat_2.f9030
-rw-r--r--gcc/testsuite/gfortran.dg/lto/pr41576_0.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/lto/pr41576_1.f907
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_operator_8.f03560
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_operator_9.f03500
-rw-r--r--gcc/testsuite/go.test/test/cmp6.go38
-rw-r--r--gcc/testsuite/go.test/test/recover2.go1
-rw-r--r--gcc/toplev.c3
-rw-r--r--gcc/trans-mem.c20
-rw-r--r--gcc/tree-nomudflap.c2
-rw-r--r--gcc/tree-sra.c25
-rw-r--r--gcc/tree-ssa-ccp.c19
-rw-r--r--gcc/tree-streamer-in.c20
-rw-r--r--gcc/tree-streamer-out.c24
-rw-r--r--gcc/tree-vrp.c30
-rw-r--r--include/ChangeLog9
-rw-r--r--include/demangle.h5
-rw-r--r--libgcc/ChangeLog10
-rw-r--r--libgcc/config.host8
-rw-r--r--libgcc/config/ia64/t-ia6420
-rw-r--r--libgcc/config/ia64/t-ia64-elf20
-rw-r--r--libgfortran/ChangeLog8
-rw-r--r--libgfortran/caf/libcaf.h8
-rw-r--r--libgfortran/caf/mpi.c21
-rw-r--r--libgfortran/caf/single.c14
-rw-r--r--libgo/Makefile.am2
-rw-r--r--libgo/Makefile.in36
-rw-r--r--libgo/runtime/go-type-complex.c122
-rw-r--r--libgo/runtime/go-type-eface.c8
-rw-r--r--libgo/runtime/go-type-error.c6
-rw-r--r--libgo/runtime/go-type-float.c96
-rw-r--r--libgo/runtime/go-type-identity.c44
-rw-r--r--libgo/runtime/go-type-interface.c8
-rw-r--r--libgo/runtime/go-type-string.c12
-rw-r--r--libgo/runtime/go-type.h24
-rwxr-xr-xlibgo/testsuite/gotest6
-rw-r--r--libiberty/ChangeLog23
-rw-r--r--libiberty/cp-demangle.c282
-rw-r--r--libiberty/testsuite/demangle-expected53
-rw-r--r--libitm/ChangeLog36
-rw-r--r--libitm/beginend.cc6
-rw-r--r--libitm/config/generic/asmcfi.h9
-rw-r--r--libitm/config/linux/powerpc/futex_bits.h54
-rw-r--r--libitm/config/powerpc/cacheline.h42
-rw-r--r--libitm/config/powerpc/sjlj.S411
-rw-r--r--libitm/config/powerpc/target.h58
-rw-r--r--libitm/configure.tgt10
-rw-r--r--libitm/containers.h28
-rw-r--r--libitm/libitm_i.h35
-rw-r--r--libitm/local.cc70
-rw-r--r--libitm/method-gl.cc7
-rw-r--r--libitm/method-serial.cc6
-rw-r--r--libitm/testsuite/libitm.c/reentrant.c4
-rw-r--r--libstdc++-v3/ChangeLog6390
-rw-r--r--libstdc++-v3/ChangeLog-20116365
-rw-r--r--libstdc++-v3/doc/xml/manual/debug.xml24
-rw-r--r--libstdc++-v3/include/bits/hashtable.h2
-rw-r--r--libstdc++-v3/include/bits/hashtable_policy.h2
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/printers.py46
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc30
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc30
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc30
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc30
-rw-r--r--libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc2
-rw-r--r--libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc82
186 files changed, 12154 insertions, 7719 deletions
diff --git a/ChangeLog.MELT b/ChangeLog.MELT
index 287b8a0ad18..7d4adfd9685 100644
--- a/ChangeLog.MELT
+++ b/ChangeLog.MELT
@@ -1,4 +1,8 @@
+2012-01-09 Basile Starynkevitch <basile@starynkevitch.net>
+
+ MELT branch merged with trunk rev 182999 using svnmerge
+
2012-01-05 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 182904 using svnmerge
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index edaad12707e..01e160ceb04 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,172 @@
+2012-01-08 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimize/51680
+ * ipa-inline-analyss.c (evaluate_properties_for_edge): Fix conditoin on when
+ known_vals needs to be computed; cleanup.
+
+2012-01-08 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimize/51694
+ * ipa-cp.c (ipa_get_indirect_edge_target): Add bounds checks.
+
+2012-01-08 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/cpp.texi (Predefined Macros): __STRICT_ANSI__ is defined
+ for -std=c++98 and -std=c++11 too.
+
+2012-01-08 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * cfgloop.c (cancel_loop): Add free() of bbs array.
+
+2012-01-07 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/51600
+ * ipa-inline-analysis.c (estimate_edge_devirt_benefit): Disable code
+ that benefits small functions.
+
+2012-01-07 Jan Hubicka <jh@suse.cz>
+
+ * ipa-inline.c (want_inline_small_function_p): Fix formating.
+
+2012-01-07 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/51680
+ * ipa-inline.c (want_inline_small_function_p): Be more lax on functions
+ whose inlining reduce unit size.
+
+2012-01-07 Alexandre Oliva <aoliva@redhat.com>
+
+ PR bootstrap/51725
+ * cselib.c (new_elt_loc_list): Promote addr_list to canonical node.
+ Add canonical node to containing_mem chain after the non-canonical
+ one, even if there weren't any locs to propagate.
+ (remove_useless_values): Keep only canonical values.
+ (add_mem_for_addr, cselib_lookup_mem): Canonicalize addr.
+ (cselib_invalidate_mem): Likewise. Ensure v is canonical, and
+ canonicalize mem_chain elements that are not discarded.
+
+2012-01-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/47333
+ * cgraphunit.c (cgraph_optimize): Call output_weakrefs
+ before emitting functions.
+
+ PR gcov-profile/50127
+ * bb-reorder.c (partition_hot_cold_basic_blocks): Call
+ clear_aux_for_blocks.
+
+2012-01-06 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/51746
+ * cselib.c (cselib_hash_rtx): Hash incoming VALUEs too.
+
+2012-01-06 Arnaud Charlet <charlet@adacore.com>
+
+ * c-decl.c (ext_block): Moved up.
+ (collect_all_refs, for_each_global_decl): Take ext_block into account.
+
+2012-01-06 Han Shen <shenhan@google.com>
+
+ Translate built-in include paths for sysroot.
+ * Makefile.in (gcc_gxx_include_dir_add_sysroot): New.
+ (PREPROCESSOR_DEFINES): Define GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT.
+
+ * cppdefault.c (cpp_include_defaults): Replace hard coded "0" with
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT for "add_sysroot" field.
+
+ * configure.ac (AC_SUBST): Add gcc_gxx_include_dir_add_sysroot to
+ control whether sysroot should be prepended to gxx include dir.
+
+ * configure: Regenerate.
+
+2012-01-06 Torvald Riegel <triegel@redhat.com>
+
+ PR rtl-optimization/51771
+ * builtin-attrs.def (ATTR_RETURNS_TWICE, ATTR_TM_NOTHROW_RT_LIST):
+ New.
+ * gtm-builtins.def (BUILT_IN_TM_START): Add returns-twice attrib.
+
+2012-01-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/51315
+ * tree-sra.c (tree_non_aligned_mem_for_access_p): New predicate.
+ (build_accesses_from_assign): Use it instead of tree_non_aligned_mem_p.
+
+2012-01-05 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/51681
+ * config/ia64/ia64.c (expand_vec_perm_shrp): Use correct operands
+ for shrp pattern. Correctly handle and fixup shift variable.
+ Return false when shift > nelt for BYTES_BIG_ENDIAN target.
+
+2012-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/51762
+ * calls.c (emit_call_1): For noreturn calls force a REG_ARGS_SIZE
+ note when !ACCUMULATE_OUTGOING_ARGS.
+
+2012-01-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-vrp.c (extract_range_from_binary_expr_1): Remove duplicated
+ condition.
+ (extract_range_from_unary_expr_1): Avoid useless computations.
+
+2012-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/51767
+ * cfgrtl.c (force_nonfallthru_and_redirect): Force addition
+ of jump_block and add an extra edge for degenerated asm gotos.
+
+ PR middle-end/51768
+ * stmt.c (check_unique_operand_names): Don't ICE during error
+ reporting if i is from labels chain.
+
+ PR middle-end/44777
+ * profile.c (branch_prob): Split bbs that have exit edge
+ and need a fake entry edge too.
+
+2012-01-05 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/49710
+ * cfgloopmanip.c (remove_path): Walk loop hiearchy upwards when
+ unlooping loops.
+
+>>>>>>> .r182937
+2012-01-05 Richard Guenther <rguenther@suse.de>
+
+ PR lto/50490
+ * tree-streamer-out.c (write_ts_optimization): New function.
+ (streamer_write_tree_body): Call it.
+ * tree-streamer-in.c (lto_input_ts_optimization): New function.
+ (streamer_read_tree_body): Call it.
+ * lto-streamer-out.c (lto_is_streamable): Handle OPTIMIZATION_NODE.
+
+2012-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/51761
+ * gimple.h (struct gimplify_ctx): Add in_cleanup_point_expr field.
+ * gimplify.c (gimplify_cleanup_point_expr): Save and set
+ in_cleanup_point_expr before gimplify_stmt call and restore it
+ afterwards.
+ (gimplify_target_expr): Don't add {CLOBBER} cleanup if
+ in_cleanup_point_expr is false.
+
+2012-01-05 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/51764
+ * common.opt (Wmudflap, fmudflap, fmudflapth, fmudflapir): Move
+ to c.opt.
+ * toplev.c (process_options): Reject combining mudflap and LTO.
+ * tree-nomudflap.c (nogo): Use sorry instead of internal_error.
+
+2012-01-05 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/51760
+ * tree-ssa-ccp.c (likely_value): Drop UNDEFINED to CONSTANT,
+ not VARYING.
+ (bit_value_unop): Handle UNDEFINED operands.
+ (bit_value_binop): Likewise.
+
2012-01-05 Georg-Johann Lay <avr@gjlay.de>
* config/avr/avr.c (avr_replace_prefix): Remove.
@@ -76,6 +245,11 @@
2012-01-04 Aldy Hernandez <aldyh@redhat.com>
+ PR middle-end/51472
+ * trans-mem.c (expand_assign_tm): Handle TM_MEMMOVE loads correctly.
+
+2012-01-04 Aldy Hernandez <aldyh@redhat.com>
+
* opts.c (finish_options): Remove duplicate sorry.
2012-01-04 Aldy Hernandez <aldyh@redhat.com>
@@ -110,17 +284,15 @@
PR tree-optimization/49651
* tree-ssa-structalias.c (type_can_have_subvars): New function.
(var_can_have_subvars): Use it.
- (get_constraint_for_1): Only consider subfields if there
- can be any.
+ (get_constraint_for_1): Only consider subfields if there can be any.
2012-01-03 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/51725
- * cselib.c (new_elt_loc_list): When moving locs from one
- cselib_val to its new canonical_cselib_val and the
- cselib_val was in first_containing_mem chain, but
- the canonical_cselib_val was not, add the latter into the
- chain.
+ * cselib.c (new_elt_loc_list): When moving locs from one cselib_val
+ to its new canonical_cselib_val and the cselib_val was in
+ first_containing_mem chain, but the canonical_cselib_val was not,
+ add the latter into the chain.
(cselib_invalidate_mem): Compare canonical_cselib_val of
addr_list chain elt with v.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index e2fec2caccc..adfab7b9730 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20120105
+20120109
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index d65b093b90c..6ac45c4668d 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -618,6 +618,7 @@ gcc_tooldir = @gcc_tooldir@
build_tooldir = $(exec_prefix)/$(target_noncanonical)
# Directory in which the compiler finds target-independent g++ includes.
gcc_gxx_include_dir = @gcc_gxx_include_dir@
+gcc_gxx_include_dir_add_sysroot = @gcc_gxx_include_dir_add_sysroot@
# Directory to search for site-specific includes.
local_includedir = $(local_prefix)/include
includedir = $(prefix)/include
@@ -4084,6 +4085,7 @@ PREPROCESSOR_DEFINES = \
-DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
-DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \
-DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
+ -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \
-DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \
-DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
-DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 5e7685796a4..67905722c59 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,42 @@
+2012-01-06 Robert Dewar <dewar@adacore.com>
+
+ * a-wichha.ads, a-wichun.ads, a-zchhan.ads, a-zchuni.ads,
+ s-utf_32.ads: Add pragma Pure
+ * s-utf_32.adb: Suppress warnings on non-static constants (now
+ that this is Pure).
+
+2012-01-06 Bob Duff <duff@adacore.com>
+
+ * s-rpc.ads (Read, Write): Add overriding indicators.
+
+2012-01-06 Robert Dewar <dewar@adacore.com>
+
+ * gnat_rm.texi: Add documentation for conventions
+ Ada_Pass_By_Copy and Ada_Pass_By_Reference.
+
+2012-01-06 Gary Dismukes <dismukes@adacore.com>
+
+ * a-tienio.adb (Put): Add exception message on
+ raise statements. Remove unneeded blocks and object declarations.
+
+2012-01-06 Robert Dewar <dewar@adacore.com>
+
+ * sem_prag.adb: Minor reformatting.
+
+2012-01-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sinfo.ads, sinfo.adb (Has_Prefixed_Call): New flag to indicate
+ that a selected component within a generic unit has been resolved
+ as a prefixed call with local references.
+ * sem_ch3.adb (Is_Visible_Component): In an instance body a selected
+ component is always visible.
+ * sem_ch4.adb (Analyze_Selected_Component): If the node is a
+ prefixed call in an instance, do not look for visible components
+ of the type.
+ * sem_ch12.adb (Reset_Entity): If a selected component has resolved
+ to a prefixed call, mark the node accordingly when prefix and
+ selector are local references.
+
2012-01-02 Eric Botcazou <ebotcazou@adacore.com>
* gnatvsn.ads (Current_Year): Bump to 2012.
diff --git a/gcc/ada/a-tienio.adb b/gcc/ada/a-tienio.adb
index a643f87b3b1..1b9ab8bcd64 100644
--- a/gcc/ada/a-tienio.adb
+++ b/gcc/ada/a-tienio.adb
@@ -101,14 +101,10 @@ package body Ada.Text_IO.Enumeration_IO is
-- checks suppressed, which includes instantiated generics.
if not Item'Valid then
- raise Constraint_Error;
+ raise Constraint_Error with "invalid enumeration value";
end if;
- declare
- Image : constant String := Enum'Image (Item);
- begin
- Aux.Put (File, Image, Width, Set);
- end;
+ Aux.Put (File, Enum'Image (Item), Width, Set);
end Put;
procedure Put
@@ -132,14 +128,10 @@ package body Ada.Text_IO.Enumeration_IO is
-- checks suppressed, which includes instantiated generics.
if not Item'Valid then
- raise Constraint_Error;
+ raise Constraint_Error with "invalid enumeration value";
end if;
- declare
- Image : constant String := Enum'Image (Item);
- begin
- Aux.Puts (To, Image, Set);
- end;
+ Aux.Puts (To, Enum'Image (Item), Set);
end Put;
end Ada.Text_IO.Enumeration_IO;
diff --git a/gcc/ada/a-wichha.ads b/gcc/ada/a-wichha.ads
index 50c3ff8ed19..a9cff259f7a 100755
--- a/gcc/ada/a-wichha.ads
+++ b/gcc/ada/a-wichha.ads
@@ -14,6 +14,11 @@
------------------------------------------------------------------------------
package Ada.Wide_Characters.Handling is
+ pragma Pure;
+ -- This package is clearly intended to be Pure, by analogy with the
+ -- base Ada.Characters.Handling package. The version in the RM does
+ -- not yet have this pragma, but that is a clear omission. This will
+ -- be fixed in a future version of AI05-0266-1.
function Is_Control (Item : Wide_Character) return Boolean;
pragma Inline (Is_Control);
diff --git a/gcc/ada/a-wichun.ads b/gcc/ada/a-wichun.ads
index 08ac83d6f67..a2f78e39367 100644
--- a/gcc/ada/a-wichun.ads
+++ b/gcc/ada/a-wichun.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2011, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -37,6 +37,7 @@
with System.UTF_32;
package Ada.Wide_Characters.Unicode is
+ pragma Pure;
-- The following type defines the categories from the unicode definitions.
-- The one addition we make is Fe, which represents the characters FFFE
diff --git a/gcc/ada/a-zchhan.ads b/gcc/ada/a-zchhan.ads
index 973a7803dce..4c78dcd070c 100755
--- a/gcc/ada/a-zchhan.ads
+++ b/gcc/ada/a-zchhan.ads
@@ -14,6 +14,11 @@
------------------------------------------------------------------------------
package Ada.Wide_Wide_Characters.Handling is
+ pragma Pure;
+ -- This package is clearly intended to be Pure, by analogy with the
+ -- base Ada.Characters.Handling package. The version in the RM does
+ -- not yet have this pragma, but that is a clear omission. This will
+ -- be fixed in a future version of AI05-0266-1.
function Is_Control (Item : Wide_Wide_Character) return Boolean;
pragma Inline (Is_Control);
diff --git a/gcc/ada/a-zchuni.ads b/gcc/ada/a-zchuni.ads
index 10506957a29..bb2af79fe77 100755
--- a/gcc/ada/a-zchuni.ads
+++ b/gcc/ada/a-zchuni.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2011, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -34,6 +34,7 @@
with System.UTF_32;
package Ada.Wide_Wide_Characters.Unicode is
+ pragma Pure;
-- The following type defines the categories from the unicode definitions.
-- The one addition we make is Fe, which represents the characters FFFE
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index 781e0ae6cc6..908b177187b 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -9608,6 +9608,14 @@ The following convention names are supported
@table @code
@item Ada
Ada
+@item Ada_Pass_By_Copy
+Allowed for any types except by-reference types such as limited
+records. Compatible with convention Ada, but causes any parameters
+with this convention to be passed by copy.
+@item Ada_Pass_By_Reference
+Allowed for any types except by-copy types such as scalars.
+Compatible with convention Ada, but causes any parameters
+with this convention to be passed by reference.
@item Assembler
Assembly language
@item Asm
diff --git a/gcc/ada/s-rpc.ads b/gcc/ada/s-rpc.ads
index fa883ecbbc1..93ad69bfc5e 100644
--- a/gcc/ada/s-rpc.ads
+++ b/gcc/ada/s-rpc.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@@ -52,12 +52,12 @@ package System.RPC is
(Initial_Size : Ada.Streams.Stream_Element_Count) is new
Ada.Streams.Root_Stream_Type with private;
- procedure Read
+ overriding procedure Read
(Stream : in out Params_Stream_Type;
Item : out Ada.Streams.Stream_Element_Array;
Last : out Ada.Streams.Stream_Element_Offset);
- procedure Write
+ overriding procedure Write
(Stream : in out Params_Stream_Type;
Item : Ada.Streams.Stream_Element_Array);
diff --git a/gcc/ada/s-utf_32.adb b/gcc/ada/s-utf_32.adb
index f044b9bcc70..676d0e3ccc9 100755
--- a/gcc/ada/s-utf_32.adb
+++ b/gcc/ada/s-utf_32.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2011, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2012, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -34,6 +34,13 @@ pragma Compiler_Unit;
pragma Style_Checks (Off);
-- Allow long lines in this unit
+-- pragma Warnings (Off, "non-static constant in preelaborated unit");
+-- We need this to be pure, and the three constants in question are not a
+-- real problem, they are completely known at compile time. This pragma
+-- is commented out for now, because we still want to be able to bootstrap
+-- with old versions of the compiler that did not support this form. We
+-- have added additional pragma Warnings (Off/On) for now ???
+
package body System.UTF_32 is
----------------------
@@ -1850,6 +1857,9 @@ package body System.UTF_32 is
(16#F0000#, 16#FFFFD#), -- (Co) <Plane 15 Private Use, First> .. <Plane 15 Private Use, Last>
(16#100000#, 16#10FFFD#)); -- (Co) <Plane 16 Private Use, First> .. <Plane 16 Private Use, Last>
+ pragma Warnings (Off);
+ -- Temporary, until pragma at start can be activated ???
+
-- The following array is parallel to the Unicode_Ranges table above. For
-- each entry in the Unicode_Ranges table, there is a corresponding entry
-- in the following table indicating the corresponding unicode category.
@@ -6060,6 +6070,9 @@ package body System.UTF_32 is
40, -- DESERET CAPITAL LETTER LONG I .. DESERET CAPITAL LETTER EW
32); -- TAG LATIN CAPITAL LETTER A .. TAG LATIN CAPITAL LETTER Z
+ pragma Warnings (On);
+ -- Temporary until pragma Warnings at start can be activated ???
+
-- The following is a list of the 10646 names for CAPITAL LETTER entries
-- that have no matching SMALL LETTER entry and are thus not folded
diff --git a/gcc/ada/s-utf_32.ads b/gcc/ada/s-utf_32.ads
index 4cdbf95279e..4f61a014788 100755
--- a/gcc/ada/s-utf_32.ads
+++ b/gcc/ada/s-utf_32.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2005-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2011, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -44,6 +44,7 @@
pragma Compiler_Unit;
package System.UTF_32 is
+ pragma Pure;
type UTF_32 is range 0 .. 16#7FFF_FFFF#;
-- So far, the only defined character codes are in 0 .. 16#01_FFFF#
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index 3557ed813c3..cbc8b4df868 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -12676,6 +12676,7 @@ package body Sem_Ch12 is
Save_Entity_Descendants (N);
else
+ Set_Is_Prefixed_Call (Parent (N));
Set_Associated_Node (N, Empty);
Set_Etype (N, Empty);
end if;
@@ -12683,10 +12684,13 @@ package body Sem_Ch12 is
-- In Ada 2005, X.F may be a call to a primitive operation,
-- rewritten as F (X). This rewriting will be done again in an
-- instance, so keep the original node. Global entities will be
- -- captured as for other constructs.
+ -- captured as for other constructs. Indicate that this must
+ -- resolve as a call, to prevent accidental overloading in the
+ -- instance, if both a component and a primitive operation appear
+ -- as candidates.
else
- null;
+ Set_Is_Prefixed_Call (Parent (N));
end if;
-- Entity is local. Reset in generic unit, so that node is resolved
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index 50c9d3d6e69..88ef2674dc3 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -16300,34 +16300,11 @@ package body Sem_Ch3 is
then
return True;
- -- If we are in the body of an instantiation, the component is visible
- -- if the parent type is non-private, or in an enclosing scope. The
- -- scope stack is not present when analyzing an instance body, so we
- -- must inspect the chain of scopes explicitly.
+ -- In the body of an instantiation, no need to check for the visibility
+ -- of a component.
elsif In_Instance_Body then
- if not Is_Private_Type (Scope (C)) then
- return True;
-
- else
- declare
- S : Entity_Id;
-
- begin
- S := Current_Scope;
- while Present (S)
- and then S /= Standard_Standard
- loop
- if S = Type_Scope then
- return True;
- end if;
-
- S := Scope (S);
- end loop;
-
- return False;
- end;
- end if;
+ return True;
-- If the component has been declared in an ancestor which is currently
-- a private type, then it is not visible. The same applies if the
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 99f29668cd6..5ade3a88166 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -3858,8 +3858,10 @@ package body Sem_Ch4 is
elsif Is_Record_Type (Prefix_Type) then
-- Find component with given name
+ -- In an instance, if the node is known as a prefixed call, do
+ -- not examine components whose visibility may be accidental.
- while Present (Comp) loop
+ while Present (Comp) and then not Is_Prefixed_Call (N) loop
if Chars (Comp) = Chars (Sel)
and then Is_Visible_Component (Comp)
then
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 0afe05cd467..8ac54a51f3c 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -14501,7 +14501,7 @@ package body Sem_Prag is
-- the formal may be wrapped in a conversion if the
-- actual is a conversion. Retrieve the real entity name.
- if (In_Instance_Body or else In_Inlined_Body)
+ if (In_Instance_Body or In_Inlined_Body)
and then Nkind (E_Id) = N_Unchecked_Type_Conversion
then
E_Id := Expression (E_Id);
diff --git a/gcc/ada/sinfo.adb b/gcc/ada/sinfo.adb
index 440cf02a2e7..96b45709c43 100644
--- a/gcc/ada/sinfo.adb
+++ b/gcc/ada/sinfo.adb
@@ -1838,6 +1838,14 @@ package body Sinfo is
return Flag13 (N);
end Is_Power_Of_2_For_Shift;
+ function Is_Prefixed_Call
+ (N : Node_Id) return Boolean is
+ begin
+ pragma Assert (False
+ or else NT (N).Nkind = N_Selected_Component);
+ return Flag17 (N);
+ end Is_Prefixed_Call;
+
function Is_Protected_Subprogram_Body
(N : Node_Id) return Boolean is
begin
@@ -4910,6 +4918,14 @@ package body Sinfo is
Set_Flag13 (N, Val);
end Set_Is_Power_Of_2_For_Shift;
+ procedure Set_Is_Prefixed_Call
+ (N : Node_Id; Val : Boolean := True) is
+ begin
+ pragma Assert (False
+ or else NT (N).Nkind = N_Selected_Component);
+ Set_Flag17 (N, Val);
+ end Set_Is_Prefixed_Call;
+
procedure Set_Is_Protected_Subprogram_Body
(N : Node_Id; Val : Boolean := True) is
begin
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads
index ce4a31c8af9..3d1809be93d 100644
--- a/gcc/ada/sinfo.ads
+++ b/gcc/ada/sinfo.ads
@@ -1335,6 +1335,12 @@ package Sinfo is
-- conditions holds, and the flag is set, then the division or
-- multiplication can be (and is) converted to a shift.
+ -- Is_Prefixed_Call (Flag17-Sem)
+ -- This flag is set in a selected component within a generic unit, if
+ -- it resolves to a prefixed call to a primitive operation. The flag
+ -- is used to prevent accidental overloadings in an instance, when a
+ -- primitive operation and a private record component may be homographs.
+
-- Is_Protected_Subprogram_Body (Flag7-Sem)
-- A flag set in a Subprogram_Body block to indicate that it is the
-- implementation of a protected subprogram. Such a body needs cleanup
@@ -3249,6 +3255,7 @@ package Sinfo is
-- Associated_Node (Node4-Sem)
-- Do_Discriminant_Check (Flag13-Sem)
-- Is_In_Discriminant_Check (Flag11-Sem)
+ -- Is_Prefixed_Call (Flag17-Sem)
-- Atomic_Sync_Required (Flag14-Sem)
-- plus fields for expression
@@ -8653,6 +8660,9 @@ package Sinfo is
function Is_Power_Of_2_For_Shift
(N : Node_Id) return Boolean; -- Flag13
+ function Is_Prefixed_Call
+ (N : Node_Id) return Boolean; -- Flag17
+
function Is_Protected_Subprogram_Body
(N : Node_Id) return Boolean; -- Flag7
@@ -9631,6 +9641,9 @@ package Sinfo is
procedure Set_Is_Power_Of_2_For_Shift
(N : Node_Id; Val : Boolean := True); -- Flag13
+ procedure Set_Is_Prefixed_Call
+ (N : Node_Id; Val : Boolean := True); -- Flag17
+
procedure Set_Is_Protected_Subprogram_Body
(N : Node_Id; Val : Boolean := True); -- Flag7
@@ -11971,6 +11984,7 @@ package Sinfo is
pragma Inline (Is_Null_Loop);
pragma Inline (Is_Overloaded);
pragma Inline (Is_Power_Of_2_For_Shift);
+ pragma Inline (Is_Prefixed_Call);
pragma Inline (Is_Protected_Subprogram_Body);
pragma Inline (Is_Static_Coextension);
pragma Inline (Is_Static_Expression);
@@ -12293,6 +12307,7 @@ package Sinfo is
pragma Inline (Set_Is_Null_Loop);
pragma Inline (Set_Is_Overloaded);
pragma Inline (Set_Is_Power_Of_2_For_Shift);
+ pragma Inline (Set_Is_Prefixed_Call);
pragma Inline (Set_Is_Protected_Subprogram_Body);
pragma Inline (Set_Has_Self_Reference);
pragma Inline (Set_Is_Static_Coextension);
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index 017c205d086..a35b8e62942 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -1,6 +1,6 @@
/* Basic block reordering routines for the GNU compiler.
- Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011,
+ 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -2254,6 +2254,9 @@ partition_hot_cold_basic_blocks (void)
add_reg_crossing_jump_notes ();
+ /* Clear bb->aux fields that the above routines were using. */
+ clear_aux_for_blocks ();
+
VEC_free (edge, heap, crossing_edges);
/* ??? FIXME: DF generates the bb info for a block immediately.
diff --git a/gcc/builtin-attrs.def b/gcc/builtin-attrs.def
index 619794e85c8..c3132cc4138 100644
--- a/gcc/builtin-attrs.def
+++ b/gcc/builtin-attrs.def
@@ -98,6 +98,7 @@ DEF_ATTR_IDENT (ATTR_STRFTIME, "strftime")
DEF_ATTR_IDENT (ATTR_TYPEGENERIC, "type generic")
DEF_ATTR_IDENT (ATTR_TM_REGPARM, "*tm regparm")
DEF_ATTR_IDENT (ATTR_TM_TMPURE, "transaction_pure")
+DEF_ATTR_IDENT (ATTR_RETURNS_TWICE, "returns_twice")
DEF_ATTR_TREE_LIST (ATTR_NOVOPS_LIST, ATTR_NOVOPS, ATTR_NULL, ATTR_NULL)
@@ -241,6 +242,8 @@ DEF_ATTR_TREE_LIST (ATTR_TM_NORETURN_NOTHROW_LIST,
ATTR_TM_REGPARM, ATTR_NULL, ATTR_NORETURN_NOTHROW_LIST)
DEF_ATTR_TREE_LIST (ATTR_TM_CONST_NOTHROW_LIST,
ATTR_TM_REGPARM, ATTR_NULL, ATTR_CONST_NOTHROW_LIST)
+DEF_ATTR_TREE_LIST (ATTR_TM_NOTHROW_RT_LIST,
+ ATTR_RETURNS_TWICE, ATTR_NULL, ATTR_TM_NOTHROW_LIST)
/* Same attributes used for BUILT_IN_MALLOC except with TM_PURE thrown in. */
DEF_ATTR_TREE_LIST (ATTR_TMPURE_MALLOC_NOTHROW_LIST,
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 96e9c7d1753..45fb6b39f24 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -9932,6 +9932,9 @@ collect_source_ref_cb (tree decl)
collect_source_ref (LOCATION_FILE (decl_sloc (decl, false)));
}
+/* Preserve the external declarations scope across a garbage collect. */
+static GTY(()) tree ext_block;
+
/* Collect all references relevant to SOURCE_FILE. */
static void
@@ -9942,6 +9945,8 @@ collect_all_refs (const char *source_file)
FOR_EACH_VEC_ELT (tree, all_translation_units, i, t)
collect_ada_nodes (BLOCK_VARS (DECL_INITIAL (t)), source_file);
+
+ collect_ada_nodes (BLOCK_VARS (ext_block), source_file);
}
/* Iterate over all global declarations and call CALLBACK. */
@@ -9960,10 +9965,10 @@ for_each_global_decl (void (*callback) (tree decl))
for (decl = BLOCK_VARS (decls); decl; decl = TREE_CHAIN (decl))
callback (decl);
}
-}
-/* Preserve the external declarations scope across a garbage collect. */
-static GTY(()) tree ext_block;
+ for (decl = BLOCK_VARS (ext_block); decl; decl = TREE_CHAIN (decl))
+ callback (decl);
+}
void
c_write_global_declarations (void)
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 7850829108a..95ce166a204 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-05 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/51764
+ * c.opt (Wmudflap, fmudflap, fmudflapth, fmudflapir): Move here
+ from common.opt.
+
2011-12-30 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51316
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 42c9a0dfc66..447c88f761a 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -489,6 +489,10 @@ Wmissing-prototypes
C ObjC Var(warn_missing_prototypes) Warning
Warn about global functions without prototypes
+Wmudflap
+C ObjC C++ ObjC++ Var(warn_mudflap) Init(1) Warning
+Warn about constructs not instrumented by -fmudflap
+
Wmultichar
C ObjC C++ ObjC++ Warning
Warn about use of multi-character character constants
@@ -865,6 +869,18 @@ fms-extensions
C ObjC C++ ObjC++ Var(flag_ms_extensions)
Don't warn about uses of Microsoft extensions
+fmudflap
+C ObjC C++ ObjC++ RejectNegative Report Var(flag_mudflap)
+Add mudflap bounds-checking instrumentation for single-threaded program
+
+fmudflapth
+C ObjC C++ ObjC++ RejectNegative Report Var(flag_mudflap,2)
+Add mudflap bounds-checking instrumentation for multi-threaded program
+
+fmudflapir
+C ObjC C++ ObjC++ RejectNegative Report Var(flag_mudflap_ignore_reads)
+Ignore read operations when inserting mudflap instrumentation
+
fname-mangling-version-
C++ ObjC++ Joined Ignore Warn(switch %qs is no longer supported)
diff --git a/gcc/calls.c b/gcc/calls.c
index c8d0b849985..943ab093c0f 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1,7 +1,7 @@
/* Convert function calls to rtl insns, for GNU C compiler.
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
- 2011 Free Software Foundation, Inc.
+ 2011, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -445,6 +445,11 @@ emit_call_1 (rtx funexp, tree fntree ATTRIBUTE_UNUSED, tree fndecl ATTRIBUTE_UNU
if (SUPPORTS_STACK_ALIGNMENT)
crtl->need_drap = true;
}
+ /* For noreturn calls when not accumulating outgoing args force
+ REG_ARGS_SIZE note to prevent crossjumping of calls with different
+ args sizes. */
+ else if (!ACCUMULATE_OUTGOING_ARGS && (ecf_flags & ECF_NORETURN) != 0)
+ add_reg_note (call_insn, REG_ARGS_SIZE, GEN_INT (stack_pointer_delta));
if (!ACCUMULATE_OUTGOING_ARGS)
{
diff --git a/gcc/cfgloop.c b/gcc/cfgloop.c
index 3f14551f1ab..fa64797f550 100644
--- a/gcc/cfgloop.c
+++ b/gcc/cfgloop.c
@@ -1285,6 +1285,7 @@ cancel_loop (struct loop *loop)
for (i = 0; i < loop->num_nodes; i++)
bbs[i]->loop_father = outer;
+ free (bbs);
delete_loop (loop);
}
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c
index 967541756b5..33bcf4b9872 100644
--- a/gcc/cfgloopmanip.c
+++ b/gcc/cfgloopmanip.c
@@ -291,6 +291,7 @@ remove_path (edge e)
sbitmap seen;
bool irred_invalidated = false;
edge_iterator ei;
+ struct loop *l, *f;
if (!can_remove_branch_p (e))
return false;
@@ -314,10 +315,12 @@ remove_path (edge e)
we belong to. In this case first unloop the loops, then proceed
normally. We may assume that e->dest is not a header of any loop,
as it now has exactly one predecessor. */
- while (loop_outer (e->src->loop_father)
- && dominated_by_p (CDI_DOMINATORS,
- e->src->loop_father->latch, e->dest))
- unloop (e->src->loop_father, &irred_invalidated);
+ for (l = e->src->loop_father; loop_outer (l); l = f)
+ {
+ f = loop_outer (l);
+ if (dominated_by_p (CDI_DOMINATORS, l->latch, e->dest))
+ unloop (l, &irred_invalidated);
+ }
/* Identify the path. */
nrem = find_path (e, &rem_bbs);
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 4b1d8350de5..635955b7990 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -1,7 +1,7 @@
/* Control flow graph manipulation code for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+ 2011, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -1129,6 +1129,7 @@ force_nonfallthru_and_redirect (edge e, basic_block target, rtx jump_label)
rtx note;
edge new_edge;
int abnormal_edge_flags = 0;
+ bool asm_goto_edge = false;
int loc;
/* In the case the last instruction is conditional jump to the next
@@ -1208,8 +1209,28 @@ force_nonfallthru_and_redirect (edge e, basic_block target, rtx jump_label)
}
}
- if (EDGE_COUNT (e->src->succs) >= 2 || abnormal_edge_flags)
+ /* If e->src ends with asm goto, see if any of the ASM_OPERANDS_LABELs
+ don't point to target label. */
+ if (JUMP_P (BB_END (e->src))
+ && target != EXIT_BLOCK_PTR
+ && e->dest == target
+ && (e->flags & EDGE_FALLTHRU)
+ && (note = extract_asm_operands (PATTERN (BB_END (e->src)))))
{
+ int i, n = ASM_OPERANDS_LABEL_LENGTH (note);
+
+ for (i = 0; i < n; ++i)
+ if (XEXP (ASM_OPERANDS_LABEL (note, i), 0) == BB_HEAD (target))
+ {
+ asm_goto_edge = true;
+ break;
+ }
+ }
+
+ if (EDGE_COUNT (e->src->succs) >= 2 || abnormal_edge_flags || asm_goto_edge)
+ {
+ gcov_type count = e->count;
+ int probability = e->probability;
/* Create the new structures. */
/* If the old block ended with a tablejump, skip its table
@@ -1220,7 +1241,7 @@ force_nonfallthru_and_redirect (edge e, basic_block target, rtx jump_label)
note = NEXT_INSN (note);
jump_block = create_basic_block (note, NULL, e->src);
- jump_block->count = e->count;
+ jump_block->count = count;
jump_block->frequency = EDGE_FREQUENCY (e);
jump_block->loop_depth = target->loop_depth;
@@ -1236,13 +1257,27 @@ force_nonfallthru_and_redirect (edge e, basic_block target, rtx jump_label)
/* Wire edge in. */
new_edge = make_edge (e->src, jump_block, EDGE_FALLTHRU);
- new_edge->probability = e->probability;
- new_edge->count = e->count;
+ new_edge->probability = probability;
+ new_edge->count = count;
/* Redirect old edge. */
redirect_edge_pred (e, jump_block);
e->probability = REG_BR_PROB_BASE;
+ /* If asm goto has any label refs to target's label,
+ add also edge from asm goto bb to target. */
+ if (asm_goto_edge)
+ {
+ new_edge->probability /= 2;
+ new_edge->count /= 2;
+ jump_block->count /= 2;
+ jump_block->frequency /= 2;
+ new_edge = make_edge (new_edge->src, target,
+ e->flags & ~EDGE_FALLTHRU);
+ new_edge->probability = probability - probability / 2;
+ new_edge->count = count - count / 2;
+ }
+
new_bb = jump_block;
}
else
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 0efce347261..78ab3e16860 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -735,7 +735,7 @@ cgraph_first_defined_function (void)
return NULL;
}
-/* Return next reachable static variable with initializer after NODE. */
+/* Return next function with body defined after NODE. */
static inline struct cgraph_node *
cgraph_next_defined_function (struct cgraph_node *node)
{
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 886a2def0e5..2c9c8ddca5a 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1,6 +1,6 @@
/* Callgraph based interprocedural optimizations.
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
- 2011 Free Software Foundation, Inc.
+ 2011, 2012 Free Software Foundation, Inc.
Contributed by Jan Hubicka
This file is part of GCC.
@@ -2187,6 +2187,7 @@ cgraph_optimize (void)
#endif
bitmap_obstack_release (NULL);
cgraph_mark_functions_to_output ();
+ output_weakrefs ();
cgraph_state = CGRAPH_STATE_EXPANSION;
if (!flag_toplevel_reorder)
@@ -2201,7 +2202,6 @@ cgraph_optimize (void)
varpool_assemble_pending_decls ();
}
- output_weakrefs ();
cgraph_process_new_functions ();
cgraph_state = CGRAPH_STATE_FINISHED;
diff --git a/gcc/common.opt b/gcc/common.opt
index faeb8f5cf33..425281ee513 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -570,10 +570,6 @@ Wmissing-noreturn
Common Var(warn_missing_noreturn) Warning
Warn about functions which might be candidates for __attribute__((noreturn))
-Wmudflap
-Common Var(warn_mudflap) Init(1) Warning
-Warn about constructs not instrumented by -fmudflap
-
Woverflow
Common Var(warn_overflow) Init(1) Warning
Warn about overflow in arithmetic expressions
@@ -786,7 +782,10 @@ Driver Undocumented
; function parameters used in other parameters and the return type.
; First selectable in G++ 4.6.
;
-; 6: The version of the ABI that doesn't promote scoped enums to int.
+; 6: The version of the ABI that doesn't promote scoped enums to int and
+; changes the mangling of template argument packs, const/static_cast,
+; prefix ++ and --, and a class scope function used as a template
+; argument.
; First selectable in G++ 4.7.
;
; Additional positive integers will be assigned as new versions of
@@ -1596,18 +1595,6 @@ fmove-loop-invariants
Common Report Var(flag_move_loop_invariants) Init(1) Optimization
Move loop invariant computations out of loops
-fmudflap
-Common RejectNegative Report Var(flag_mudflap)
-Add mudflap bounds-checking instrumentation for single-threaded program
-
-fmudflapth
-Common RejectNegative Report Var(flag_mudflap,2)
-Add mudflap bounds-checking instrumentation for multi-threaded program
-
-fmudflapir
-Common RejectNegative Report Var(flag_mudflap_ignore_reads)
-Ignore read operations when inserting mudflap instrumentation
-
fdce
Common Var(flag_dce) Init(1) Optimization
Use the RTL dead code elimination pass
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index f7dff7d11c1..b5fad9fd8e0 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -11085,7 +11085,7 @@ static bool
expand_vec_perm_shrp (struct expand_vec_perm_d *d)
{
unsigned i, nelt = d->nelt, shift, mask;
- rtx tmp, op0, op1;;
+ rtx tmp, hi, lo;
/* ??? Don't force V2SFmode into the integer registers. */
if (d->vmode == V2SFmode)
@@ -11094,6 +11094,9 @@ expand_vec_perm_shrp (struct expand_vec_perm_d *d)
mask = (d->one_operand_p ? nelt - 1 : 2 * nelt - 1);
shift = d->perm[0];
+ if (BYTES_BIG_ENDIAN && shift > nelt)
+ return false;
+
for (i = 1; i < nelt; ++i)
if (d->perm[i] != ((shift + i) & mask))
return false;
@@ -11101,6 +11104,11 @@ expand_vec_perm_shrp (struct expand_vec_perm_d *d)
if (d->testing_p)
return true;
+ hi = shift < nelt ? d->op1 : d->op0;
+ lo = shift < nelt ? d->op0 : d->op1;
+
+ shift %= nelt;
+
shift *= GET_MODE_UNIT_SIZE (d->vmode) * BITS_PER_UNIT;
/* We've eliminated the shift 0 case via expand_vec_perm_identity. */
@@ -11113,11 +11121,9 @@ expand_vec_perm_shrp (struct expand_vec_perm_d *d)
shift = 64 - shift;
tmp = gen_reg_rtx (DImode);
- op0 = (shift < nelt ? d->op0 : d->op1);
- op1 = (shift < nelt ? d->op1 : d->op0);
- op0 = gen_lowpart (DImode, op0);
- op1 = gen_lowpart (DImode, op1);
- emit_insn (gen_shrp (tmp, op0, op1, GEN_INT (shift)));
+ hi = gen_lowpart (DImode, hi);
+ lo = gen_lowpart (DImode, lo);
+ emit_insn (gen_shrp (tmp, hi, lo, GEN_INT (shift)));
emit_move_insn (d->target, gen_lowpart (d->vmode, tmp));
return true;
diff --git a/gcc/configure b/gcc/configure
index ba6156f0087..4dd9faa335f 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -637,6 +637,7 @@ host_xm_defines
host_xm_include_list
host_xm_file_list
host_exeext
+gcc_gxx_include_dir_add_sysroot
gcc_gxx_include_dir
gcc_config_arguments
float_h_file
@@ -3313,6 +3314,15 @@ if test x${gcc_gxx_include_dir} = x; then
fi
fi
+gcc_gxx_include_dir_add_sysroot=0
+if test "${with_sysroot+set}" = set; then
+ gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
+ if test "${gcc_gxx_without_sysroot}"; then
+ gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
+ gcc_gxx_include_dir_add_sysroot=1
+ fi
+fi
+
# Check whether --with-cpp_install_dir was given.
if test "${with_cpp_install_dir+set}" = set; then :
@@ -18106,7 +18116,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 18109 "configure"
+#line 18119 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -18212,7 +18222,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 18215 "configure"
+#line 18225 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -27054,6 +27064,7 @@ fi
+
# Echo link setup.
if test x${build} = x${host} ; then
if test x${host} = x${target} ; then
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 12492ff1fe5..ffe7148e5df 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -145,6 +145,15 @@ if test x${gcc_gxx_include_dir} = x; then
fi
fi
+gcc_gxx_include_dir_add_sysroot=0
+if test "${with_sysroot+set}" = set; then
+ gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
+ if test "${gcc_gxx_without_sysroot}"; then
+ gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
+ gcc_gxx_include_dir_add_sysroot=1
+ fi
+fi
+
AC_ARG_WITH(cpp_install_dir,
[AC_HELP_STRING([--with-cpp-install-dir=DIR],
[install the user visible C preprocessor in DIR
@@ -4927,6 +4936,7 @@ AC_SUBST(extra_programs)
AC_SUBST(float_h_file)
AC_SUBST(gcc_config_arguments)
AC_SUBST(gcc_gxx_include_dir)
+AC_SUBST(gcc_gxx_include_dir_add_sysroot)
AC_SUBST(host_exeext)
AC_SUBST(host_xm_file_list)
AC_SUBST(host_xm_include_list)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d889d2921ac..e31b386eede 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,37 @@
+2012-01-06 Jason Merrill <jason@redhat.com>
+
+ DR 686
+ PR c++/47450
+ * parser.c (cp_parser_new_expression): Set
+ type_definition_forbidden_message.
+
+ PR c++/6057
+ PR c++/48051
+ PR c++/50855
+ PR c++/51322
+ * mangle.c (write_expression): Support NEW_EXPR, DELETE_EXPR,
+ THROW_EXPR, CONSTRUCTOR, OVERLOAD. Fix PREINCREMENT_EXPR and
+ PREDECREMENT_EXPR.
+ (write_template_arg): Fix mangling of class-scope functions and
+ argument packs.
+ (mangle_decl): Update suggested -fabi-version argument.
+ * operators.def: Add DOTSTAR_EXPR, REINTERPRET_CAST_EXPR,
+ DYNAMIC_CAST_EXPR; correct CONST_CAST_EXPR, STATIC_CAST_EXPR.
+ * tree.c (dependent_name): No longer static.
+ * cp-tree.h: Declare it.
+ * pt.c (unify): Defer handling of unconverted functions.
+
+ * mangle.c (mangle_decl): Don't generate mangling aliases
+ for maybe-in-charge [cd]tors.
+
+ * error.c (dump_expr): Print type of CONSTRUCTOR.
+
+2012-01-05 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/51541
+ * parser.c (cp_parser_alias_declaration): Get out early upon
+ errors in the identifier or the attributes.
+
2012-01-04 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51064
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 6e62bd1ba50..ccad6443651 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -5674,6 +5674,7 @@ extern tree hash_tree_cons (tree, tree, tree);
extern tree hash_tree_chain (tree, tree);
extern tree build_qualified_name (tree, tree, tree, bool);
extern int is_overloaded_fn (tree);
+extern tree dependent_name (tree);
extern tree get_fns (tree);
extern tree get_first_fn (tree);
extern tree ovl_cons (tree, tree);
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index 21d6781567e..62b47ca2a36 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -2194,6 +2194,8 @@ dump_expr (tree t, int flags)
}
else
{
+ if (!BRACE_ENCLOSED_INITIALIZER_P (t))
+ dump_type (TREE_TYPE (t), 0);
pp_cxx_left_brace (cxx_pp);
dump_expr_init_vec (CONSTRUCTOR_ELTS (t), flags);
pp_cxx_right_brace (cxx_pp);
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index 548998a086f..f4efa67cc27 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -2646,6 +2646,102 @@ write_expression (tree expr)
write_expression (TREE_OPERAND (expr, 0));
write_expression (TREE_OPERAND (expr, 2));
}
+ else if (code == NEW_EXPR || code == VEC_NEW_EXPR)
+ {
+ /* ::= [gs] nw <expression>* _ <type> E
+ ::= [gs] nw <expression>* _ <type> <initializer>
+ ::= [gs] na <expression>* _ <type> E
+ ::= [gs] na <expression>* _ <type> <initializer>
+ <initializer> ::= pi <expression>* E */
+ tree placement = TREE_OPERAND (expr, 0);
+ tree type = TREE_OPERAND (expr, 1);
+ tree nelts = TREE_OPERAND (expr, 2);
+ tree init = TREE_OPERAND (expr, 3);
+ tree t;
+
+ gcc_assert (code == NEW_EXPR);
+ if (TREE_OPERAND (expr, 2))
+ code = VEC_NEW_EXPR;
+
+ if (NEW_EXPR_USE_GLOBAL (expr))
+ write_string ("gs");
+
+ write_string (operator_name_info[(int) code].mangled_name);
+
+ for (t = placement; t; t = TREE_CHAIN (t))
+ write_expression (TREE_VALUE (t));
+
+ write_char ('_');
+
+ if (nelts)
+ {
+ tree domain;
+ ++processing_template_decl;
+ domain = compute_array_index_type (NULL_TREE, nelts,
+ tf_warning_or_error);
+ type = build_cplus_array_type (type, domain);
+ --processing_template_decl;
+ }
+ write_type (type);
+
+ if (init && TREE_CODE (init) == TREE_LIST
+ && TREE_CODE (TREE_VALUE (init)) == CONSTRUCTOR
+ && CONSTRUCTOR_IS_DIRECT_INIT (TREE_VALUE (init)))
+ write_expression (TREE_VALUE (init));
+ else
+ {
+ if (init)
+ write_string ("pi");
+ if (init && init != void_zero_node)
+ for (t = init; t; t = TREE_CHAIN (t))
+ write_expression (TREE_VALUE (t));
+ write_char ('E');
+ }
+ }
+ else if (code == DELETE_EXPR || code == VEC_DELETE_EXPR)
+ {
+ gcc_assert (code == DELETE_EXPR);
+ if (DELETE_EXPR_USE_VEC (expr))
+ code = VEC_DELETE_EXPR;
+
+ if (DELETE_EXPR_USE_GLOBAL (expr))
+ write_string ("gs");
+
+ write_string (operator_name_info[(int) code].mangled_name);
+
+ write_expression (TREE_OPERAND (expr, 0));
+ }
+ else if (code == THROW_EXPR)
+ {
+ tree op = TREE_OPERAND (expr, 0);
+ if (op)
+ {
+ write_string ("tw");
+ write_expression (op);
+ }
+ else
+ write_string ("tr");
+ }
+ else if (code == CONSTRUCTOR)
+ {
+ VEC(constructor_elt,gc)* elts = CONSTRUCTOR_ELTS (expr);
+ unsigned i; tree val;
+
+ if (BRACE_ENCLOSED_INITIALIZER_P (expr))
+ write_string ("il");
+ else
+ {
+ write_string ("tl");
+ write_type (TREE_TYPE (expr));
+ }
+ FOR_EACH_CONSTRUCTOR_VALUE (elts, i, val)
+ write_expression (val);
+ write_char ('E');
+ }
+ else if (dependent_name (expr))
+ {
+ write_unqualified_id (dependent_name (expr));
+ }
else
{
int i, len;
@@ -2688,6 +2784,16 @@ write_expression (tree expr)
/* If it wasn't any of those, recursively expand the expression. */
name = operator_name_info[(int) code].mangled_name;
+
+ /* We used to mangle const_cast and static_cast like a C cast. */
+ if (!abi_version_at_least (6)
+ && (code == CONST_CAST_EXPR
+ || code == STATIC_CAST_EXPR))
+ {
+ name = operator_name_info[CAST_EXPR].mangled_name;
+ G.need_abi_warning = 1;
+ }
+
if (name == NULL)
{
sorry ("mangling %C", code);
@@ -2734,16 +2840,21 @@ write_expression (tree expr)
}
break;
- /* FIXME these should have a distinct mangling. */
+ case DYNAMIC_CAST_EXPR:
+ case REINTERPRET_CAST_EXPR:
case STATIC_CAST_EXPR:
case CONST_CAST_EXPR:
write_type (TREE_TYPE (expr));
write_expression (TREE_OPERAND (expr, 0));
break;
- case NEW_EXPR:
- sorry ("mangling new-expression");
- break;
+ case PREINCREMENT_EXPR:
+ case PREDECREMENT_EXPR:
+ if (abi_version_at_least (6))
+ write_char ('_');
+ else
+ G.need_abi_warning = 1;
+ /* Fall through. */
default:
/* In the middle-end, some expressions have more operands than
@@ -2855,12 +2966,28 @@ write_template_arg (tree node)
G.need_abi_warning = 1;
}
+ if (TREE_CODE (node) == BASELINK
+ && !type_unknown_p (node))
+ {
+ if (abi_version_at_least (6))
+ node = BASELINK_FUNCTIONS (node);
+ else
+ /* We wrongly wrapped a class-scope function in X/E. */
+ G.need_abi_warning = 1;
+ }
+
if (ARGUMENT_PACK_P (node))
{
/* Expand the template argument pack. */
tree args = ARGUMENT_PACK_ARGS (node);
int i, length = TREE_VEC_LENGTH (args);
- write_char ('I');
+ if (abi_version_at_least (6))
+ write_char ('J');
+ else
+ {
+ write_char ('I');
+ G.need_abi_warning = 1;
+ }
for (i = 0; i < length; ++i)
write_template_arg (TREE_VEC_ELT (args, i));
write_char ('E');
@@ -3194,7 +3321,10 @@ mangle_decl (const tree decl)
tree id = get_mangled_id (decl);
SET_DECL_ASSEMBLER_NAME (decl, id);
- if (G.need_abi_warning)
+ if (G.need_abi_warning
+ /* Don't do this for a fake symbol we aren't going to emit anyway. */
+ && !DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl)
+ && !DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl))
{
#ifdef ASM_OUTPUT_DEF
/* If the mangling will change in the future, emit an alias with the
@@ -3205,8 +3335,8 @@ mangle_decl (const tree decl)
SET_IDENTIFIER_GLOBAL_VALUE (id, decl);
if (IDENTIFIER_GLOBAL_VALUE (id) != decl)
- inform (DECL_SOURCE_LOCATION (decl), "-fabi-version=4 (or =0) "
- "avoids this error with a change in vector mangling");
+ inform (DECL_SOURCE_LOCATION (decl), "-fabi-version=6 (or =0) "
+ "avoids this error with a change in mangling");
#ifdef ASM_OUTPUT_DEF
save_ver = flag_abi_version;
diff --git a/gcc/cp/operators.def b/gcc/cp/operators.def
index 20d811b812b..3dc74049952 100644
--- a/gcc/cp/operators.def
+++ b/gcc/cp/operators.def
@@ -101,8 +101,10 @@ DEF_SIMPLE_OPERATOR ("__real__", REALPART_EXPR, "v18__real__", 1)
/* The cast operator. */
DEF_SIMPLE_OPERATOR ("", TYPE_EXPR, "cv", 1)
DEF_SIMPLE_OPERATOR ("", CAST_EXPR, "cv", 1)
-DEF_SIMPLE_OPERATOR ("", CONST_CAST_EXPR, "cv", 1)
-DEF_SIMPLE_OPERATOR ("", STATIC_CAST_EXPR, "cv", 1)
+DEF_SIMPLE_OPERATOR ("dynamic_cast", DYNAMIC_CAST_EXPR, "dc", 1)
+DEF_SIMPLE_OPERATOR ("reinterpret_cast", REINTERPRET_CAST_EXPR, "rc", 1)
+DEF_SIMPLE_OPERATOR ("const_cast", CONST_CAST_EXPR, "cc", 1)
+DEF_SIMPLE_OPERATOR ("static_cast", STATIC_CAST_EXPR, "sc", 1)
/* Binary operators. */
DEF_SIMPLE_OPERATOR ("+", PLUS_EXPR, "pl", 2)
@@ -125,6 +127,7 @@ DEF_SIMPLE_OPERATOR ("&&", TRUTH_ANDIF_EXPR, "aa", 2)
DEF_SIMPLE_OPERATOR ("||", TRUTH_ORIF_EXPR, "oo", 2)
DEF_SIMPLE_OPERATOR (",", COMPOUND_EXPR, "cm", 2)
DEF_SIMPLE_OPERATOR ("->*", MEMBER_REF, "pm", 2)
+DEF_SIMPLE_OPERATOR (".*", DOTSTAR_EXPR, "ds", 2)
DEF_SIMPLE_OPERATOR ("->", COMPONENT_REF, "pt", 2)
DEF_SIMPLE_OPERATOR ("[]", ARRAY_REF, "ix", 2)
DEF_SIMPLE_OPERATOR ("++", POSTINCREMENT_EXPR, "pp", 2)
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 8f2357e64a0..9be68d0e993 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -6668,10 +6668,17 @@ cp_parser_new_expression (cp_parser* parser)
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN))
{
cp_token *token;
+ const char *saved_message = parser->type_definition_forbidden_message;
+
/* Consume the `('. */
cp_lexer_consume_token (parser->lexer);
+
/* Parse the type-id. */
+ parser->type_definition_forbidden_message
+ = G_("types may not be defined in a new-expression");
type = cp_parser_type_id (parser);
+ parser->type_definition_forbidden_message = saved_message;
+
/* Look for the closing `)'. */
cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN);
token = cp_lexer_peek_token (parser->lexer);
@@ -15046,7 +15053,13 @@ cp_parser_alias_declaration (cp_parser* parser)
cp_parser_require_keyword (parser, RID_USING, RT_USING);
id_location = cp_lexer_peek_token (parser->lexer)->location;
id = cp_parser_identifier (parser);
+ if (id == error_mark_node)
+ return error_mark_node;
+
attributes = cp_parser_attributes_opt (parser);
+ if (attributes == error_mark_node)
+ return error_mark_node;
+
cp_parser_require (parser, CPP_EQ, RT_EQ);
/* Now we are going to parse the type-id of the declaration. */
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 77e3388587b..bc3dd9713a9 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -16885,7 +16885,7 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict,
default:
/* An unresolved overload is a nondeduced context. */
- if (type_unknown_p (parm))
+ if (is_overloaded_fn (parm) || type_unknown_p (parm))
return unify_success (explain_p);
gcc_assert (EXPR_P (parm));
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index dea7632d829..8ef3e2540cd 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -1457,7 +1457,7 @@ is_overloaded_fn (tree x)
(14.6.2), return the IDENTIFIER_NODE for that name. Otherwise, return
NULL_TREE. */
-static tree
+tree
dependent_name (tree x)
{
if (TREE_CODE (x) == IDENTIFIER_NODE)
diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
index 099899a7726..927083e939d 100644
--- a/gcc/cppdefault.c
+++ b/gcc/cppdefault.c
@@ -44,15 +44,18 @@ const struct default_include cpp_include_defaults[]
= {
#ifdef GPLUSPLUS_INCLUDE_DIR
/* Pick up GNU C++ generic include files. */
- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
#endif
#ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
/* Pick up GNU C++ target-dependent include files. */
- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 1 },
+ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
#endif
#ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
/* Pick up GNU C++ backward and deprecated include files. */
- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
#endif
#ifdef GCC_INCLUDE_DIR
/* This is the dir for gcc's private headers. */
diff --git a/gcc/cselib.c b/gcc/cselib.c
index 9934abb8f41..ab9c458fe82 100644
--- a/gcc/cselib.c
+++ b/gcc/cselib.c
@@ -277,12 +277,27 @@ new_elt_loc_list (cselib_val *val, rtx loc)
}
el->next = val->locs;
next = val->locs = CSELIB_VAL_PTR (loc)->locs;
- if (CSELIB_VAL_PTR (loc)->next_containing_mem != NULL
- && val->next_containing_mem == NULL)
- {
- val->next_containing_mem = first_containing_mem;
- first_containing_mem = val;
- }
+ }
+
+ if (CSELIB_VAL_PTR (loc)->addr_list)
+ {
+ /* Bring in addr_list into canonical node. */
+ struct elt_list *last = CSELIB_VAL_PTR (loc)->addr_list;
+ while (last->next)
+ last = last->next;
+ last->next = val->addr_list;
+ val->addr_list = CSELIB_VAL_PTR (loc)->addr_list;
+ CSELIB_VAL_PTR (loc)->addr_list = NULL;
+ }
+
+ if (CSELIB_VAL_PTR (loc)->next_containing_mem != NULL
+ && val->next_containing_mem == NULL)
+ {
+ /* Add VAL to the containing_mem list after LOC. LOC will
+ be removed when we notice it doesn't contain any
+ MEMs. */
+ val->next_containing_mem = CSELIB_VAL_PTR (loc)->next_containing_mem;
+ CSELIB_VAL_PTR (loc)->next_containing_mem = val;
}
/* Chain LOC back to VAL. */
@@ -641,7 +656,7 @@ remove_useless_values (void)
p = &first_containing_mem;
for (v = *p; v != &dummy_val; v = v->next_containing_mem)
- if (v->locs)
+ if (v->locs && v == canonical_cselib_val (v))
{
*p = v;
p = &(*p)->next_containing_mem;
@@ -1020,6 +1035,10 @@ cselib_hash_rtx (rtx x, int create, enum machine_mode memmode)
switch (code)
{
+ case VALUE:
+ e = CSELIB_VAL_PTR (x);
+ return e->hash;
+
case MEM:
case REG:
e = cselib_lookup (x, GET_MODE (x), create, memmode);
@@ -1270,6 +1289,7 @@ add_mem_for_addr (cselib_val *addr_elt, cselib_val *mem_elt, rtx x)
{
struct elt_loc_list *l;
+ addr_elt = canonical_cselib_val (addr_elt);
mem_elt = canonical_cselib_val (mem_elt);
/* Avoid duplicates. */
@@ -1318,6 +1338,7 @@ cselib_lookup_mem (rtx x, int create)
if (! addr)
return 0;
+ addr = canonical_cselib_val (addr);
/* Find a value that describes a value of our mode at that address. */
for (l = addr->addr_list; l; l = l->next)
if (GET_MODE (l->elt->val_rtx) == mode)
@@ -2214,15 +2235,22 @@ cselib_invalidate_mem (rtx mem_rtx)
/* We must have a mapping from this MEM's address to the
value (E). Remove that, too. */
addr = cselib_lookup (XEXP (x, 0), VOIDmode, 0, GET_MODE (x));
+ addr = canonical_cselib_val (addr);
+ gcc_checking_assert (v == canonical_cselib_val (v));
mem_chain = &addr->addr_list;
for (;;)
{
- if (canonical_cselib_val ((*mem_chain)->elt) == v)
+ cselib_val *canon = canonical_cselib_val ((*mem_chain)->elt);
+
+ if (canon == v)
{
unchain_one_elt_list (mem_chain);
break;
}
+ /* Record canonicalized elt. */
+ (*mem_chain)->elt = canon;
+
mem_chain = &(*mem_chain)->next;
}
diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi
index 230d32bdfc0..658ab98be01 100644
--- a/gcc/doc/cpp.texi
+++ b/gcc/doc/cpp.texi
@@ -2020,8 +2020,8 @@ testing @code{@w{(__GNUC__ && __cplusplus)}}.
@item __STRICT_ANSI__
GCC defines this macro if and only if the @option{-ansi} switch, or a
-@option{-std} switch specifying strict conformance to some version of ISO C,
-was specified when GCC was invoked. It is defined to @samp{1}.
+@option{-std} switch specifying strict conformance to some version of ISO C
+or ISO C++, was specified when GCC was invoked. It is defined to @samp{1}.
This macro exists primarily to direct GNU libc's header files to
restrict their definitions to the minimal set found in the 1989 C
standard.
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 895d200dc84..19f7d7bf496 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,41 @@
+2012-01-06 Tobias Burnus <burnus@net-b.de>
+
+ * trans-openmp.c (gfc_omp_clause_dtor, gfc_trans_omp_array_reduction):
+ Update call to gfc_trans_dealloc_allocated.
+ * trans.c (gfc_allocate_using_malloc): Fix spacing.
+ (gfc_allocate_allocatable): For gfc_allocate_using_lib, jump to
+ label_finish when an error occurs.
+ (gfc_deallocate_with_status): Call caf_deregister for -fcoarray=lib.
+ * trans.h (gfc_allocate_allocatable, gfc_deallocate_with_status):
+ Update prototype.
+ (gfor_fndecl_caf_deregister): New tree symbol.
+ * trans-expr.c (gfc_conv_procedure_call): Update
+ gfc_deallocate_with_status and gfc_trans_dealloc_allocated calls.
+ * trans-array.c (gfc_array_allocate, gfc_trans_dealloc_allocated,
+ structure_alloc_comps, gfc_trans_deferred_array): Ditto.
+ (gfc_array_deallocate): Handle coarrays with -fcoarray=lib.
+ * trans-array.h (gfc_array_deallocate, gfc_array_allocate,
+ gfc_trans_dealloc_allocated): Update prototypes.
+ * trans-stmt.c (gfc_trans_sync): Fix indentation.
+ (gfc_trans_allocate): Fix errmsg padding and label handling.
+ (gfc_trans_deallocate): Ditto and handle -fcoarray=lib.
+ * expr.c (gfc_is_coarray): Fix algorithm for BT_CLASS.
+ * libgfortran.h (GFC_STAT_STOPPED_IMAGE): Use large value
+ to avoid other stats accidentally matching this one.
+ * trans-decl.c (gfor_fndecl_caf_deregister): New global var.
+ (gfc_build_builtin_function_decls): Fix prototype decl of caf_register
+ and add decl for caf_deregister.
+ (gfc_trans_deferred_vars): Handle CAF vars with -fcoarrays=lib.
+ * trans-intrinsic.c (conv_intrinsic_move_alloc): Update call to
+ gfc_deallocate_with_status.
+
+2012-01-05 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/PR48946
+ * resolve.c (resolve_typebound_static): If the typebound
+ procedure is 'deferred' try to find the correct specific
+ procedure in the derived type operator space itself.
+
2012-01-04 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/50981
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 182738cbf3d..a6baa68168f 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -1,6 +1,6 @@
/* Routines for manipulation of expression nodes.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010, 2011
+ 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Andy Vaught
@@ -4264,13 +4264,17 @@ gfc_is_coarray (gfc_expr *e)
{
case REF_COMPONENT:
comp = ref->u.c.component;
- if (comp->attr.pointer || comp->attr.allocatable)
+ if (comp->ts.type == BT_CLASS && comp->attr.class_ok
+ && (CLASS_DATA (comp)->attr.class_pointer
+ || CLASS_DATA (comp)->attr.allocatable))
{
coindexed = false;
- if (comp->ts.type == BT_CLASS && comp->attr.class_ok)
- coarray = CLASS_DATA (comp)->attr.codimension;
- else
- coarray = comp->attr.codimension;
+ coarray = CLASS_DATA (comp)->attr.codimension;
+ }
+ else if (comp->attr.pointer || comp->attr.allocatable)
+ {
+ coindexed = false;
+ coarray = comp->attr.codimension;
}
break;
diff --git a/gcc/fortran/libgfortran.h b/gcc/fortran/libgfortran.h
index 874cd9537bb..3f36fe88bbf 100644
--- a/gcc/fortran/libgfortran.h
+++ b/gcc/fortran/libgfortran.h
@@ -1,5 +1,5 @@
/* Header file to the Fortran front-end and runtime library
- Copyright (C) 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -105,7 +105,7 @@ typedef enum
GFC_STAT_UNLOCKED = 0,
GFC_STAT_LOCKED,
GFC_STAT_LOCKED_OTHER_IMAGE,
- GFC_STAT_STOPPED_IMAGE /* See LIBERROR_INQUIRE_INTERNAL_UNIT above. */
+ GFC_STAT_STOPPED_IMAGE = 6000 /* See LIBERROR_INQUIRE_INTERNAL_UNIT above. */
}
libgfortran_stat_codes;
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 82045f8ea23..79245ce89bf 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -5614,6 +5614,39 @@ resolve_typebound_static (gfc_expr* e, gfc_symtree** target,
e->ref = NULL;
e->value.compcall.actual = NULL;
+ /* If we find a deferred typebound procedure, check for derived types
+ that an over-riding typebound procedure has not been missed. */
+ if (e->value.compcall.tbp->deferred
+ && e->value.compcall.name
+ && !e->value.compcall.tbp->non_overridable
+ && e->value.compcall.base_object
+ && e->value.compcall.base_object->ts.type == BT_DERIVED)
+ {
+ gfc_symtree *st;
+ gfc_symbol *derived;
+
+ /* Use the derived type of the base_object. */
+ derived = e->value.compcall.base_object->ts.u.derived;
+ st = NULL;
+
+ /* If necessary, go throught the inheritance chain. */
+ while (!st && derived)
+ {
+ /* Look for the typebound procedure 'name'. */
+ if (derived->f2k_derived && derived->f2k_derived->tb_sym_root)
+ st = gfc_find_symtree (derived->f2k_derived->tb_sym_root,
+ e->value.compcall.name);
+ if (!st)
+ derived = gfc_get_derived_super_type (derived);
+ }
+
+ /* Now find the specific name in the derived type namespace. */
+ if (st && st->n.tb && st->n.tb->u.specific)
+ gfc_find_sym_tree (st->n.tb->u.specific->name,
+ derived->ns, 1, &st);
+ if (st)
+ *target = st;
+ }
return SUCCESS;
}
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 494721ee476..b9902b9d52e 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -4938,7 +4938,7 @@ gfc_array_init_size (tree descriptor, int rank, int corank, tree * poffset,
bool
gfc_array_allocate (gfc_se * se, gfc_expr * expr, tree status, tree errmsg,
- tree errlen, gfc_expr *expr3)
+ tree errlen, tree label_finish, gfc_expr *expr3)
{
tree tmp;
tree pointer;
@@ -5064,7 +5064,7 @@ gfc_array_allocate (gfc_se * se, gfc_expr * expr, tree status, tree errmsg,
/* The allocatable variant takes the old pointer as first argument. */
if (allocatable)
gfc_allocate_allocatable (&elseblock, pointer, size, token,
- status, errmsg, errlen, expr);
+ status, errmsg, errlen, label_finish, expr);
else
gfc_allocate_using_malloc (&elseblock, pointer, size, status);
@@ -5127,24 +5127,40 @@ gfc_array_allocate (gfc_se * se, gfc_expr * expr, tree status, tree errmsg,
/*GCC ARRAYS*/
tree
-gfc_array_deallocate (tree descriptor, tree pstat, gfc_expr* expr)
+gfc_array_deallocate (tree descriptor, tree pstat, tree errmsg, tree errlen,
+ tree label_finish, gfc_expr* expr)
{
tree var;
tree tmp;
stmtblock_t block;
+ bool coarray = gfc_is_coarray (expr);
gfc_start_block (&block);
+
/* Get a pointer to the data. */
var = gfc_conv_descriptor_data_get (descriptor);
STRIP_NOPS (var);
/* Parameter is the address of the data component. */
- tmp = gfc_deallocate_with_status (var, pstat, false, expr);
+ tmp = gfc_deallocate_with_status (coarray ? descriptor : var, pstat, errmsg,
+ errlen, label_finish, false, expr, coarray);
gfc_add_expr_to_block (&block, tmp);
- /* Zero the data pointer. */
+ /* Zero the data pointer; only for coarrays an error can occur and then
+ the allocation status may not be changed. */
tmp = fold_build2_loc (input_location, MODIFY_EXPR, void_type_node,
var, build_int_cst (TREE_TYPE (var), 0));
+ if (pstat != NULL_TREE && coarray && gfc_option.coarray == GFC_FCOARRAY_LIB)
+ {
+ tree cond;
+ tree stat = build_fold_indirect_ref_loc (input_location, pstat);
+
+ cond = fold_build2_loc (input_location, EQ_EXPR, boolean_type_node,
+ stat, build_int_cst (TREE_TYPE (stat), 0));
+ tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
+ cond, tmp, build_empty_stmt (input_location));
+ }
+
gfc_add_expr_to_block (&block, tmp);
return gfc_finish_block (&block);
@@ -7055,7 +7071,7 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, bool g77,
/* Generate code to deallocate an array, if it is allocated. */
tree
-gfc_trans_dealloc_allocated (tree descriptor)
+gfc_trans_dealloc_allocated (tree descriptor, bool coarray)
{
tree tmp;
tree var;
@@ -7069,7 +7085,9 @@ gfc_trans_dealloc_allocated (tree descriptor)
/* Call array_deallocate with an int * present in the second argument.
Although it is ignored here, it's presence ensures that arrays that
are already deallocated are ignored. */
- tmp = gfc_deallocate_with_status (var, NULL_TREE, true, NULL);
+ tmp = gfc_deallocate_with_status (coarray ? descriptor : var, NULL_TREE,
+ NULL_TREE, NULL_TREE, NULL_TREE, true,
+ NULL, coarray);
gfc_add_expr_to_block (&block, tmp);
/* Zero the data pointer. */
@@ -7358,7 +7376,7 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
{
comp = fold_build3_loc (input_location, COMPONENT_REF, ctype,
decl, cdecl, NULL_TREE);
- tmp = gfc_trans_dealloc_allocated (comp);
+ tmp = gfc_trans_dealloc_allocated (comp, c->attr.codimension);
gfc_add_expr_to_block (&fnblock, tmp);
}
else if (c->attr.allocatable)
@@ -7388,7 +7406,8 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
TREE_TYPE (tmp), comp, tmp, NULL_TREE);
if (GFC_DESCRIPTOR_TYPE_P(TREE_TYPE (comp)))
- tmp = gfc_trans_dealloc_allocated (comp);
+ tmp = gfc_trans_dealloc_allocated (comp,
+ CLASS_DATA (c)->attr.codimension);
else
{
tmp = gfc_deallocate_scalar_with_status (comp, NULL, true, NULL,
@@ -8094,7 +8113,8 @@ gfc_trans_deferred_array (gfc_symbol * sym, gfc_wrapped_block * block)
if (sym->attr.allocatable && (sym->attr.dimension || sym->attr.codimension)
&& !sym->attr.save && !sym->attr.result)
{
- tmp = gfc_trans_dealloc_allocated (sym->backend_decl);
+ tmp = gfc_trans_dealloc_allocated (sym->backend_decl,
+ sym->attr.codimension);
gfc_add_expr_to_block (&cleanup, tmp);
}
diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h
index 19cfac52b7f..ed922d02814 100644
--- a/gcc/fortran/trans-array.h
+++ b/gcc/fortran/trans-array.h
@@ -1,5 +1,5 @@
/* Header for array handling functions
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
Free Software Foundation, Inc.
Contributed by Paul Brook
@@ -20,11 +20,12 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
/* Generate code to free an array. */
-tree gfc_array_deallocate (tree, tree, gfc_expr*);
+tree gfc_array_deallocate (tree, tree, tree, tree, tree, gfc_expr*);
/* Generate code to initialize and allocate an array. Statements are added to
se, which should contain an expression for the array descriptor. */
-bool gfc_array_allocate (gfc_se *, gfc_expr *, tree, tree, tree, gfc_expr *);
+bool gfc_array_allocate (gfc_se *, gfc_expr *, tree, tree, tree, tree,
+ gfc_expr *);
/* Allow the bounds of a loop to be set from a callee's array spec. */
void gfc_set_loop_bounds_from_array_spec (gfc_interface_mapping *,
@@ -42,7 +43,7 @@ void gfc_trans_dummy_array_bias (gfc_symbol *, tree, gfc_wrapped_block *);
/* Generate entry and exit code for g77 calling convention arrays. */
void gfc_trans_g77_array (gfc_symbol *, gfc_wrapped_block *);
/* Generate code to deallocate an array, if it is allocated. */
-tree gfc_trans_dealloc_allocated (tree);
+tree gfc_trans_dealloc_allocated (tree, bool);
tree gfc_duplicate_allocatable (tree dest, tree src, tree type, int rank);
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 14332f69f6d..0761ebb26d1 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -1,6 +1,6 @@
/* Backend function setup
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
- 2011
+ 2011, 2012
Free Software Foundation, Inc.
Contributed by Paul Brook
@@ -121,6 +121,7 @@ tree gfor_fndecl_associated;
tree gfor_fndecl_caf_init;
tree gfor_fndecl_caf_finalize;
tree gfor_fndecl_caf_register;
+tree gfor_fndecl_caf_deregister;
tree gfor_fndecl_caf_critical;
tree gfor_fndecl_caf_end_critical;
tree gfor_fndecl_caf_sync_all;
@@ -3163,7 +3164,11 @@ gfc_build_builtin_function_decls (void)
gfor_fndecl_caf_register = gfc_build_library_function_decl_with_spec (
get_identifier (PREFIX("caf_register")), "...WWW", pvoid_type_node, 6,
size_type_node, integer_type_node, ppvoid_type_node, pint_type,
- build_pointer_type (pchar_type_node), integer_type_node);
+ pchar_type_node, integer_type_node);
+
+ gfor_fndecl_caf_deregister = gfc_build_library_function_decl_with_spec (
+ get_identifier (PREFIX("caf_deregister")), ".WWW", void_type_node, 4,
+ ppvoid_type_node, pint_type, pchar_type_node, integer_type_node);
gfor_fndecl_caf_critical = gfc_build_library_function_decl (
get_identifier (PREFIX("caf_critical")), void_type_node, 0);
@@ -3688,6 +3693,8 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block)
{
if (!sym->attr.save)
{
+ tree descriptor = NULL_TREE;
+
/* Nullify and automatic deallocation of allocatable
scalars. */
e = gfc_lval_expr_from_sym (sym);
@@ -3712,6 +3719,7 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block)
else
{
gfc_conv_expr (&se, e);
+ descriptor = se.expr;
se.expr = gfc_conv_descriptor_data_addr (se.expr);
se.expr = build_fold_indirect_ref_loc (input_location, se.expr);
}
@@ -3761,9 +3769,18 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block)
/* Deallocate when leaving the scope. Nullifying is not
needed. */
if (!sym->attr.result && !sym->attr.dummy)
- tmp = gfc_deallocate_scalar_with_status (se.expr, NULL, true,
- NULL, sym->ts);
-
+ {
+ if (sym->ts.type == BT_CLASS
+ && CLASS_DATA (sym)->attr.codimension)
+ tmp = gfc_deallocate_with_status (descriptor, NULL_TREE,
+ NULL_TREE, NULL_TREE,
+ NULL_TREE, true, NULL,
+ true);
+ else
+ tmp = gfc_deallocate_scalar_with_status (se.expr, NULL,
+ true, NULL,
+ sym->ts);
+ }
if (sym->ts.type == BT_CLASS)
{
/* Initialize _vptr to declared type. */
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 54572fbf3db..14411e05cde 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -3525,7 +3525,9 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
gfc_init_block (&block);
tmp = gfc_deallocate_with_status (parmse.expr, NULL_TREE,
- true, NULL);
+ NULL_TREE, NULL_TREE,
+ NULL_TREE, true, NULL,
+ false);
gfc_add_expr_to_block (&block, tmp);
tmp = fold_build2_loc (input_location, MODIFY_EXPR,
void_type_node, parmse.expr,
@@ -3665,7 +3667,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
{
tmp = build_fold_indirect_ref_loc (input_location,
parmse.expr);
- tmp = gfc_trans_dealloc_allocated (tmp);
+ tmp = gfc_trans_dealloc_allocated (tmp, false);
if (fsym->attr.optional
&& e->expr_type == EXPR_VARIABLE
&& e->symtree->n.sym->attr.optional)
@@ -4335,7 +4337,9 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
/* Finally free the temporary's data field. */
tmp = gfc_conv_descriptor_data_get (tmp2);
- tmp = gfc_deallocate_with_status (tmp, NULL_TREE, true, NULL);
+ tmp = gfc_deallocate_with_status (tmp, NULL_TREE, NULL_TREE,
+ NULL_TREE, NULL_TREE, true,
+ NULL, false);
gfc_add_expr_to_block (&se->pre, tmp);
}
}
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index 0caa59d0bb4..cb742733df8 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -1,5 +1,6 @@
/* Intrinsic translation
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+ 2011, 2012
Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>
and Steven Bosscher <s.bosscher@student.tudelft.nl>
@@ -7355,7 +7356,8 @@ conv_intrinsic_move_alloc (gfc_code *code)
gfc_conv_expr_descriptor (&from_se, from_expr, from_ss);
tmp = gfc_conv_descriptor_data_get (to_se.expr);
- tmp = gfc_deallocate_with_status (tmp, NULL_TREE, true, to_expr);
+ tmp = gfc_deallocate_with_status (tmp, NULL_TREE, NULL_TREE, NULL_TREE,
+ NULL_TREE, true, to_expr, false);
gfc_add_expr_to_block (&block, tmp);
/* Move the pointer and update the array descriptor data. */
diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index a41e97bdadf..f8b3e2280d0 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -1,5 +1,5 @@
/* OpenMP directive translation -- generate GCC trees from gfc_code.
- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Jakub Jelinek <jakub@redhat.com>
@@ -326,7 +326,7 @@ gfc_omp_clause_dtor (tree clause ATTRIBUTE_UNUSED, tree decl)
/* Allocatable arrays in FIRSTPRIVATE/LASTPRIVATE etc. clauses need
to be deallocated if they were allocated. */
- return gfc_trans_dealloc_allocated (decl);
+ return gfc_trans_dealloc_allocated (decl, false);
}
@@ -708,7 +708,7 @@ gfc_trans_omp_array_reduction (tree c, gfc_symbol *sym, locus where)
gfc_start_block (&block);
gfc_add_expr_to_block (&block, gfc_trans_assignment (e3, e4, false,
true));
- gfc_add_expr_to_block (&block, gfc_trans_dealloc_allocated (decl));
+ gfc_add_expr_to_block (&block, gfc_trans_dealloc_allocated (decl, false));
stmt = gfc_finish_block (&block);
}
else
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index 92f7f43729b..9456e2d3b05 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -1,6 +1,6 @@
/* Statement translation -- generate GCC trees from gfc_code.
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
- 2011
+ 2011, 2012
Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>
and Steven Bosscher <s.bosscher@student.tudelft.nl>
@@ -755,8 +755,8 @@ gfc_trans_sync (gfc_code *code, gfc_exec_op type)
if (gfc_option.coarray == GFC_FCOARRAY_LIB)
{
tmp = builtin_decl_explicit (BUILT_IN_SYNC_SYNCHRONIZE);
- tmp = build_call_expr_loc (input_location, tmp, 0);
- gfc_add_expr_to_block (&se.pre, tmp);
+ tmp = build_call_expr_loc (input_location, tmp, 0);
+ gfc_add_expr_to_block (&se.pre, tmp);
}
if (gfc_option.coarray != GFC_FCOARRAY_LIB || type == EXEC_SYNC_MEMORY)
@@ -4738,10 +4738,10 @@ gfc_trans_allocate (gfc_code * code)
if (code->expr2)
{
gfc_init_se (&se, NULL);
+ se.want_pointer = 1;
gfc_conv_expr_lhs (&se, code->expr2);
-
- errlen = gfc_get_expr_charlen (code->expr2);
- errmsg = gfc_build_addr_expr (pchar_type_node, se.expr);
+ errmsg = se.expr;
+ errlen = se.string_length;
}
else
{
@@ -4752,8 +4752,7 @@ gfc_trans_allocate (gfc_code * code)
/* GOTO destinations. */
label_errmsg = gfc_build_label_decl (NULL_TREE);
label_finish = gfc_build_label_decl (NULL_TREE);
- TREE_USED (label_errmsg) = 1;
- TREE_USED (label_finish) = 1;
+ TREE_USED (label_finish) = 0;
}
expr3 = NULL_TREE;
@@ -4772,7 +4771,8 @@ gfc_trans_allocate (gfc_code * code)
se.descriptor_only = 1;
gfc_conv_expr (&se, expr);
- if (!gfc_array_allocate (&se, expr, stat, errmsg, errlen, code->expr3))
+ if (!gfc_array_allocate (&se, expr, stat, errmsg, errlen, label_finish,
+ code->expr3))
{
/* A scalar or derived type. */
@@ -4892,7 +4892,7 @@ gfc_trans_allocate (gfc_code * code)
/* Allocate - for non-pointers with re-alloc checking. */
if (gfc_expr_attr (expr).allocatable)
gfc_allocate_allocatable (&se.pre, se.expr, memsz, NULL_TREE,
- stat, errmsg, errlen, expr);
+ stat, errmsg, errlen, label_finish, expr);
else
gfc_allocate_using_malloc (&se.pre, se.expr, memsz, stat);
@@ -4919,18 +4919,12 @@ gfc_trans_allocate (gfc_code * code)
/* Error checking -- Note: ERRMSG only makes sense with STAT. */
if (code->expr1)
{
- /* The coarray library already sets the errmsg. */
- if (gfc_option.coarray == GFC_FCOARRAY_LIB
- && gfc_expr_attr (expr).codimension)
- tmp = build1_v (GOTO_EXPR, label_finish);
- else
- tmp = build1_v (GOTO_EXPR, label_errmsg);
-
+ tmp = build1_v (GOTO_EXPR, label_errmsg);
parm = fold_build2_loc (input_location, NE_EXPR,
boolean_type_node, stat,
build_int_cst (TREE_TYPE (stat), 0));
tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
- gfc_unlikely(parm), tmp,
+ gfc_unlikely (parm), tmp,
build_empty_stmt (input_location));
gfc_add_expr_to_block (&block, tmp);
}
@@ -5102,26 +5096,24 @@ gfc_trans_allocate (gfc_code * code)
gfc_free_expr (expr);
}
- /* STAT (ERRMSG only makes sense with STAT). */
+ /* STAT. */
if (code->expr1)
{
tmp = build1_v (LABEL_EXPR, label_errmsg);
gfc_add_expr_to_block (&block, tmp);
}
- /* ERRMSG block. */
- if (code->expr2)
+ /* ERRMSG - only useful if STAT is present. */
+ if (code->expr1 && code->expr2)
{
- /* A better error message may be possible, but not required. */
const char *msg = "Attempt to allocate an allocated object";
- tree slen, dlen;
+ tree slen, dlen, errmsg_str;
+ stmtblock_t errmsg_block;
- gfc_init_se (&se, NULL);
- gfc_conv_expr_lhs (&se, code->expr2);
+ gfc_init_block (&errmsg_block);
- errmsg = gfc_create_var (pchar_type_node, "ERRMSG");
-
- gfc_add_modify (&block, errmsg,
+ errmsg_str = gfc_create_var (pchar_type_node, "ERRMSG");
+ gfc_add_modify (&errmsg_block, errmsg_str,
gfc_build_addr_expr (pchar_type_node,
gfc_build_localized_cstring_const (msg)));
@@ -5130,9 +5122,9 @@ gfc_trans_allocate (gfc_code * code)
slen = fold_build2_loc (input_location, MIN_EXPR, TREE_TYPE (slen), dlen,
slen);
- dlen = build_call_expr_loc (input_location,
- builtin_decl_explicit (BUILT_IN_MEMCPY), 3,
- gfc_build_addr_expr (pvoid_type_node, se.expr), errmsg, slen);
+ gfc_trans_string_copy (&errmsg_block, dlen, errmsg, code->expr2->ts.kind,
+ slen, errmsg_str, gfc_default_character_kind);
+ dlen = gfc_finish_block (&errmsg_block);
tmp = fold_build2_loc (input_location, NE_EXPR, boolean_type_node, stat,
build_int_cst (TREE_TYPE (stat), 0));
@@ -5142,16 +5134,15 @@ gfc_trans_allocate (gfc_code * code)
gfc_add_expr_to_block (&block, tmp);
}
- /* STAT (ERRMSG only makes sense with STAT). */
- if (code->expr1)
- {
- tmp = build1_v (LABEL_EXPR, label_finish);
- gfc_add_expr_to_block (&block, tmp);
- }
-
/* STAT block. */
if (code->expr1)
{
+ if (TREE_USED (label_finish))
+ {
+ tmp = build1_v (LABEL_EXPR, label_finish);
+ gfc_add_expr_to_block (&block, tmp);
+ }
+
gfc_init_se (&se, NULL);
gfc_conv_expr_lhs (&se, code->expr1);
tmp = convert (TREE_TYPE (se.expr), stat);
@@ -5172,29 +5163,39 @@ gfc_trans_deallocate (gfc_code *code)
{
gfc_se se;
gfc_alloc *al;
- tree apstat, astat, pstat, stat, tmp;
+ tree apstat, pstat, stat, errmsg, errlen, tmp;
+ tree label_finish, label_errmsg;
stmtblock_t block;
- pstat = apstat = stat = astat = tmp = NULL_TREE;
+ pstat = apstat = stat = errmsg = errlen = tmp = NULL_TREE;
+ label_finish = label_errmsg = NULL_TREE;
gfc_start_block (&block);
/* Count the number of failed deallocations. If deallocate() was
called with STAT= , then set STAT to the count. If deallocate
was called with ERRMSG, then set ERRMG to a string. */
- if (code->expr1 || code->expr2)
+ if (code->expr1)
{
tree gfc_int4_type_node = gfc_get_int_type (4);
stat = gfc_create_var (gfc_int4_type_node, "stat");
pstat = gfc_build_addr_expr (NULL_TREE, stat);
- /* Running total of possible deallocation failures. */
- astat = gfc_create_var (gfc_int4_type_node, "astat");
- apstat = gfc_build_addr_expr (NULL_TREE, astat);
+ /* GOTO destinations. */
+ label_errmsg = gfc_build_label_decl (NULL_TREE);
+ label_finish = gfc_build_label_decl (NULL_TREE);
+ TREE_USED (label_finish) = 0;
+ }
- /* Initialize astat to 0. */
- gfc_add_modify (&block, astat, build_int_cst (TREE_TYPE (astat), 0));
+ /* Set ERRMSG - only needed if STAT is available. */
+ if (code->expr1 && code->expr2)
+ {
+ gfc_init_se (&se, NULL);
+ se.want_pointer = 1;
+ gfc_conv_expr_lhs (&se, code->expr2);
+ errmsg = se.expr;
+ errlen = se.string_length;
}
for (al = code->ext.alloc.list; al != NULL; al = al->next)
@@ -5212,7 +5213,7 @@ gfc_trans_deallocate (gfc_code *code)
se.descriptor_only = 1;
gfc_conv_expr (&se, expr);
- if (expr->rank || gfc_expr_attr (expr).codimension)
+ if (expr->rank || gfc_is_coarray (expr))
{
if (expr->ts.type == BT_DERIVED && expr->ts.u.derived->attr.alloc_comp)
{
@@ -5232,7 +5233,8 @@ gfc_trans_deallocate (gfc_code *code)
gfc_add_expr_to_block (&se.pre, tmp);
}
}
- tmp = gfc_array_deallocate (se.expr, pstat, expr);
+ tmp = gfc_array_deallocate (se.expr, pstat, errmsg, errlen,
+ label_finish, expr);
gfc_add_expr_to_block (&se.pre, tmp);
}
else
@@ -5261,13 +5263,17 @@ gfc_trans_deallocate (gfc_code *code)
}
}
- /* Keep track of the number of failed deallocations by adding stat
- of the last deallocation to the running total. */
- if (code->expr1 || code->expr2)
+ if (code->expr1)
{
- apstat = fold_build2_loc (input_location, PLUS_EXPR,
- TREE_TYPE (stat), astat, stat);
- gfc_add_modify (&se.pre, astat, apstat);
+ tree cond;
+
+ cond = fold_build2_loc (input_location, NE_EXPR, boolean_type_node, stat,
+ build_int_cst (TREE_TYPE (stat), 0));
+ tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
+ gfc_unlikely (cond),
+ build1_v (GOTO_EXPR, label_errmsg),
+ build_empty_stmt (input_location));
+ gfc_add_expr_to_block (&se.pre, tmp);
}
tmp = gfc_finish_block (&se.pre);
@@ -5275,48 +5281,56 @@ gfc_trans_deallocate (gfc_code *code)
gfc_free_expr (expr);
}
- /* Set STAT. */
if (code->expr1)
{
- gfc_init_se (&se, NULL);
- gfc_conv_expr_lhs (&se, code->expr1);
- tmp = convert (TREE_TYPE (se.expr), astat);
- gfc_add_modify (&block, se.expr, tmp);
+ tmp = build1_v (LABEL_EXPR, label_errmsg);
+ gfc_add_expr_to_block (&block, tmp);
}
- /* Set ERRMSG. */
- if (code->expr2)
+ /* Set ERRMSG - only needed if STAT is available. */
+ if (code->expr1 && code->expr2)
{
- /* A better error message may be possible, but not required. */
const char *msg = "Attempt to deallocate an unallocated object";
- tree errmsg, slen, dlen;
+ stmtblock_t errmsg_block;
+ tree errmsg_str, slen, dlen, cond;
- gfc_init_se (&se, NULL);
- gfc_conv_expr_lhs (&se, code->expr2);
+ gfc_init_block (&errmsg_block);
- errmsg = gfc_create_var (pchar_type_node, "ERRMSG");
-
- gfc_add_modify (&block, errmsg,
+ errmsg_str = gfc_create_var (pchar_type_node, "ERRMSG");
+ gfc_add_modify (&errmsg_block, errmsg_str,
gfc_build_addr_expr (pchar_type_node,
gfc_build_localized_cstring_const (msg)));
-
slen = build_int_cst (gfc_charlen_type_node, ((int) strlen (msg)));
dlen = gfc_get_expr_charlen (code->expr2);
- slen = fold_build2_loc (input_location, MIN_EXPR, TREE_TYPE (slen), dlen,
- slen);
- dlen = build_call_expr_loc (input_location,
- builtin_decl_explicit (BUILT_IN_MEMCPY), 3,
- gfc_build_addr_expr (pvoid_type_node, se.expr), errmsg, slen);
+ gfc_trans_string_copy (&errmsg_block, dlen, errmsg, code->expr2->ts.kind,
+ slen, errmsg_str, gfc_default_character_kind);
+ tmp = gfc_finish_block (&errmsg_block);
- tmp = fold_build2_loc (input_location, NE_EXPR, boolean_type_node, astat,
- build_int_cst (TREE_TYPE (astat), 0));
+ cond = fold_build2_loc (input_location, NE_EXPR, boolean_type_node, stat,
+ build_int_cst (TREE_TYPE (stat), 0));
+ tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
+ gfc_unlikely (cond), tmp,
+ build_empty_stmt (input_location));
- tmp = build3_v (COND_EXPR, tmp, dlen, build_empty_stmt (input_location));
+ gfc_add_expr_to_block (&block, tmp);
+ }
+ if (code->expr1 && TREE_USED (label_finish))
+ {
+ tmp = build1_v (LABEL_EXPR, label_finish);
gfc_add_expr_to_block (&block, tmp);
}
+ /* Set STAT. */
+ if (code->expr1)
+ {
+ gfc_init_se (&se, NULL);
+ gfc_conv_expr_lhs (&se, code->expr1);
+ tmp = convert (TREE_TYPE (se.expr), stat);
+ gfc_add_modify (&block, se.expr, tmp);
+ }
+
return gfc_finish_block (&block);
}
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 085f58f608a..8075dbc32e1 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -1,5 +1,5 @@
/* Code translation -- generate GCC trees from gfc_code.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
Free Software Foundation, Inc.
Contributed by Paul Brook
@@ -653,7 +653,7 @@ gfc_allocate_using_malloc (stmtblock_t * block, tree pointer,
boolean_type_node, pointer,
build_int_cst (prvoid_type_node, 0));
tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
- gfc_unlikely(error_cond), on_error,
+ gfc_unlikely (error_cond), on_error,
build_empty_stmt (input_location));
gfc_add_expr_to_block (block, tmp);
@@ -738,7 +738,8 @@ gfc_allocate_using_lib (stmtblock_t * block, tree pointer, tree size,
and variable name in case a runtime error has to be printed. */
void
gfc_allocate_allocatable (stmtblock_t * block, tree mem, tree size, tree token,
- tree status, tree errmsg, tree errlen, gfc_expr* expr)
+ tree status, tree errmsg, tree errlen, tree label_finish,
+ gfc_expr* expr)
{
stmtblock_t alloc_block;
tree tmp, null_mem, alloc, error;
@@ -757,8 +758,23 @@ gfc_allocate_allocatable (stmtblock_t * block, tree mem, tree size, tree token,
if (gfc_option.coarray == GFC_FCOARRAY_LIB
&& gfc_expr_attr (expr).codimension)
- gfc_allocate_using_lib (&alloc_block, mem, size, token, status,
- errmsg, errlen);
+ {
+ tree cond;
+
+ gfc_allocate_using_lib (&alloc_block, mem, size, token, status,
+ errmsg, errlen);
+ if (status != NULL_TREE)
+ {
+ TREE_USED (label_finish) = 1;
+ tmp = build1_v (GOTO_EXPR, label_finish);
+ cond = fold_build2_loc (input_location, NE_EXPR, boolean_type_node,
+ status, build_zero_cst (TREE_TYPE (status)));
+ tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
+ gfc_unlikely (cond), tmp,
+ build_empty_stmt (input_location));
+ gfc_add_expr_to_block (&alloc_block, tmp);
+ }
+ }
else
gfc_allocate_using_malloc (&alloc_block, mem, size, status);
@@ -852,13 +868,27 @@ gfc_call_free (tree var)
each procedure).
If a runtime-message is possible, `expr' must point to the original
- expression being deallocated for its locus and variable name. */
+ expression being deallocated for its locus and variable name.
+
+ For coarrays, "pointer" must be the array descriptor and not its
+ "data" component. */
tree
-gfc_deallocate_with_status (tree pointer, tree status, bool can_fail,
- gfc_expr* expr)
+gfc_deallocate_with_status (tree pointer, tree status, tree errmsg,
+ tree errlen, tree label_finish,
+ bool can_fail, gfc_expr* expr, bool coarray)
{
stmtblock_t null, non_null;
tree cond, tmp, error;
+ tree status_type = NULL_TREE;
+ tree caf_decl = NULL_TREE;
+
+ if (coarray)
+ {
+ gcc_assert (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (pointer)));
+ caf_decl = pointer;
+ pointer = gfc_conv_descriptor_data_get (caf_decl);
+ STRIP_NOPS (pointer);
+ }
cond = fold_build2_loc (input_location, EQ_EXPR, boolean_type_node, pointer,
build_int_cst (TREE_TYPE (pointer), 0));
@@ -884,9 +914,9 @@ gfc_deallocate_with_status (tree pointer, tree status, bool can_fail,
if (status != NULL_TREE && !integer_zerop (status))
{
- tree status_type = TREE_TYPE (TREE_TYPE (status));
tree cond2;
+ status_type = TREE_TYPE (TREE_TYPE (status));
cond2 = fold_build2_loc (input_location, NE_EXPR, boolean_type_node,
status, build_int_cst (TREE_TYPE (status), 0));
tmp = fold_build2_loc (input_location, MODIFY_EXPR, status_type,
@@ -901,26 +931,90 @@ gfc_deallocate_with_status (tree pointer, tree status, bool can_fail,
/* When POINTER is not NULL, we free it. */
gfc_start_block (&non_null);
- tmp = build_call_expr_loc (input_location,
- builtin_decl_explicit (BUILT_IN_FREE), 1,
- fold_convert (pvoid_type_node, pointer));
- gfc_add_expr_to_block (&non_null, tmp);
+ if (!coarray || gfc_option.coarray != GFC_FCOARRAY_LIB)
+ {
+ tmp = build_call_expr_loc (input_location,
+ builtin_decl_explicit (BUILT_IN_FREE), 1,
+ fold_convert (pvoid_type_node, pointer));
+ gfc_add_expr_to_block (&non_null, tmp);
- if (status != NULL_TREE && !integer_zerop (status))
+ if (status != NULL_TREE && !integer_zerop (status))
+ {
+ /* We set STATUS to zero if it is present. */
+ tree status_type = TREE_TYPE (TREE_TYPE (status));
+ tree cond2;
+
+ cond2 = fold_build2_loc (input_location, NE_EXPR, boolean_type_node,
+ status,
+ build_int_cst (TREE_TYPE (status), 0));
+ tmp = fold_build2_loc (input_location, MODIFY_EXPR, status_type,
+ fold_build1_loc (input_location, INDIRECT_REF,
+ status_type, status),
+ build_int_cst (status_type, 0));
+ tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
+ gfc_unlikely (cond2), tmp,
+ build_empty_stmt (input_location));
+ gfc_add_expr_to_block (&non_null, tmp);
+ }
+ }
+ else
{
- /* We set STATUS to zero if it is present. */
- tree status_type = TREE_TYPE (TREE_TYPE (status));
- tree cond2;
+ tree caf_type, token, cond2;
+ tree pstat = null_pointer_node;
- cond2 = fold_build2_loc (input_location, NE_EXPR, boolean_type_node,
- status, build_int_cst (TREE_TYPE (status), 0));
- tmp = fold_build2_loc (input_location, MODIFY_EXPR, status_type,
- fold_build1_loc (input_location, INDIRECT_REF,
- status_type, status),
- build_int_cst (status_type, 0));
- tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node, cond2,
- tmp, build_empty_stmt (input_location));
+ if (errmsg == NULL_TREE)
+ {
+ gcc_assert (errlen == NULL_TREE);
+ errmsg = null_pointer_node;
+ errlen = build_zero_cst (integer_type_node);
+ }
+ else
+ {
+ gcc_assert (errlen != NULL_TREE);
+ if (!POINTER_TYPE_P (TREE_TYPE (errmsg)))
+ errmsg = gfc_build_addr_expr (NULL_TREE, errmsg);
+ }
+
+ caf_type = TREE_TYPE (caf_decl);
+
+ if (status != NULL_TREE && !integer_zerop (status))
+ {
+ gcc_assert (status_type == integer_type_node);
+ pstat = status;
+ }
+
+ if (GFC_DESCRIPTOR_TYPE_P (caf_type)
+ && GFC_TYPE_ARRAY_AKIND (caf_type) == GFC_ARRAY_ALLOCATABLE)
+ token = gfc_conv_descriptor_token (caf_decl);
+ else if (DECL_LANG_SPECIFIC (caf_decl)
+ && GFC_DECL_TOKEN (caf_decl) != NULL_TREE)
+ token = GFC_DECL_TOKEN (caf_decl);
+ else
+ {
+ gcc_assert (GFC_ARRAY_TYPE_P (caf_type)
+ && GFC_TYPE_ARRAY_CAF_TOKEN (caf_type) != NULL_TREE);
+ token = GFC_TYPE_ARRAY_CAF_TOKEN (caf_type);
+ }
+
+ token = gfc_build_addr_expr (NULL_TREE, token);
+ tmp = build_call_expr_loc (input_location,
+ gfor_fndecl_caf_deregister, 4,
+ token, pstat, errmsg, errlen);
gfc_add_expr_to_block (&non_null, tmp);
+
+ if (status != NULL_TREE)
+ {
+ tree stat = build_fold_indirect_ref_loc (input_location, status);
+
+ TREE_USED (label_finish) = 1;
+ tmp = build1_v (GOTO_EXPR, label_finish);
+ cond2 = fold_build2_loc (input_location, NE_EXPR, boolean_type_node,
+ stat, build_zero_cst (TREE_TYPE (stat)));
+ tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
+ gfc_unlikely (cond2), tmp,
+ build_empty_stmt (input_location));
+ gfc_add_expr_to_block (&non_null, tmp);
+ }
}
return fold_build3_loc (input_location, COND_EXPR, void_type_node, cond,
diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h
index 61a48172e5c..b7c25b34488 100644
--- a/gcc/fortran/trans.h
+++ b/gcc/fortran/trans.h
@@ -1,5 +1,6 @@
/* Header for code translation functions
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+ 2011, 2012
Free Software Foundation, Inc.
Contributed by Paul Brook
@@ -587,14 +588,15 @@ tree gfc_call_malloc (stmtblock_t *, tree, tree);
tree gfc_build_memcpy_call (tree, tree, tree);
/* Allocate memory for allocatable variables, with optional status variable. */
-void gfc_allocate_allocatable (stmtblock_t*, tree, tree, tree,
+void gfc_allocate_allocatable (stmtblock_t*, tree, tree, tree, tree,
tree, tree, tree, gfc_expr*);
/* Allocate memory, with optional status variable. */
void gfc_allocate_using_malloc (stmtblock_t *, tree, tree, tree);
/* Generate code to deallocate an array. */
-tree gfc_deallocate_with_status (tree, tree, bool, gfc_expr*);
+tree gfc_deallocate_with_status (tree, tree, tree, tree, tree, bool,
+ gfc_expr *, bool);
tree gfc_deallocate_scalar_with_status (tree, tree, bool, gfc_expr*, gfc_typespec);
/* Generate code to call realloc(). */
@@ -676,6 +678,7 @@ extern GTY(()) tree gfor_fndecl_associated;
extern GTY(()) tree gfor_fndecl_caf_init;
extern GTY(()) tree gfor_fndecl_caf_finalize;
extern GTY(()) tree gfor_fndecl_caf_register;
+extern GTY(()) tree gfor_fndecl_caf_deregister;
extern GTY(()) tree gfor_fndecl_caf_critical;
extern GTY(()) tree gfor_fndecl_caf_end_critical;
extern GTY(()) tree gfor_fndecl_caf_sync_all;
diff --git a/gcc/gimple.h b/gcc/gimple.h
index 9ac8f26c55f..484d1a0b407 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -1,6 +1,6 @@
/* Gimple IR definitions.
- Copyright 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Contributed by Aldy Hernandez <aldyh@redhat.com>
This file is part of GCC.
@@ -1092,6 +1092,7 @@ struct gimplify_ctx
bool save_stack;
bool into_ssa;
bool allow_rhs_cond_expr;
+ bool in_cleanup_point_expr;
};
extern enum gimplify_status gimplify_expr (tree *, gimple_seq *, gimple_seq *,
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 14d627e7254..5f2cbf3c769 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -1,7 +1,7 @@
/* Tree lowering pass. This pass converts the GENERIC functions-as-trees
tree representation into the GIMPLE form.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+ 2012 Free Software Foundation, Inc.
Major work done by Sebastian Pop <s.pop@laposte.net>,
Diego Novillo <dnovillo@redhat.com> and Jason Merrill <jason@redhat.com>.
@@ -5226,13 +5226,16 @@ gimplify_cleanup_point_expr (tree *expr_p, gimple_seq *pre_p)
any cleanups collected outside the CLEANUP_POINT_EXPR. */
int old_conds = gimplify_ctxp->conditions;
gimple_seq old_cleanups = gimplify_ctxp->conditional_cleanups;
+ bool old_in_cleanup_point_expr = gimplify_ctxp->in_cleanup_point_expr;
gimplify_ctxp->conditions = 0;
gimplify_ctxp->conditional_cleanups = NULL;
+ gimplify_ctxp->in_cleanup_point_expr = true;
gimplify_stmt (&TREE_OPERAND (*expr_p, 0), &body_sequence);
gimplify_ctxp->conditions = old_conds;
gimplify_ctxp->conditional_cleanups = old_cleanups;
+ gimplify_ctxp->in_cleanup_point_expr = old_in_cleanup_point_expr;
for (iter = gsi_start (body_sequence); !gsi_end_p (iter); )
{
@@ -5408,7 +5411,8 @@ gimplify_target_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
/* Add a clobber for the temporary going out of scope, like
gimplify_bind_expr. */
- if (needs_to_live_in_memory (temp))
+ if (gimplify_ctxp->in_cleanup_point_expr
+ && needs_to_live_in_memory (temp))
{
tree clobber = build_constructor (TREE_TYPE (temp), NULL);
TREE_THIS_VOLATILE (clobber) = true;
diff --git a/gcc/go/gofrontend/backend.h b/gcc/go/gofrontend/backend.h
index 24a0132da99..382f5a1c156 100644
--- a/gcc/go/gofrontend/backend.h
+++ b/gcc/go/gofrontend/backend.h
@@ -379,9 +379,9 @@ class Backend
// must be a pointer to this struct type.
//
// We must create the named structure before we know its
- // initializer, because the initializer refer to its own address.
- // After calling this the frontend will call
- // set_immutable_struct_initializer.
+ // initializer, because the initializer may refer to its own
+ // address. After calling this the frontend will call
+ // immutable_struct_set_init.
virtual Bvariable*
immutable_struct(const std::string& name, bool is_common, Btype* type,
Location) = 0;
@@ -400,8 +400,8 @@ class Backend
// Create a reference to a named immutable initialized data
// structure defined in some other package. This will be a
- // structure created by a call to immutable_struct_expression with
- // the same NAME and TYPE and with IS_COMMON passed as false. This
+ // structure created by a call to immutable_struct with the same
+ // NAME and TYPE and with IS_COMMON passed as false. This
// corresponds to an extern const global variable in C.
virtual Bvariable*
immutable_struct_reference(const std::string& name, Btype* type,
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index dfe9b5167bb..84c18a3f440 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -1135,6 +1135,63 @@ Expression::make_temporary_reference(Temporary_statement* statement,
return new Temporary_reference_expression(statement, location);
}
+// Class Set_and_use_temporary_expression.
+
+// Return the type.
+
+Type*
+Set_and_use_temporary_expression::do_type()
+{
+ return this->statement_->type();
+}
+
+// Take the address.
+
+void
+Set_and_use_temporary_expression::do_address_taken(bool)
+{
+ this->statement_->set_is_address_taken();
+}
+
+// Return the backend representation.
+
+tree
+Set_and_use_temporary_expression::do_get_tree(Translate_context* context)
+{
+ Bvariable* bvar = this->statement_->get_backend_variable(context);
+ tree var_tree = var_to_tree(bvar);
+ tree expr_tree = this->expr_->get_tree(context);
+ if (var_tree == error_mark_node || expr_tree == error_mark_node)
+ return error_mark_node;
+ Location loc = this->location();
+ return build2_loc(loc.gcc_location(), COMPOUND_EXPR, TREE_TYPE(var_tree),
+ build2_loc(loc.gcc_location(), MODIFY_EXPR, void_type_node,
+ var_tree, expr_tree),
+ var_tree);
+}
+
+// Dump.
+
+void
+Set_and_use_temporary_expression::do_dump_expression(
+ Ast_dump_context* ast_dump_context) const
+{
+ ast_dump_context->ostream() << '(';
+ ast_dump_context->dump_temp_variable_name(this->statement_);
+ ast_dump_context->ostream() << " = ";
+ this->expr_->dump_expression(ast_dump_context);
+ ast_dump_context->ostream() << ')';
+}
+
+// Make a set-and-use temporary.
+
+Set_and_use_temporary_expression*
+Expression::make_set_and_use_temporary(Temporary_statement* statement,
+ Expression* expr, Location location)
+{
+ return new Set_and_use_temporary_expression(statement, expr, location);
+}
+
// A sink expression--a use of the blank identifier _.
class Sink_expression : public Expression
@@ -4468,11 +4525,38 @@ Unary_expression::do_check_types(Gogo*)
tree
Unary_expression::do_get_tree(Translate_context* context)
{
+ Location loc = this->location();
+
+ // Taking the address of a set-and-use-temporary expression requires
+ // setting the temporary and then taking the address.
+ if (this->op_ == OPERATOR_AND)
+ {
+ Set_and_use_temporary_expression* sut =
+ this->expr_->set_and_use_temporary_expression();
+ if (sut != NULL)
+ {
+ Temporary_statement* temp = sut->temporary();
+ Bvariable* bvar = temp->get_backend_variable(context);
+ tree var_tree = var_to_tree(bvar);
+ Expression* val = sut->expression();
+ tree val_tree = val->get_tree(context);
+ if (var_tree == error_mark_node || val_tree == error_mark_node)
+ return error_mark_node;
+ tree addr_tree = build_fold_addr_expr_loc(loc.gcc_location(),
+ var_tree);
+ return build2_loc(loc.gcc_location(), COMPOUND_EXPR,
+ TREE_TYPE(addr_tree),
+ build2_loc(sut->location().gcc_location(),
+ MODIFY_EXPR, void_type_node,
+ var_tree, val_tree),
+ addr_tree);
+ }
+ }
+
tree expr = this->expr_->get_tree(context);
if (expr == error_mark_node)
return error_mark_node;
- Location loc = this->location();
switch (this->op_)
{
case OPERATOR_PLUS:
@@ -5398,7 +5482,8 @@ Binary_expression::eval_complex(Operator op, Type* left_type,
// constants.
Expression*
-Binary_expression::do_lower(Gogo*, Named_object*, Statement_inserter*, int)
+Binary_expression::do_lower(Gogo* gogo, Named_object*,
+ Statement_inserter* inserter, int)
{
Location location = this->location();
Operator op = this->op_;
@@ -5727,9 +5812,183 @@ Binary_expression::do_lower(Gogo*, Named_object*, Statement_inserter*, int)
mpz_clear(right_val);
}
+ // Lower struct and array comparisons.
+ if (op == OPERATOR_EQEQ || op == OPERATOR_NOTEQ)
+ {
+ if (left->type()->struct_type() != NULL)
+ return this->lower_struct_comparison(gogo, inserter);
+ else if (left->type()->array_type() != NULL
+ && !left->type()->is_slice_type())
+ return this->lower_array_comparison(gogo, inserter);
+ }
+
return this;
}
+// Lower a struct comparison.
+
+Expression*
+Binary_expression::lower_struct_comparison(Gogo* gogo,
+ Statement_inserter* inserter)
+{
+ Struct_type* st = this->left_->type()->struct_type();
+ Struct_type* st2 = this->right_->type()->struct_type();
+ if (st2 == NULL)
+ return this;
+ if (st != st2 && !Type::are_identical(st, st2, false, NULL))
+ return this;
+ if (!Type::are_compatible_for_comparison(true, this->left_->type(),
+ this->right_->type(), NULL))
+ return this;
+
+ // See if we can compare using memcmp. As a heuristic, we use
+ // memcmp rather than field references and comparisons if there are
+ // more than two fields.
+ if (st->compare_is_identity() && st->total_field_count() > 2)
+ return this->lower_compare_to_memcmp(gogo, inserter);
+
+ Location loc = this->location();
+
+ Expression* left = this->left_;
+ Temporary_statement* left_temp = NULL;
+ if (left->var_expression() == NULL
+ && left->temporary_reference_expression() == NULL)
+ {
+ left_temp = Statement::make_temporary(left->type(), NULL, loc);
+ inserter->insert(left_temp);
+ left = Expression::make_set_and_use_temporary(left_temp, left, loc);
+ }
+
+ Expression* right = this->right_;
+ Temporary_statement* right_temp = NULL;
+ if (right->var_expression() == NULL
+ && right->temporary_reference_expression() == NULL)
+ {
+ right_temp = Statement::make_temporary(right->type(), NULL, loc);
+ inserter->insert(right_temp);
+ right = Expression::make_set_and_use_temporary(right_temp, right, loc);
+ }
+
+ Expression* ret = Expression::make_boolean(true, loc);
+ const Struct_field_list* fields = st->fields();
+ unsigned int field_index = 0;
+ for (Struct_field_list::const_iterator pf = fields->begin();
+ pf != fields->end();
+ ++pf, ++field_index)
+ {
+ if (field_index > 0)
+ {
+ if (left_temp == NULL)
+ left = left->copy();
+ else
+ left = Expression::make_temporary_reference(left_temp, loc);
+ if (right_temp == NULL)
+ right = right->copy();
+ else
+ right = Expression::make_temporary_reference(right_temp, loc);
+ }
+ Expression* f1 = Expression::make_field_reference(left, field_index,
+ loc);
+ Expression* f2 = Expression::make_field_reference(right, field_index,
+ loc);
+ Expression* cond = Expression::make_binary(OPERATOR_EQEQ, f1, f2, loc);
+ ret = Expression::make_binary(OPERATOR_ANDAND, ret, cond, loc);
+ }
+
+ if (this->op_ == OPERATOR_NOTEQ)
+ ret = Expression::make_unary(OPERATOR_NOT, ret, loc);
+
+ return ret;
+}
+
+// Lower an array comparison.
+
+Expression*
+Binary_expression::lower_array_comparison(Gogo* gogo,
+ Statement_inserter* inserter)
+{
+ Array_type* at = this->left_->type()->array_type();
+ Array_type* at2 = this->right_->type()->array_type();
+ if (at2 == NULL)
+ return this;
+ if (at != at2 && !Type::are_identical(at, at2, false, NULL))
+ return this;
+ if (!Type::are_compatible_for_comparison(true, this->left_->type(),
+ this->right_->type(), NULL))
+ return this;
+
+ // Call memcmp directly if possible. This may let the middle-end
+ // optimize the call.
+ if (at->compare_is_identity())
+ return this->lower_compare_to_memcmp(gogo, inserter);
+
+ // Call the array comparison function.
+ Named_object* hash_fn;
+ Named_object* equal_fn;
+ at->type_functions(gogo, this->left_->type()->named_type(), NULL, NULL,
+ &hash_fn, &equal_fn);
+
+ Location loc = this->location();
+
+ Expression* func = Expression::make_func_reference(equal_fn, NULL, loc);
+
+ Expression_list* args = new Expression_list();
+ args->push_back(this->operand_address(inserter, this->left_));
+ args->push_back(this->operand_address(inserter, this->right_));
+ args->push_back(Expression::make_type_info(at, TYPE_INFO_SIZE));
+
+ Expression* ret = Expression::make_call(func, args, false, loc);
+
+ if (this->op_ == OPERATOR_NOTEQ)
+ ret = Expression::make_unary(OPERATOR_NOT, ret, loc);
+
+ return ret;
+}
+
+// Lower a struct or array comparison to a call to memcmp.
+
+Expression*
+Binary_expression::lower_compare_to_memcmp(Gogo*, Statement_inserter* inserter)
+{
+ Location loc = this->location();
+
+ Expression* a1 = this->operand_address(inserter, this->left_);
+ Expression* a2 = this->operand_address(inserter, this->right_);
+ Expression* len = Expression::make_type_info(this->left_->type(),
+ TYPE_INFO_SIZE);
+
+ Expression* call = Runtime::make_call(Runtime::MEMCMP, loc, 3, a1, a2, len);
+
+ mpz_t zval;
+ mpz_init_set_ui(zval, 0);
+ Expression* zero = Expression::make_integer(&zval, NULL, loc);
+ mpz_clear(zval);
+
+ return Expression::make_binary(this->op_, call, zero, loc);
+}
+
+// Return the address of EXPR, cast to unsafe.Pointer.
+
+Expression*
+Binary_expression::operand_address(Statement_inserter* inserter,
+ Expression* expr)
+{
+ Location loc = this->location();
+
+ if (!expr->is_addressable())
+ {
+ Temporary_statement* temp = Statement::make_temporary(expr->type(), NULL,
+ loc);
+ inserter->insert(temp);
+ expr = Expression::make_set_and_use_temporary(temp, expr, loc);
+ }
+ expr = Expression::make_unary(OPERATOR_AND, expr, loc);
+ static_cast<Unary_expression*>(expr)->set_does_not_escape();
+ Type* void_type = Type::make_void_type();
+ Type* unsafe_pointer_type = Type::make_pointer_type(void_type);
+ return Expression::make_cast(unsafe_pointer_type, expr, loc);
+}
+
// Return the integer constant value, if it has one.
bool
@@ -6072,49 +6331,28 @@ Binary_expression::check_operator_type(Operator op, Type* type, Type* otype,
case OPERATOR_EQEQ:
case OPERATOR_NOTEQ:
- if (type->integer_type() == NULL
- && type->float_type() == NULL
- && type->complex_type() == NULL
- && !type->is_string_type()
- && type->points_to() == NULL
- && !type->is_nil_type()
- && !type->is_boolean_type()
- && type->interface_type() == NULL
- && (type->array_type() == NULL
- || type->array_type()->length() != NULL)
- && type->map_type() == NULL
- && type->channel_type() == NULL
- && type->function_type() == NULL)
- {
- error_at(location,
- ("expected integer, floating, complex, string, pointer, "
- "boolean, interface, slice, map, channel, "
- "or function type"));
- return false;
- }
- if ((type->is_slice_type()
- || type->map_type() != NULL
- || type->function_type() != NULL)
- && !otype->is_nil_type())
- {
- error_at(location,
- ("slice, map, and function types may only "
- "be compared to nil"));
- return false;
- }
+ {
+ std::string reason;
+ if (!Type::are_compatible_for_comparison(true, type, otype, &reason))
+ {
+ error_at(location, "%s", reason.c_str());
+ return false;
+ }
+ }
break;
case OPERATOR_LT:
case OPERATOR_LE:
case OPERATOR_GT:
case OPERATOR_GE:
- if (type->integer_type() == NULL
- && type->float_type() == NULL
- && !type->is_string_type())
- {
- error_at(location, "expected integer, floating, or string type");
- return false;
- }
+ {
+ std::string reason;
+ if (!Type::are_compatible_for_comparison(false, type, otype, &reason))
+ {
+ error_at(location, "%s", reason.c_str());
+ return false;
+ }
+ }
break;
case OPERATOR_PLUS:
@@ -12740,10 +12978,10 @@ class Composite_literal_expression : public Parser_expression
lower_struct(Gogo*, Type*);
Expression*
- lower_array(Type*);
+ lower_array(Gogo*, Type*);
Expression*
- make_array(Type*, Expression_list*);
+ make_array(Gogo*, Type*, Expression_list*);
Expression*
lower_map(Gogo*, Named_object*, Statement_inserter*, Type*);
@@ -12810,7 +13048,7 @@ Composite_literal_expression::do_lower(Gogo* gogo, Named_object* function,
else if (type->struct_type() != NULL)
ret = this->lower_struct(gogo, type);
else if (type->array_type() != NULL)
- ret = this->lower_array(type);
+ ret = this->lower_array(gogo, type);
else if (type->map_type() != NULL)
ret = this->lower_map(gogo, function, inserter, type);
else
@@ -13023,11 +13261,11 @@ Composite_literal_expression::lower_struct(Gogo* gogo, Type* type)
// Lower an array composite literal.
Expression*
-Composite_literal_expression::lower_array(Type* type)
+Composite_literal_expression::lower_array(Gogo* gogo, Type* type)
{
Location location = this->location();
if (this->vals_ == NULL || !this->has_keys_)
- return this->make_array(type, this->vals_);
+ return this->make_array(gogo, type, this->vals_);
std::vector<Expression*> vals;
vals.reserve(this->vals_->size());
@@ -13127,14 +13365,15 @@ Composite_literal_expression::lower_array(Type* type)
for (size_t i = 0; i < size; ++i)
list->push_back(vals[i]);
- return this->make_array(type, list);
+ return this->make_array(gogo, type, list);
}
// Actually build the array composite literal. This handles
// [...]{...}.
Expression*
-Composite_literal_expression::make_array(Type* type, Expression_list* vals)
+Composite_literal_expression::make_array(Gogo* gogo, Type* type,
+ Expression_list* vals)
{
Location location = this->location();
Array_type* at = type->array_type();
@@ -13146,6 +13385,10 @@ Composite_literal_expression::make_array(Type* type, Expression_list* vals)
Expression* elen = Expression::make_integer(&vlen, NULL, location);
mpz_clear(vlen);
at = Type::make_array_type(at->element_type(), elen);
+
+ // This is after the finalize_methods pass, so run that now.
+ at->finalize_methods(gogo);
+
type = at;
}
if (at->length() != NULL)
diff --git a/gcc/go/gofrontend/expressions.h b/gcc/go/gofrontend/expressions.h
index 4e06b246d18..668f8a14693 100644
--- a/gcc/go/gofrontend/expressions.h
+++ b/gcc/go/gofrontend/expressions.h
@@ -25,6 +25,7 @@ class Struct_field;
class Expression_list;
class Var_expression;
class Temporary_reference_expression;
+class Set_and_use_temporary_expression;
class String_expression;
class Binary_expression;
class Call_expression;
@@ -60,6 +61,7 @@ class Expression
EXPRESSION_CONST_REFERENCE,
EXPRESSION_VAR_REFERENCE,
EXPRESSION_TEMPORARY_REFERENCE,
+ EXPRESSION_SET_AND_USE_TEMPORARY,
EXPRESSION_SINK,
EXPRESSION_FUNC_REFERENCE,
EXPRESSION_UNKNOWN_REFERENCE,
@@ -134,6 +136,13 @@ class Expression
static Temporary_reference_expression*
make_temporary_reference(Temporary_statement*, Location);
+ // Make an expressions which sets a temporary variable and then
+ // evaluates to a reference to that temporary variable. This is
+ // used to set a temporary variable while retaining the order of
+ // evaluation.
+ static Set_and_use_temporary_expression*
+ make_set_and_use_temporary(Temporary_statement*, Expression*, Location);
+
// Make a sink expression--a reference to the blank identifier _.
static Expression*
make_sink(Location);
@@ -396,6 +405,15 @@ class Expression
EXPRESSION_TEMPORARY_REFERENCE>();
}
+ // If this is a set-and-use-temporary, return the
+ // Set_and_use_temporary_expression. Otherwise, return NULL.
+ Set_and_use_temporary_expression*
+ set_and_use_temporary_expression()
+ {
+ return this->convert<Set_and_use_temporary_expression,
+ EXPRESSION_SET_AND_USE_TEMPORARY>();
+ }
+
// Return whether this is a sink expression.
bool
is_sink_expression() const
@@ -1021,6 +1039,62 @@ class Temporary_reference_expression : public Expression
bool is_lvalue_;
};
+// Set and use a temporary variable.
+
+class Set_and_use_temporary_expression : public Expression
+{
+ public:
+ Set_and_use_temporary_expression(Temporary_statement* statement,
+ Expression* expr, Location location)
+ : Expression(EXPRESSION_SET_AND_USE_TEMPORARY, location),
+ statement_(statement), expr_(expr)
+ { }
+
+ // Return the temporary.
+ Temporary_statement*
+ temporary() const
+ { return this->statement_; }
+
+ // Return the expression.
+ Expression*
+ expression() const
+ { return this->expr_; }
+
+ protected:
+ Type*
+ do_type();
+
+ void
+ do_determine_type(const Type_context*)
+ { }
+
+ Expression*
+ do_copy()
+ {
+ return make_set_and_use_temporary(this->statement_, this->expr_,
+ this->location());
+ }
+
+ bool
+ do_is_addressable() const
+ { return true; }
+
+ void
+ do_address_taken(bool);
+
+ tree
+ do_get_tree(Translate_context*);
+
+ void
+ do_dump_expression(Ast_dump_context*) const;
+
+ private:
+ // The statement where the temporary variable is defined.
+ Temporary_statement* statement_;
+ // The expression to assign to the temporary.
+ Expression* expr_;
+};
+
// A string expression.
class String_expression : public Expression
@@ -1200,6 +1274,18 @@ class Binary_expression : public Expression
do_dump_expression(Ast_dump_context*) const;
private:
+ Expression*
+ lower_struct_comparison(Gogo*, Statement_inserter*);
+
+ Expression*
+ lower_array_comparison(Gogo*, Statement_inserter*);
+
+ Expression*
+ lower_compare_to_memcmp(Gogo*, Statement_inserter*);
+
+ Expression*
+ operand_address(Statement_inserter*, Expression*);
+
// The binary operator to apply.
Operator op_;
// The left hand side operand.
diff --git a/gcc/go/gofrontend/go.cc b/gcc/go/gofrontend/go.cc
index 39af54999ed..bfa3afdfc3c 100644
--- a/gcc/go/gofrontend/go.cc
+++ b/gcc/go/gofrontend/go.cc
@@ -106,6 +106,9 @@ go_parse_input_files(const char** filenames, unsigned int filename_count,
// form which is easier to use.
::gogo->lower_parse_tree();
+ // Write out queued up functions for hash and comparison of types.
+ ::gogo->write_specific_type_functions();
+
// Now that we have seen all the names, verify that types are
// correct.
::gogo->verify_types();
diff --git a/gcc/go/gofrontend/gogo-tree.cc b/gcc/go/gofrontend/gogo-tree.cc
index dd66a7f6832..0a7cd567aa6 100644
--- a/gcc/go/gofrontend/gogo-tree.cc
+++ b/gcc/go/gofrontend/gogo-tree.cc
@@ -116,10 +116,10 @@ Gogo::define_builtin_function_trees()
NULL_TREE),
true);
- // We use __builtin_memmove for the predeclared copy function.
- define_builtin(BUILT_IN_MEMMOVE, "__builtin_memmove", "memmove",
- build_function_type_list(ptr_type_node,
- ptr_type_node,
+ // We use __builtin_memcmp for struct comparisons.
+ define_builtin(BUILT_IN_MEMCMP, "__builtin_memcmp", "memcmp",
+ build_function_type_list(integer_type_node,
+ const_ptr_type_node,
const_ptr_type_node,
size_type_node,
NULL_TREE),
@@ -647,7 +647,8 @@ Gogo::write_globals()
this->build_interface_method_tables();
Bindings* bindings = this->current_bindings();
- size_t count = bindings->size_definitions();
+ size_t count_definitions = bindings->size_definitions();
+ size_t count = count_definitions;
tree* vec = new tree[count];
@@ -822,6 +823,10 @@ Gogo::write_globals()
|| this->is_main_package())
this->write_initialization_function(init_fndecl, init_stmt_list);
+ // We should not have seen any new bindings created during the
+ // conversion.
+ go_assert(count_definitions == this->current_bindings()->size_definitions());
+
// Pass everything back to the middle-end.
wrapup_global_declarations(vec, count);
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc
index dc5ac75268a..eb24947d0bb 100644
--- a/gcc/go/gofrontend/gogo.cc
+++ b/gcc/go/gofrontend/gogo.cc
@@ -38,6 +38,8 @@ Gogo::Gogo(Backend* backend, Linemap* linemap, int int_type_size,
unique_prefix_(),
unique_prefix_specified_(false),
interface_types_(),
+ specific_type_functions_(),
+ specific_type_functions_are_written_(false),
named_types_are_converted_(false)
{
const Location loc = Linemap::predeclared_location();
@@ -978,6 +980,16 @@ Gogo::declare_package_type(const std::string& name, Location location)
return this->package_->bindings()->add_type_declaration(name, NULL, location);
}
+// Declare a function at the package level.
+
+Named_object*
+Gogo::declare_package_function(const std::string& name, Function_type* type,
+ Location location)
+{
+ return this->package_->bindings()->add_function_declaration(name, NULL, type,
+ location);
+}
+
// Define a type which was already declared.
void
@@ -1116,6 +1128,46 @@ Gogo::clear_file_scope()
}
}
+// Queue up a type specific function for later writing. These are
+// written out in write_specific_type_functions, called after the
+// parse tree is lowered.
+
+void
+Gogo::queue_specific_type_function(Type* type, Named_type* name,
+ const std::string& hash_name,
+ Function_type* hash_fntype,
+ const std::string& equal_name,
+ Function_type* equal_fntype)
+{
+ go_assert(!this->specific_type_functions_are_written_);
+ go_assert(!this->in_global_scope());
+ Specific_type_function* tsf = new Specific_type_function(type, name,
+ hash_name,
+ hash_fntype,
+ equal_name,
+ equal_fntype);
+ this->specific_type_functions_.push_back(tsf);
+}
+
+// Write out type specific functions.
+
+void
+Gogo::write_specific_type_functions()
+{
+ while (!this->specific_type_functions_.empty())
+ {
+ Specific_type_function* tsf = this->specific_type_functions_.back();
+ this->specific_type_functions_.pop_back();
+ tsf->type->write_specific_type_functions(this, tsf->name,
+ tsf->hash_name,
+ tsf->hash_fntype,
+ tsf->equal_name,
+ tsf->equal_fntype);
+ delete tsf;
+ }
+ this->specific_type_functions_are_written_ = true;
+}
+
// Traverse the tree.
void
@@ -1468,6 +1520,10 @@ Finalize_methods::type(Type* t)
t->struct_type()->finalize_methods(this->gogo_);
break;
+ case Type::TYPE_ARRAY:
+ t->array_type()->finalize_methods(this->gogo_);
+ break;
+
default:
break;
}
diff --git a/gcc/go/gofrontend/gogo.h b/gcc/go/gofrontend/gogo.h
index 6efce18cfac..ac1707a0c53 100644
--- a/gcc/go/gofrontend/gogo.h
+++ b/gcc/go/gofrontend/gogo.h
@@ -277,6 +277,11 @@ class Gogo
Named_object*
declare_function(const std::string&, Function_type*, Location);
+ // Declare a function at the package level. This is used for
+ // functions generated for a type.
+ Named_object*
+ declare_package_function(const std::string&, Function_type*, Location);
+
// Add a label.
Label*
add_label_definition(const std::string&, Location);
@@ -364,6 +369,20 @@ class Gogo
void
clear_file_scope();
+ // Queue up a type-specific function to be written out. This is
+ // used when a type-specific function is needed when not at the top
+ // level.
+ void
+ queue_specific_type_function(Type* type, Named_type* name,
+ const std::string& hash_name,
+ Function_type* hash_fntype,
+ const std::string& equal_name,
+ Function_type* equal_fntype);
+
+ // Write out queued specific type functions.
+ void
+ write_specific_type_functions();
+
// Traverse the tree. See the Traverse class.
void
traverse(Traverse*);
@@ -603,6 +622,27 @@ class Gogo
// Type used to map special names in the sys package.
typedef std::map<std::string, std::string> Sys_names;
+ // Type used to queue writing a type specific function.
+ struct Specific_type_function
+ {
+ Type* type;
+ Named_type* name;
+ std::string hash_name;
+ Function_type* hash_fntype;
+ std::string equal_name;
+ Function_type* equal_fntype;
+
+ Specific_type_function(Type* atype, Named_type* aname,
+ const std::string& ahash_name,
+ Function_type* ahash_fntype,
+ const std::string& aequal_name,
+ Function_type* aequal_fntype)
+ : type(atype), name(aname), hash_name(ahash_name),
+ hash_fntype(ahash_fntype), equal_name(aequal_name),
+ equal_fntype(aequal_fntype)
+ { }
+ };
+
// The backend generator.
Backend* backend_;
// The object used to keep track of file names and line numbers.
@@ -635,6 +675,10 @@ class Gogo
bool unique_prefix_specified_;
// A list of interface types defined while parsing.
std::vector<Interface_type*> interface_types_;
+ // Type specific functions to write out.
+ std::vector<Specific_type_function*> specific_type_functions_;
+ // Whether we are done writing out specific type functions.
+ bool specific_type_functions_are_written_;
// Whether named types have been converted.
bool named_types_are_converted_;
};
diff --git a/gcc/go/gofrontend/runtime.def b/gcc/go/gofrontend/runtime.def
index fe842c93b9b..438864c3559 100644
--- a/gcc/go/gofrontend/runtime.def
+++ b/gcc/go/gofrontend/runtime.def
@@ -28,6 +28,9 @@
// the name. The third is the parameter types and the fourth is the
// result types.
+// The standard C memcmp function, used for struct comparisons.
+DEF_GO_RUNTIME(MEMCMP, "memcmp", P3(POINTER, POINTER, UINTPTR), R1(INT))
+
// Range over a string, returning the next index.
DEF_GO_RUNTIME(STRINGITER, "runtime.stringiter", P2(STRING, INT), R1(INT))
diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc
index d1901e17e71..334dc336cce 100644
--- a/gcc/go/gofrontend/types.cc
+++ b/gcc/go/gofrontend/types.cc
@@ -474,6 +474,115 @@ Type::are_compatible_for_binop(const Type* lhs, const Type* rhs)
return false;
}
+// Return true if a value with type T1 may be compared with a value of
+// type T2. IS_EQUALITY_OP is true for == or !=, false for <, etc.
+
+bool
+Type::are_compatible_for_comparison(bool is_equality_op, const Type *t1,
+ const Type *t2, std::string *reason)
+{
+ if (t1 != t2
+ && !Type::are_assignable(t1, t2, NULL)
+ && !Type::are_assignable(t2, t1, NULL))
+ {
+ if (reason != NULL)
+ *reason = "incompatible types in binary expression";
+ return false;
+ }
+
+ if (!is_equality_op)
+ {
+ if (t1->integer_type() == NULL
+ && t1->float_type() == NULL
+ && !t1->is_string_type())
+ {
+ if (reason != NULL)
+ *reason = _("invalid comparison of non-ordered type");
+ return false;
+ }
+ }
+ else if (t1->is_slice_type()
+ || t1->map_type() != NULL
+ || t1->function_type() != NULL
+ || t2->is_slice_type()
+ || t2->map_type() != NULL
+ || t2->function_type() != NULL)
+ {
+ if (!t1->is_nil_type() && !t2->is_nil_type())
+ {
+ if (reason != NULL)
+ {
+ if (t1->is_slice_type() || t2->is_slice_type())
+ *reason = _("slice can only be compared to nil");
+ else if (t1->map_type() != NULL || t2->map_type() != NULL)
+ *reason = _("map can only be compared to nil");
+ else
+ *reason = _("func can only be compared to nil");
+
+ // Match 6g error messages.
+ if (t1->interface_type() != NULL || t2->interface_type() != NULL)
+ {
+ char buf[200];
+ snprintf(buf, sizeof buf, _("invalid operation (%s)"),
+ reason->c_str());
+ *reason = buf;
+ }
+ }
+ return false;
+ }
+ }
+ else
+ {
+ if (!t1->is_boolean_type()
+ && t1->integer_type() == NULL
+ && t1->float_type() == NULL
+ && t1->complex_type() == NULL
+ && !t1->is_string_type()
+ && t1->points_to() == NULL
+ && t1->channel_type() == NULL
+ && t1->interface_type() == NULL
+ && t1->struct_type() == NULL
+ && t1->array_type() == NULL
+ && !t1->is_nil_type())
+ {
+ if (reason != NULL)
+ *reason = _("invalid comparison of non-comparable type");
+ return false;
+ }
+
+ if (t1->named_type() != NULL)
+ return t1->named_type()->named_type_is_comparable(reason);
+ else if (t2->named_type() != NULL)
+ return t2->named_type()->named_type_is_comparable(reason);
+ else if (t1->struct_type() != NULL)
+ {
+ const Struct_field_list* fields = t1->struct_type()->fields();
+ for (Struct_field_list::const_iterator p = fields->begin();
+ p != fields->end();
+ ++p)
+ {
+ if (!p->type()->is_comparable())
+ {
+ if (reason != NULL)
+ *reason = _("invalid comparison of non-comparable struct");
+ return false;
+ }
+ }
+ }
+ else if (t1->array_type() != NULL)
+ {
+ if (!t1->array_type()->element_type()->is_comparable())
+ {
+ if (reason != NULL)
+ *reason = _("invalid comparison of non-comparable array");
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
// Return true if a value with type RHS may be assigned to a variable
// with type LHS. If CHECK_HIDDEN_FIELDS is true, check whether any
// hidden fields are modified. If REASON is not NULL, set *REASON to
@@ -897,44 +1006,17 @@ Type::make_type_descriptor_var(Gogo* gogo)
phash = &ins.first->second;
}
- std::string var_name;
- if (nt == NULL)
- var_name = this->unnamed_type_descriptor_var_name(gogo);
- else
- var_name = this->type_descriptor_var_name(gogo);
+ std::string var_name = this->type_descriptor_var_name(gogo, nt);
// Build the contents of the type descriptor.
Expression* initializer = this->do_type_descriptor(gogo, NULL);
Btype* initializer_btype = initializer->type()->get_backend(gogo);
- // See if this type descriptor is defined in a different package.
- bool is_defined_elsewhere = false;
- if (nt != NULL)
- {
- if (nt->named_object()->package() != NULL)
- {
- // This is a named type defined in a different package. The
- // type descriptor should be defined in that package.
- is_defined_elsewhere = true;
- }
- }
- else
- {
- if (this->points_to() != NULL
- && this->points_to()->named_type() != NULL
- && this->points_to()->named_type()->named_object()->package() != NULL)
- {
- // This is an unnamed pointer to a named type defined in a
- // different package. The descriptor should be defined in
- // that package.
- is_defined_elsewhere = true;
- }
- }
-
Location loc = nt == NULL ? Linemap::predeclared_location() : nt->location();
- if (is_defined_elsewhere)
+ const Package* dummy;
+ if (this->type_descriptor_defined_elsewhere(nt, &dummy))
{
this->type_descriptor_var_ =
gogo->backend()->immutable_struct_reference(var_name,
@@ -984,21 +1066,15 @@ Type::make_type_descriptor_var(Gogo* gogo)
binitializer);
}
-// Return the name of the type descriptor variable for an unnamed
-// type.
+// Return the name of the type descriptor variable. If NT is not
+// NULL, use it to get the name. Otherwise this is an unnamed type.
std::string
-Type::unnamed_type_descriptor_var_name(Gogo* gogo)
+Type::type_descriptor_var_name(Gogo* gogo, Named_type* nt)
{
- return "__go_td_" + this->mangled_name(gogo);
-}
-
-// Return the name of the type descriptor variable for a named type.
+ if (nt == NULL)
+ return "__go_td_" + this->mangled_name(gogo);
-std::string
-Type::type_descriptor_var_name(Gogo* gogo)
-{
- Named_type* nt = this->named_type();
Named_object* no = nt->named_object();
const Named_object* in_function = nt->in_function();
std::string ret = "__go_tdn_";
@@ -1026,6 +1102,39 @@ Type::type_descriptor_var_name(Gogo* gogo)
return ret;
}
+// Return true if this type descriptor is defined in a different
+// package. If this returns true it sets *PACKAGE to the package.
+
+bool
+Type::type_descriptor_defined_elsewhere(Named_type* nt,
+ const Package** package)
+{
+ if (nt != NULL)
+ {
+ if (nt->named_object()->package() != NULL)
+ {
+ // This is a named type defined in a different package. The
+ // type descriptor should be defined in that package.
+ *package = nt->named_object()->package();
+ return true;
+ }
+ }
+ else
+ {
+ if (this->points_to() != NULL
+ && this->points_to()->named_type() != NULL
+ && this->points_to()->named_type()->named_object()->package() != NULL)
+ {
+ // This is an unnamed pointer to a named type defined in a
+ // different package. The descriptor should be defined in
+ // that package.
+ *package = this->points_to()->named_type()->named_object()->package();
+ return true;
+ }
+ }
+ return false;
+}
+
// Return a composite literal for a type descriptor.
Expression*
@@ -1157,8 +1266,8 @@ Type::make_type_descriptor_type()
// The type descriptor type.
Typed_identifier_list* params = new Typed_identifier_list();
- params->push_back(Typed_identifier("", unsafe_pointer_type, bloc));
- params->push_back(Typed_identifier("", uintptr_type, bloc));
+ params->push_back(Typed_identifier("key", unsafe_pointer_type, bloc));
+ params->push_back(Typed_identifier("key_size", uintptr_type, bloc));
Typed_identifier_list* results = new Typed_identifier_list();
results->push_back(Typed_identifier("", uintptr_type, bloc));
@@ -1166,9 +1275,9 @@ Type::make_type_descriptor_type()
Type* hashfn_type = Type::make_function_type(NULL, params, results, bloc);
params = new Typed_identifier_list();
- params->push_back(Typed_identifier("", unsafe_pointer_type, bloc));
- params->push_back(Typed_identifier("", unsafe_pointer_type, bloc));
- params->push_back(Typed_identifier("", uintptr_type, bloc));
+ params->push_back(Typed_identifier("key1", unsafe_pointer_type, bloc));
+ params->push_back(Typed_identifier("key2", unsafe_pointer_type, bloc));
+ params->push_back(Typed_identifier("key_size", uintptr_type, bloc));
results = new Typed_identifier_list();
results->push_back(Typed_identifier("", Type::lookup_bool_type(), bloc));
@@ -1213,67 +1322,278 @@ Type::make_type_descriptor_ptr_type()
return ret;
}
-// Return the names of runtime functions which compute a hash code for
-// this type and which compare whether two values of this type are
-// equal.
+// Set *HASH_FN and *EQUAL_FN to the runtime functions which compute a
+// hash code for this type and which compare whether two values of
+// this type are equal. If NAME is not NULL it is the name of this
+// type. HASH_FNTYPE and EQUAL_FNTYPE are the types of these
+// functions, for convenience; they may be NULL.
void
-Type::type_functions(const char** hash_fn, const char** equal_fn) const
+Type::type_functions(Gogo* gogo, Named_type* name, Function_type* hash_fntype,
+ Function_type* equal_fntype, Named_object** hash_fn,
+ Named_object** equal_fn)
{
- switch (this->base()->classification())
+ if (hash_fntype == NULL || equal_fntype == NULL)
{
- case Type::TYPE_ERROR:
- case Type::TYPE_VOID:
- case Type::TYPE_NIL:
- // These types can not be hashed or compared.
- *hash_fn = "__go_type_hash_error";
- *equal_fn = "__go_type_equal_error";
- break;
+ Location bloc = Linemap::predeclared_location();
- case Type::TYPE_BOOLEAN:
- case Type::TYPE_INTEGER:
- case Type::TYPE_FLOAT:
- case Type::TYPE_COMPLEX:
- case Type::TYPE_POINTER:
- case Type::TYPE_CHANNEL:
- *hash_fn = "__go_type_hash_identity";
- *equal_fn = "__go_type_equal_identity";
- break;
+ Type* uintptr_type = Type::lookup_integer_type("uintptr");
+ Type* void_type = Type::make_void_type();
+ Type* unsafe_pointer_type = Type::make_pointer_type(void_type);
- case Type::TYPE_STRING:
- *hash_fn = "__go_type_hash_string";
- *equal_fn = "__go_type_equal_string";
- break;
+ if (hash_fntype == NULL)
+ {
+ Typed_identifier_list* params = new Typed_identifier_list();
+ params->push_back(Typed_identifier("key", unsafe_pointer_type,
+ bloc));
+ params->push_back(Typed_identifier("key_size", uintptr_type, bloc));
- case Type::TYPE_STRUCT:
- case Type::TYPE_ARRAY:
- case Type::TYPE_FUNCTION:
- case Type::TYPE_MAP:
- // These types can not be hashed or compared.
- *hash_fn = "__go_type_hash_error";
- *equal_fn = "__go_type_equal_error";
- break;
+ Typed_identifier_list* results = new Typed_identifier_list();
+ results->push_back(Typed_identifier("", uintptr_type, bloc));
- case Type::TYPE_INTERFACE:
- if (this->interface_type()->is_empty())
+ hash_fntype = Type::make_function_type(NULL, params, results, bloc);
+ }
+ if (equal_fntype == NULL)
{
- *hash_fn = "__go_type_hash_empty_interface";
- *equal_fn = "__go_type_equal_empty_interface";
+ Typed_identifier_list* params = new Typed_identifier_list();
+ params->push_back(Typed_identifier("key1", unsafe_pointer_type,
+ bloc));
+ params->push_back(Typed_identifier("key2", unsafe_pointer_type,
+ bloc));
+ params->push_back(Typed_identifier("key_size", uintptr_type, bloc));
+
+ Typed_identifier_list* results = new Typed_identifier_list();
+ results->push_back(Typed_identifier("", Type::lookup_bool_type(),
+ bloc));
+
+ equal_fntype = Type::make_function_type(NULL, params, results, bloc);
}
- else
+ }
+
+ const char* hash_fnname;
+ const char* equal_fnname;
+ if (this->compare_is_identity())
+ {
+ hash_fnname = "__go_type_hash_identity";
+ equal_fnname = "__go_type_equal_identity";
+ }
+ else if (!this->is_comparable())
+ {
+ hash_fnname = "__go_type_hash_error";
+ equal_fnname = "__go_type_equal_error";
+ }
+ else
+ {
+ switch (this->base()->classification())
{
- *hash_fn = "__go_type_hash_interface";
- *equal_fn = "__go_type_equal_interface";
+ case Type::TYPE_ERROR:
+ case Type::TYPE_VOID:
+ case Type::TYPE_NIL:
+ case Type::TYPE_FUNCTION:
+ case Type::TYPE_MAP:
+ // For these types is_comparable should have returned false.
+ go_unreachable();
+
+ case Type::TYPE_BOOLEAN:
+ case Type::TYPE_INTEGER:
+ case Type::TYPE_POINTER:
+ case Type::TYPE_CHANNEL:
+ // For these types compare_is_identity should have returned true.
+ go_unreachable();
+
+ case Type::TYPE_FLOAT:
+ hash_fnname = "__go_type_hash_float";
+ equal_fnname = "__go_type_equal_float";
+ break;
+
+ case Type::TYPE_COMPLEX:
+ hash_fnname = "__go_type_hash_complex";
+ equal_fnname = "__go_type_equal_complex";
+ break;
+
+ case Type::TYPE_STRING:
+ hash_fnname = "__go_type_hash_string";
+ equal_fnname = "__go_type_equal_string";
+ break;
+
+ case Type::TYPE_STRUCT:
+ {
+ // This is a struct which can not be compared using a
+ // simple identity function. We need to build a function
+ // for comparison.
+ this->specific_type_functions(gogo, name, hash_fntype,
+ equal_fntype, hash_fn, equal_fn);
+ return;
+ }
+
+ case Type::TYPE_ARRAY:
+ if (this->is_slice_type())
+ {
+ // Type::is_compatible_for_comparison should have
+ // returned false.
+ go_unreachable();
+ }
+ else
+ {
+ // This is an array which can not be compared using a
+ // simple identity function. We need to build a
+ // function for comparison.
+ this->specific_type_functions(gogo, name, hash_fntype,
+ equal_fntype, hash_fn, equal_fn);
+ return;
+ }
+ break;
+
+ case Type::TYPE_INTERFACE:
+ if (this->interface_type()->is_empty())
+ {
+ hash_fnname = "__go_type_hash_empty_interface";
+ equal_fnname = "__go_type_equal_empty_interface";
+ }
+ else
+ {
+ hash_fnname = "__go_type_hash_interface";
+ equal_fnname = "__go_type_equal_interface";
+ }
+ break;
+
+ case Type::TYPE_NAMED:
+ case Type::TYPE_FORWARD:
+ go_unreachable();
+
+ default:
+ go_unreachable();
}
- break;
+ }
- case Type::TYPE_NAMED:
- case Type::TYPE_FORWARD:
- go_unreachable();
- default:
- go_unreachable();
+ Location bloc = Linemap::predeclared_location();
+ *hash_fn = Named_object::make_function_declaration(hash_fnname, NULL,
+ hash_fntype, bloc);
+ (*hash_fn)->func_declaration_value()->set_asm_name(hash_fnname);
+ *equal_fn = Named_object::make_function_declaration(equal_fnname, NULL,
+ equal_fntype, bloc);
+ (*equal_fn)->func_declaration_value()->set_asm_name(equal_fnname);
+}
+
+// A hash table mapping types to the specific hash functions.
+
+Type::Type_functions Type::type_functions_table;
+
+// Handle a type function which is specific to a type: a struct or
+// array which can not use an identity comparison.
+
+void
+Type::specific_type_functions(Gogo* gogo, Named_type* name,
+ Function_type* hash_fntype,
+ Function_type* equal_fntype,
+ Named_object** hash_fn,
+ Named_object** equal_fn)
+{
+ Hash_equal_fn fnull(NULL, NULL);
+ std::pair<Type*, Hash_equal_fn> val(name != NULL ? name : this, fnull);
+ std::pair<Type_functions::iterator, bool> ins =
+ Type::type_functions_table.insert(val);
+ if (!ins.second)
+ {
+ // We already have functions for this type
+ *hash_fn = ins.first->second.first;
+ *equal_fn = ins.first->second.second;
+ return;
}
+
+ std::string base_name;
+ if (name == NULL)
+ base_name = gogo->pack_hidden_name(this->mangled_name(gogo), false);
+ else
+ {
+ // This name is already hidden or not as appropriate.
+ base_name = name->name();
+ const Named_object* in_function = name->in_function();
+ if (in_function != NULL)
+ base_name += '$' + in_function->name();
+ }
+ std::string hash_name = base_name + "$hash";
+ std::string equal_name = base_name + "$equal";
+
+ Location bloc = Linemap::predeclared_location();
+
+ const Package* package = NULL;
+ bool is_defined_elsewhere =
+ this->type_descriptor_defined_elsewhere(name, &package);
+ if (is_defined_elsewhere)
+ {
+ *hash_fn = Named_object::make_function_declaration(hash_name, package,
+ hash_fntype, bloc);
+ *equal_fn = Named_object::make_function_declaration(equal_name, package,
+ equal_fntype, bloc);
+ }
+ else
+ {
+ *hash_fn = gogo->declare_package_function(hash_name, hash_fntype, bloc);
+ *equal_fn = gogo->declare_package_function(equal_name, equal_fntype,
+ bloc);
+ }
+
+ ins.first->second.first = *hash_fn;
+ ins.first->second.second = *equal_fn;
+
+ if (!is_defined_elsewhere)
+ {
+ if (gogo->in_global_scope())
+ this->write_specific_type_functions(gogo, name, hash_name, hash_fntype,
+ equal_name, equal_fntype);
+ else
+ gogo->queue_specific_type_function(this, name, hash_name, hash_fntype,
+ equal_name, equal_fntype);
+ }
+}
+
+// Write the hash and equality functions for a type which needs to be
+// written specially.
+
+void
+Type::write_specific_type_functions(Gogo* gogo, Named_type* name,
+ const std::string& hash_name,
+ Function_type* hash_fntype,
+ const std::string& equal_name,
+ Function_type* equal_fntype)
+{
+ Location bloc = Linemap::predeclared_location();
+
+ Named_object* hash_fn = gogo->start_function(hash_name, hash_fntype, false,
+ bloc);
+ gogo->start_block(bloc);
+
+ if (this->struct_type() != NULL)
+ this->struct_type()->write_hash_function(gogo, name, hash_fntype,
+ equal_fntype);
+ else if (this->array_type() != NULL)
+ this->array_type()->write_hash_function(gogo, name, hash_fntype,
+ equal_fntype);
+ else
+ go_unreachable();
+
+ Block* b = gogo->finish_block(bloc);
+ gogo->add_block(b, bloc);
+ gogo->lower_block(hash_fn, b);
+ gogo->finish_function(bloc);
+
+ Named_object *equal_fn = gogo->start_function(equal_name, equal_fntype,
+ false, bloc);
+ gogo->start_block(bloc);
+
+ if (this->struct_type() != NULL)
+ this->struct_type()->write_equal_function(gogo, name);
+ else if (this->array_type() != NULL)
+ this->array_type()->write_equal_function(gogo, name);
+ else
+ go_unreachable();
+
+ b = gogo->finish_block(bloc);
+ gogo->add_block(b, bloc);
+ gogo->lower_block(equal_fn, b);
+ gogo->finish_function(bloc);
}
// Return a composite literal for the type descriptor for a plain type
@@ -1320,25 +1640,20 @@ Type::type_descriptor_constructor(Gogo* gogo, int runtime_type_kind,
mpz_set_ui(iv, this->hash_for_method(gogo));
vals->push_back(Expression::make_integer(&iv, p->type(), bloc));
- const char* hash_fn;
- const char* equal_fn;
- this->type_functions(&hash_fn, &equal_fn);
-
++p;
go_assert(p->is_field_name("hashfn"));
- Function_type* fntype = p->type()->function_type();
- Named_object* no = Named_object::make_function_declaration(hash_fn, NULL,
- fntype,
- bloc);
- no->func_declaration_value()->set_asm_name(hash_fn);
- vals->push_back(Expression::make_func_reference(no, NULL, bloc));
+ Function_type* hash_fntype = p->type()->function_type();
++p;
go_assert(p->is_field_name("equalfn"));
- fntype = p->type()->function_type();
- no = Named_object::make_function_declaration(equal_fn, NULL, fntype, bloc);
- no->func_declaration_value()->set_asm_name(equal_fn);
- vals->push_back(Expression::make_func_reference(no, NULL, bloc));
+ Function_type* equal_fntype = p->type()->function_type();
+
+ Named_object* hash_fn;
+ Named_object* equal_fn;
+ this->type_functions(gogo, name, hash_fntype, equal_fntype, &hash_fn,
+ &equal_fn);
+ vals->push_back(Expression::make_func_reference(hash_fn, NULL, bloc));
+ vals->push_back(Expression::make_func_reference(equal_fn, NULL, bloc));
++p;
go_assert(p->is_field_name("string"));
@@ -1680,6 +1995,10 @@ class Error_type : public Type
{ }
protected:
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
Btype*
do_get_backend(Gogo* gogo)
{ return gogo->backend()->error_type(); }
@@ -1714,6 +2033,10 @@ class Void_type : public Type
{ }
protected:
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
Btype*
do_get_backend(Gogo* gogo)
{ return gogo->backend()->void_type(); }
@@ -1748,6 +2071,10 @@ class Boolean_type : public Type
{ }
protected:
+ bool
+ do_compare_is_identity() const
+ { return true; }
+
Btype*
do_get_backend(Gogo* gogo)
{ return gogo->backend()->bool_type(); }
@@ -2335,6 +2662,10 @@ class Sink_type : public Type
{ }
protected:
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
Btype*
do_get_backend(Gogo*)
{ go_unreachable(); }
@@ -3243,6 +3574,10 @@ class Nil_type : public Type
{ }
protected:
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
Btype*
do_get_backend(Gogo* gogo)
{ return gogo->backend()->pointer_type(gogo->backend()->void_type()); }
@@ -3290,6 +3625,10 @@ class Call_multiple_result_type : public Type
return false;
}
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
Btype*
do_get_backend(Gogo* gogo)
{
@@ -3564,6 +3903,25 @@ Struct_type::struct_has_hidden_fields(const Named_type* within,
return false;
}
+// Whether comparisons of this struct type are simple identity
+// comparisons.
+
+bool
+Struct_type::do_compare_is_identity() const
+{
+ const Struct_field_list* fields = this->fields_;
+ if (fields == NULL)
+ return true;
+ for (Struct_field_list::const_iterator pf = fields->begin();
+ pf != fields->end();
+ ++pf)
+ if (!pf->type()->compare_is_identity())
+ return false;
+ return true;
+}
+
+// Build identity and hash functions for this struct.
+
// Hash code.
unsigned int
@@ -3779,6 +4137,17 @@ Struct_type::is_unexported_local_field(Gogo* gogo,
void
Struct_type::finalize_methods(Gogo* gogo)
{
+ // If this type needs explicit comparison and hash functions, create
+ // them now. It would be a bit better to do this only if the
+ // functions are needed, but they will be static so the backend can
+ // discard them if they are not used.
+ if (!this->compare_is_identity() && this->is_comparable())
+ {
+ Named_object* hash_fn;
+ Named_object* equal_fn;
+ this->type_functions(gogo, NULL, NULL, NULL, &hash_fn, &equal_fn);
+ }
+
if (this->all_methods_ != NULL)
return;
Type::finalize_methods(gogo, this, this->location_, &this->all_methods_);
@@ -3952,6 +4321,170 @@ Struct_type::do_type_descriptor(Gogo* gogo, Named_type* name)
return Expression::make_struct_composite_literal(stdt, vals, bloc);
}
+// Write the hash function for a struct which can not use the identity
+// function.
+
+void
+Struct_type::write_hash_function(Gogo* gogo, Named_type*,
+ Function_type* hash_fntype,
+ Function_type* equal_fntype)
+{
+ Location bloc = Linemap::predeclared_location();
+
+ // The pointer to the struct that we are going to hash. This is an
+ // argument to the hash function we are implementing here.
+ Named_object* key_arg = gogo->lookup("key", NULL);
+ go_assert(key_arg != NULL);
+ Type* key_arg_type = key_arg->var_value()->type();
+
+ Type* uintptr_type = Type::lookup_integer_type("uintptr");
+
+ // Get a 0.
+ mpz_t ival;
+ mpz_init_set_ui(ival, 0);
+ Expression* zero = Expression::make_integer(&ival, uintptr_type, bloc);
+ mpz_clear(ival);
+
+ // Make a temporary to hold the return value, initialized to 0.
+ Temporary_statement* retval = Statement::make_temporary(uintptr_type, zero,
+ bloc);
+ gogo->add_statement(retval);
+
+ // Make a temporary to hold the key as a uintptr.
+ Expression* ref = Expression::make_var_reference(key_arg, bloc);
+ ref = Expression::make_cast(uintptr_type, ref, bloc);
+ Temporary_statement* key = Statement::make_temporary(uintptr_type, ref,
+ bloc);
+ gogo->add_statement(key);
+
+ // Loop over the struct fields.
+ bool first = true;
+ const Struct_field_list* fields = this->fields_;
+ for (Struct_field_list::const_iterator pf = fields->begin();
+ pf != fields->end();
+ ++pf)
+ {
+ if (first)
+ first = false;
+ else
+ {
+ // Multiply retval by 33.
+ mpz_init_set_ui(ival, 33);
+ Expression* i33 = Expression::make_integer(&ival, uintptr_type,
+ bloc);
+ mpz_clear(ival);
+
+ ref = Expression::make_temporary_reference(retval, bloc);
+ Statement* s = Statement::make_assignment_operation(OPERATOR_MULTEQ,
+ ref, i33, bloc);
+ gogo->add_statement(s);
+ }
+
+ // Get a pointer to the value of this field.
+ Expression* offset = Expression::make_struct_field_offset(this, &*pf);
+ ref = Expression::make_temporary_reference(key, bloc);
+ Expression* subkey = Expression::make_binary(OPERATOR_PLUS, ref, offset,
+ bloc);
+ subkey = Expression::make_cast(key_arg_type, subkey, bloc);
+
+ // Get the size of this field.
+ Expression* size = Expression::make_type_info(pf->type(),
+ Expression::TYPE_INFO_SIZE);
+
+ // Get the hash function to use for the type of this field.
+ Named_object* hash_fn;
+ Named_object* equal_fn;
+ pf->type()->type_functions(gogo, pf->type()->named_type(), hash_fntype,
+ equal_fntype, &hash_fn, &equal_fn);
+
+ // Call the hash function for the field.
+ Expression_list* args = new Expression_list();
+ args->push_back(subkey);
+ args->push_back(size);
+ Expression* func = Expression::make_func_reference(hash_fn, NULL, bloc);
+ Expression* call = Expression::make_call(func, args, false, bloc);
+
+ // Add the field's hash value to retval.
+ Temporary_reference_expression* tref =
+ Expression::make_temporary_reference(retval, bloc);
+ tref->set_is_lvalue();
+ Statement* s = Statement::make_assignment_operation(OPERATOR_PLUSEQ,
+ tref, call, bloc);
+ gogo->add_statement(s);
+ }
+
+ // Return retval to the caller of the hash function.
+ Expression_list* vals = new Expression_list();
+ ref = Expression::make_temporary_reference(retval, bloc);
+ vals->push_back(ref);
+ Statement* s = Statement::make_return_statement(vals, bloc);
+ gogo->add_statement(s);
+}
+
+// Write the equality function for a struct which can not use the
+// identity function.
+
+void
+Struct_type::write_equal_function(Gogo* gogo, Named_type* name)
+{
+ Location bloc = Linemap::predeclared_location();
+
+ // The pointers to the structs we are going to compare.
+ Named_object* key1_arg = gogo->lookup("key1", NULL);
+ Named_object* key2_arg = gogo->lookup("key2", NULL);
+ go_assert(key1_arg != NULL && key2_arg != NULL);
+
+ // Build temporaries with the right types.
+ Type* pt = Type::make_pointer_type(name != NULL
+ ? static_cast<Type*>(name)
+ : static_cast<Type*>(this));
+
+ Expression* ref = Expression::make_var_reference(key1_arg, bloc);
+ ref = Expression::make_unsafe_cast(pt, ref, bloc);
+ Temporary_statement* p1 = Statement::make_temporary(pt, ref, bloc);
+ gogo->add_statement(p1);
+
+ ref = Expression::make_var_reference(key2_arg, bloc);
+ ref = Expression::make_unsafe_cast(pt, ref, bloc);
+ Temporary_statement* p2 = Statement::make_temporary(pt, ref, bloc);
+ gogo->add_statement(p2);
+
+ const Struct_field_list* fields = this->fields_;
+ unsigned int field_index = 0;
+ for (Struct_field_list::const_iterator pf = fields->begin();
+ pf != fields->end();
+ ++pf, ++field_index)
+ {
+ // Compare one field in both P1 and P2.
+ Expression* f1 = Expression::make_temporary_reference(p1, bloc);
+ f1 = Expression::make_unary(OPERATOR_MULT, f1, bloc);
+ f1 = Expression::make_field_reference(f1, field_index, bloc);
+
+ Expression* f2 = Expression::make_temporary_reference(p2, bloc);
+ f2 = Expression::make_unary(OPERATOR_MULT, f2, bloc);
+ f2 = Expression::make_field_reference(f2, field_index, bloc);
+
+ Expression* cond = Expression::make_binary(OPERATOR_NOTEQ, f1, f2, bloc);
+
+ // If the values are not equal, return false.
+ gogo->start_block(bloc);
+ Expression_list* vals = new Expression_list();
+ vals->push_back(Expression::make_boolean(false, bloc));
+ Statement* s = Statement::make_return_statement(vals, bloc);
+ gogo->add_statement(s);
+ Block* then_block = gogo->finish_block(bloc);
+
+ s = Statement::make_if_statement(cond, then_block, NULL, bloc);
+ gogo->add_statement(s);
+ }
+
+ // All the fields are equal, so return true.
+ Expression_list* vals = new Expression_list();
+ vals->push_back(Expression::make_boolean(true, bloc));
+ Statement* s = Statement::make_return_statement(vals, bloc);
+ gogo->add_statement(s);
+}
+
// Reflection string.
void
@@ -4190,6 +4723,25 @@ Array_type::is_identical(const Array_type* t, bool errors_are_identical) const
return false;
}
+// If this type needs explicit comparison and hash functions, create
+// them now. It would be a bit better to do this only if the
+// functions are needed, but they will be static so the backend can
+// discard them if they are not used.
+
+void
+Array_type::finalize_methods(Gogo* gogo)
+{
+ if (this->length_ != NULL
+ && !this->length_->is_nil_expression()
+ && !this->compare_is_identity()
+ && this->is_comparable())
+ {
+ Named_object* hash_fn;
+ Named_object* equal_fn;
+ this->type_functions(gogo, NULL, NULL, NULL, &hash_fn, &equal_fn);
+ }
+}
+
// Traversal.
int
@@ -4298,6 +4850,198 @@ Array_type::do_hash_for_method(Gogo* gogo) const
return this->element_type_->hash_for_method(gogo) + 1;
}
+// Write the hash function for an array which can not use the identify
+// function.
+
+void
+Array_type::write_hash_function(Gogo* gogo, Named_type* name,
+ Function_type* hash_fntype,
+ Function_type* equal_fntype)
+{
+ Location bloc = Linemap::predeclared_location();
+
+ // The pointer to the array that we are going to hash. This is an
+ // argument to the hash function we are implementing here.
+ Named_object* key_arg = gogo->lookup("key", NULL);
+ go_assert(key_arg != NULL);
+ Type* key_arg_type = key_arg->var_value()->type();
+
+ Type* uintptr_type = Type::lookup_integer_type("uintptr");
+
+ // Get a 0.
+ mpz_t ival;
+ mpz_init_set_ui(ival, 0);
+ Expression* zero = Expression::make_integer(&ival, uintptr_type, bloc);
+ mpz_clear(ival);
+
+ // Make a temporary to hold the return value, initialized to 0.
+ Temporary_statement* retval = Statement::make_temporary(uintptr_type, zero,
+ bloc);
+ gogo->add_statement(retval);
+
+ // Make a temporary to hold the key as a uintptr.
+ Expression* ref = Expression::make_var_reference(key_arg, bloc);
+ ref = Expression::make_cast(uintptr_type, ref, bloc);
+ Temporary_statement* key = Statement::make_temporary(uintptr_type, ref,
+ bloc);
+ gogo->add_statement(key);
+
+ // Loop over the array elements.
+ // for i = range a
+ Type* int_type = Type::lookup_integer_type("int");
+ Temporary_statement* index = Statement::make_temporary(int_type, NULL, bloc);
+ gogo->add_statement(index);
+
+ Expression* iref = Expression::make_temporary_reference(index, bloc);
+ Expression* aref = Expression::make_var_reference(key_arg, bloc);
+ Type* pt = Type::make_pointer_type(name != NULL
+ ? static_cast<Type*>(name)
+ : static_cast<Type*>(this));
+ aref = Expression::make_cast(pt, aref, bloc);
+ For_range_statement* for_range = Statement::make_for_range_statement(iref,
+ NULL,
+ aref,
+ bloc);
+
+ gogo->start_block(bloc);
+
+ // Multiply retval by 33.
+ mpz_init_set_ui(ival, 33);
+ Expression* i33 = Expression::make_integer(&ival, uintptr_type, bloc);
+ mpz_clear(ival);
+
+ ref = Expression::make_temporary_reference(retval, bloc);
+ Statement* s = Statement::make_assignment_operation(OPERATOR_MULTEQ, ref,
+ i33, bloc);
+ gogo->add_statement(s);
+
+ // Get the hash function for the element type.
+ Named_object* hash_fn;
+ Named_object* equal_fn;
+ this->element_type_->type_functions(gogo, this->element_type_->named_type(),
+ hash_fntype, equal_fntype, &hash_fn,
+ &equal_fn);
+
+ // Get a pointer to this element in the loop.
+ Expression* subkey = Expression::make_temporary_reference(key, bloc);
+ subkey = Expression::make_cast(key_arg_type, subkey, bloc);
+
+ // Get the size of each element.
+ Expression* ele_size = Expression::make_type_info(this->element_type_,
+ Expression::TYPE_INFO_SIZE);
+
+ // Get the hash of this element.
+ Expression_list* args = new Expression_list();
+ args->push_back(subkey);
+ args->push_back(ele_size);
+ Expression* func = Expression::make_func_reference(hash_fn, NULL, bloc);
+ Expression* call = Expression::make_call(func, args, false, bloc);
+
+ // Add the element's hash value to retval.
+ Temporary_reference_expression* tref =
+ Expression::make_temporary_reference(retval, bloc);
+ tref->set_is_lvalue();
+ s = Statement::make_assignment_operation(OPERATOR_PLUSEQ, tref, call, bloc);
+ gogo->add_statement(s);
+
+ // Increase the element pointer.
+ tref = Expression::make_temporary_reference(key, bloc);
+ tref->set_is_lvalue();
+ s = Statement::make_assignment_operation(OPERATOR_PLUSEQ, tref, ele_size,
+ bloc);
+
+ Block* statements = gogo->finish_block(bloc);
+
+ for_range->add_statements(statements);
+ gogo->add_statement(for_range);
+
+ // Return retval to the caller of the hash function.
+ Expression_list* vals = new Expression_list();
+ ref = Expression::make_temporary_reference(retval, bloc);
+ vals->push_back(ref);
+ s = Statement::make_return_statement(vals, bloc);
+ gogo->add_statement(s);
+}
+
+// Write the equality function for an array which can not use the
+// identity function.
+
+void
+Array_type::write_equal_function(Gogo* gogo, Named_type* name)
+{
+ Location bloc = Linemap::predeclared_location();
+
+ // The pointers to the arrays we are going to compare.
+ Named_object* key1_arg = gogo->lookup("key1", NULL);
+ Named_object* key2_arg = gogo->lookup("key2", NULL);
+ go_assert(key1_arg != NULL && key2_arg != NULL);
+
+ // Build temporaries for the keys with the right types.
+ Type* pt = Type::make_pointer_type(name != NULL
+ ? static_cast<Type*>(name)
+ : static_cast<Type*>(this));
+
+ Expression* ref = Expression::make_var_reference(key1_arg, bloc);
+ ref = Expression::make_unsafe_cast(pt, ref, bloc);
+ Temporary_statement* p1 = Statement::make_temporary(pt, ref, bloc);
+ gogo->add_statement(p1);
+
+ ref = Expression::make_var_reference(key2_arg, bloc);
+ ref = Expression::make_unsafe_cast(pt, ref, bloc);
+ Temporary_statement* p2 = Statement::make_temporary(pt, ref, bloc);
+ gogo->add_statement(p2);
+
+ // Loop over the array elements.
+ // for i = range a
+ Type* int_type = Type::lookup_integer_type("int");
+ Temporary_statement* index = Statement::make_temporary(int_type, NULL, bloc);
+ gogo->add_statement(index);
+
+ Expression* iref = Expression::make_temporary_reference(index, bloc);
+ Expression* aref = Expression::make_temporary_reference(p1, bloc);
+ For_range_statement* for_range = Statement::make_for_range_statement(iref,
+ NULL,
+ aref,
+ bloc);
+
+ gogo->start_block(bloc);
+
+ // Compare element in P1 and P2.
+ Expression* e1 = Expression::make_temporary_reference(p1, bloc);
+ e1 = Expression::make_unary(OPERATOR_MULT, e1, bloc);
+ ref = Expression::make_temporary_reference(index, bloc);
+ e1 = Expression::make_array_index(e1, ref, NULL, bloc);
+
+ Expression* e2 = Expression::make_temporary_reference(p2, bloc);
+ e2 = Expression::make_unary(OPERATOR_MULT, e2, bloc);
+ ref = Expression::make_temporary_reference(index, bloc);
+ e2 = Expression::make_array_index(e2, ref, NULL, bloc);
+
+ Expression* cond = Expression::make_binary(OPERATOR_NOTEQ, e1, e2, bloc);
+
+ // If the elements are not equal, return false.
+ gogo->start_block(bloc);
+ Expression_list* vals = new Expression_list();
+ vals->push_back(Expression::make_boolean(false, bloc));
+ Statement* s = Statement::make_return_statement(vals, bloc);
+ gogo->add_statement(s);
+ Block* then_block = gogo->finish_block(bloc);
+
+ s = Statement::make_if_statement(cond, then_block, NULL, bloc);
+ gogo->add_statement(s);
+
+ Block* statements = gogo->finish_block(bloc);
+
+ for_range->add_statements(statements);
+ gogo->add_statement(for_range);
+
+ // All the elements are equal, so return true.
+ vals = new Expression_list();
+ vals->push_back(Expression::make_boolean(true, bloc));
+ s = Statement::make_return_statement(vals, bloc);
+ gogo->add_statement(s);
+}
+
// Get a tree for the length of a fixed array. The length may be
// computed using a function call, so we must only evaluate it once.
@@ -4730,10 +5474,8 @@ Map_type::do_traverse(Traverse* traverse)
bool
Map_type::do_verify()
{
- if (this->key_type_->struct_type() != NULL
- || this->key_type_->array_type() != NULL
- || this->key_type_->function_type() != NULL
- || this->key_type_->map_type() != NULL)
+ // The runtime support uses "map[void]void".
+ if (!this->key_type_->is_comparable() && !this->key_type_->is_void_type())
{
error_at(this->location_, "invalid map key type");
return false;
@@ -6292,6 +7034,21 @@ Named_type::is_named_error_type() const
return ret;
}
+// Whether this type is comparable. We have to be careful about
+// circular type definitions.
+
+bool
+Named_type::named_type_is_comparable(std::string* reason) const
+{
+ if (this->seen_)
+ return false;
+ this->seen_ = true;
+ bool ret = Type::are_compatible_for_comparison(true, this->type_,
+ this->type_, reason);
+ this->seen_ = false;
+ return ret;
+}
+
// Add a method to this type.
Named_object*
@@ -6367,6 +7124,20 @@ Named_type::is_unexported_local_method(Gogo* gogo,
void
Named_type::finalize_methods(Gogo* gogo)
{
+ // If this type needs explicit comparison and hash functions, create
+ // them now. It would be a bit better to do this only if the
+ // functions are needed, but they will be static so the backend can
+ // discard them if they are not used.
+ if ((this->struct_type() != NULL
+ || (this->array_type() != NULL && !this->is_slice_type()))
+ && !this->compare_is_identity()
+ && this->is_comparable())
+ {
+ Named_object* hash_fn;
+ Named_object* equal_fn;
+ this->type_functions(gogo, this, NULL, NULL, &hash_fn, &equal_fn);
+ }
+
if (this->all_methods_ != NULL)
return;
@@ -6616,6 +7387,20 @@ Named_type::do_has_pointer() const
return ret;
}
+// Return whether comparisons for this type can use the identity
+// function.
+
+bool
+Named_type::do_compare_is_identity() const
+{
+ if (this->seen_)
+ return false;
+ this->seen_ = true;
+ bool ret = this->type_->compare_is_identity();
+ this->seen_ = false;
+ return ret;
+}
+
// Return a hash code. This is used for method lookup. We simply
// hash on the name itself.
diff --git a/gcc/go/gofrontend/types.h b/gcc/go/gofrontend/types.h
index 035444f16af..b00b007aa1c 100644
--- a/gcc/go/gofrontend/types.h
+++ b/gcc/go/gofrontend/types.h
@@ -522,6 +522,21 @@ class Type
static bool
are_compatible_for_binop(const Type* t1, const Type* t2);
+ // Return true if two types are compatible for use with the
+ // comparison operator. IS_EQUALITY_OP is true if this is an
+ // equality comparison, false if it is an ordered comparison. This
+ // is an equivalence relation. If this returns false, and REASON is
+ // not NULL, it sets *REASON.
+ static bool
+ are_compatible_for_comparison(bool is_equality_op, const Type *t1,
+ const Type *t2, std::string* reason);
+
+ // Return true if a type is comparable with itself. This is true of
+ // most types, but false for, e.g., function types.
+ bool
+ is_comparable() const
+ { return Type::are_compatible_for_comparison(true, this, this, NULL); }
+
// Return true if a value with type RHS is assignable to a variable
// with type LHS. This is not an equivalence relation. If this
// returns false, and REASON is not NULL, it sets *REASON.
@@ -549,6 +564,13 @@ class Type
bool
has_hidden_fields(const Named_type* within, std::string* reason) const;
+ // Return true if values of this type can be compared using an
+ // identity function which gets nothing but a pointer to the value
+ // and a size.
+ bool
+ compare_is_identity() const
+ { return this->do_compare_is_identity(); }
+
// Return a hash code for this type for the method hash table.
// Types which are equivalent according to are_identical will have
// the same hash code.
@@ -839,6 +861,20 @@ class Type
std::string
mangled_name(Gogo*) const;
+ // Get the hash and equality functions for a type.
+ void
+ type_functions(Gogo*, Named_type* name, Function_type* hash_fntype,
+ Function_type* equal_fntype, Named_object** hash_fn,
+ Named_object** equal_fn);
+
+ // Write the hash and equality type functions.
+ void
+ write_specific_type_functions(Gogo*, Named_type*,
+ const std::string& hash_name,
+ Function_type* hash_fntype,
+ const std::string& equal_name,
+ Function_type* equal_fntype);
+
// Export the type.
void
export_type(Export* exp) const
@@ -866,6 +902,9 @@ class Type
do_has_pointer() const
{ return false; }
+ virtual bool
+ do_compare_is_identity() const = 0;
+
virtual unsigned int
do_hash_for_method(Gogo*) const;
@@ -878,7 +917,6 @@ class Type
virtual void
do_reflection(Gogo*, std::string*) const = 0;
-
virtual void
do_mangled_name(Gogo*, std::string*) const = 0;
@@ -1002,18 +1040,24 @@ class Type
void
make_type_descriptor_var(Gogo*);
- // Return the name of the type descriptor variable for an unnamed
- // type.
+ // Return the name of the type descriptor variable. If NAME is not
+ // NULL, it is the name to use.
std::string
- unnamed_type_descriptor_var_name(Gogo*);
+ type_descriptor_var_name(Gogo*, Named_type* name);
- // Return the name of the type descriptor variable for a named type.
- std::string
- type_descriptor_var_name(Gogo*);
+ // Return true if the type descriptor for this type should be
+ // defined in some other package. If NAME is not NULL, it is the
+ // name of this type. If this returns true it sets *PACKAGE to the
+ // package where the type descriptor is defined.
+ bool
+ type_descriptor_defined_elsewhere(Named_type* name, const Package** package);
- // Get the hash and equality functions for a type.
+ // Build the hash and equality type functions for a type which needs
+ // specific functions.
void
- type_functions(const char** hash_fn, const char** equal_fn) const;
+ specific_type_functions(Gogo*, Named_type*, Function_type* hash_fntype,
+ Function_type* equal_fntype, Named_object** hash_fn,
+ Named_object** equal_fn);
// Build a composite literal for the uncommon type information.
Expression*
@@ -1097,6 +1141,14 @@ class Type
// A list of builtin named types.
static std::vector<Named_type*> named_builtin_types;
+ // A map from types which need specific type functions to the type
+ // functions themselves.
+ typedef std::pair<Named_object*, Named_object*> Hash_equal_fn;
+ typedef Unordered_map_hash(const Type*, Hash_equal_fn, Type_hash_identical,
+ Type_identical) Type_functions;
+
+ static Type_functions type_functions_table;
+
// The type classification.
Type_classification classification_;
// The backend representation of the type, once it has been
@@ -1314,6 +1366,10 @@ class Integer_type : public Type
is_identical(const Integer_type* t) const;
protected:
+ bool
+ do_compare_is_identity() const
+ { return true; }
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -1383,6 +1439,10 @@ class Float_type : public Type
is_identical(const Float_type* t) const;
protected:
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -1448,6 +1508,10 @@ class Complex_type : public Type
is_identical(const Complex_type* t) const;
protected:
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -1504,6 +1568,10 @@ class String_type : public Type
do_has_pointer() const
{ return true; }
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
Btype*
do_get_backend(Gogo*);
@@ -1618,6 +1686,10 @@ class Function_type : public Type
do_has_pointer() const
{ return true; }
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -1699,6 +1771,10 @@ class Pointer_type : public Type
do_has_pointer() const
{ return true; }
+ bool
+ do_compare_is_identity() const
+ { return true; }
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -1944,6 +2020,14 @@ class Struct_type : public Type
static Type*
make_struct_type_descriptor_type();
+ // Write the hash function for this type.
+ void
+ write_hash_function(Gogo*, Named_type*, Function_type*, Function_type*);
+
+ // Write the equality function for this type.
+ void
+ write_equal_function(Gogo*, Named_type*);
+
protected:
int
do_traverse(Traverse*);
@@ -1954,6 +2038,9 @@ class Struct_type : public Type
bool
do_has_pointer() const;
+ bool
+ do_compare_is_identity() const;
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -2022,6 +2109,10 @@ class Array_type : public Type
array_has_hidden_fields(const Named_type* within, std::string* reason) const
{ return this->element_type_->has_hidden_fields(within, reason); }
+ // Build the hash and equality functions if necessary.
+ void
+ finalize_methods(Gogo*);
+
// Return a tree for the pointer to the values in an array.
tree
value_pointer_tree(Gogo*, tree array) const;
@@ -2052,6 +2143,14 @@ class Array_type : public Type
static Type*
make_slice_type_descriptor_type();
+ // Write the hash function for this type.
+ void
+ write_hash_function(Gogo*, Named_type*, Function_type*, Function_type*);
+
+ // Write the equality function for this type.
+ void
+ write_equal_function(Gogo*, Named_type*);
+
protected:
int
do_traverse(Traverse* traverse);
@@ -2065,6 +2164,13 @@ class Array_type : public Type
return this->length_ == NULL || this->element_type_->has_pointer();
}
+ bool
+ do_compare_is_identity() const
+ {
+ return (this->length_ != NULL
+ && this->element_type_->compare_is_identity());
+ }
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -2155,6 +2261,10 @@ class Map_type : public Type
do_has_pointer() const
{ return true; }
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -2237,6 +2347,10 @@ class Channel_type : public Type
do_has_pointer() const
{ return true; }
+ bool
+ do_compare_is_identity() const
+ { return true; }
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -2348,6 +2462,10 @@ class Interface_type : public Type
do_has_pointer() const
{ return true; }
+ bool
+ do_compare_is_identity() const
+ { return false; }
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -2480,6 +2598,11 @@ class Named_type : public Type
bool
is_named_error_type() const;
+ // Return whether this type is comparable. If REASON is not NULL,
+ // set *REASON when returning false.
+ bool
+ named_type_is_comparable(std::string* reason) const;
+
// Add a method to this type.
Named_object*
add_method(const std::string& name, Function*);
@@ -2572,6 +2695,9 @@ class Named_type : public Type
bool
do_has_pointer() const;
+ bool
+ do_compare_is_identity() const;
+
unsigned int
do_hash_for_method(Gogo*) const;
@@ -2704,6 +2830,10 @@ class Forward_declaration_type : public Type
do_has_pointer() const
{ return this->real_type()->has_pointer(); }
+ bool
+ do_compare_is_identity() const
+ { return this->real_type()->compare_is_identity(); }
+
unsigned int
do_hash_for_method(Gogo* gogo) const
{ return this->real_type()->hash_for_method(gogo); }
diff --git a/gcc/gtm-builtins.def b/gcc/gtm-builtins.def
index 9fcbdb0cc36..1630a0e96a6 100644
--- a/gcc/gtm-builtins.def
+++ b/gcc/gtm-builtins.def
@@ -1,5 +1,5 @@
DEF_TM_BUILTIN (BUILT_IN_TM_START, "_ITM_beginTransaction",
- BT_FN_UINT_UINT, ATTR_TM_NOTHROW_LIST)
+ BT_FN_UINT_UINT, ATTR_TM_NOTHROW_RT_LIST)
DEF_TM_BUILTIN (BUILT_IN_TM_COMMIT, "_ITM_commitTransaction",
BT_FN_VOID, ATTR_TM_NOTHROW_LIST)
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 2a82df1032f..ae38366c2ca 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -1112,7 +1112,8 @@ ipa_get_indirect_edge_target (struct cgraph_edge *ie,
if (!ie->indirect_info->polymorphic)
{
- tree t = VEC_index (tree, known_vals, param_index);
+ tree t = (VEC_length (tree, known_vals) > param_index
+ ? VEC_index (tree, known_vals, param_index) : NULL);
if (t &&
TREE_CODE (t) == ADDR_EXPR
&& TREE_CODE (TREE_OPERAND (t, 0)) == FUNCTION_DECL)
@@ -1126,7 +1127,7 @@ ipa_get_indirect_edge_target (struct cgraph_edge *ie,
otr_type = ie->indirect_info->otr_type;
t = VEC_index (tree, known_vals, param_index);
- if (!t && known_binfos)
+ if (!t && known_binfos && VEC_length (tree, known_binfos) > param_index)
t = VEC_index (tree, known_binfos, param_index);
if (!t)
return NULL_TREE;
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 0652e6417d8..4026f4ed50f 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -718,7 +718,7 @@ evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
{
struct cgraph_node *callee = cgraph_function_or_thunk_node (e->callee, NULL);
struct inline_summary *info = inline_summary (callee);
- int i;
+ VEC (tree, heap) *known_vals = NULL;
if (clause_ptr)
*clause_ptr = inline_p ? 0 : 1 << predicate_not_inlined_condition;
@@ -728,13 +728,13 @@ evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
*known_binfos_ptr = NULL;
if (ipa_node_params_vector
+ && !e->call_stmt_cannot_inline_p
&& ((clause_ptr && info->conds) || known_vals_ptr || known_binfos_ptr))
{
struct ipa_node_params *parms_info;
struct ipa_edge_args *args = IPA_EDGE_REF (e);
struct inline_edge_summary *es = inline_edge_summary (e);
int i, count = ipa_get_cs_argument_count (args);
- VEC (tree, heap) *known_vals = NULL;
if (e->caller->global.inlined_to)
parms_info = IPA_NODE_REF (e->caller->global.inlined_to);
@@ -752,9 +752,9 @@ evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
ipa_get_ith_jump_func (args, i));
if (cst)
{
- if (info->conds && TREE_CODE (cst) != TREE_BINFO)
+ if (known_vals && TREE_CODE (cst) != TREE_BINFO)
VEC_replace (tree, known_vals, i, cst);
- else if (known_binfos_ptr != NULL)
+ else if (known_binfos_ptr != NULL && TREE_CODE (cst) == TREE_BINFO)
VEC_replace (tree, *known_binfos_ptr, i, cst);
}
else if (inline_p
@@ -763,20 +763,16 @@ evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
i)->change_prob)
VEC_replace (tree, known_vals, i, error_mark_node);
}
-
- if (clause_ptr && info->conds)
- *clause_ptr = evaluate_conditions_for_known_args (callee, inline_p,
- known_vals);
-
- if (known_vals_ptr)
- *known_vals_ptr = known_vals;
- else
- VEC_free (tree, heap, known_vals);
}
- if (clause_ptr && !info->conds)
- for (i = 0; i < (int)VEC_length (condition, info->conds); i++)
- *clause_ptr |= 1 << (i + predicate_first_dynamic_condition);
+ if (clause_ptr)
+ *clause_ptr = evaluate_conditions_for_known_args (callee, inline_p,
+ known_vals);
+
+ if (known_vals_ptr)
+ *known_vals_ptr = known_vals;
+ else
+ VEC_free (tree, heap, known_vals);
}
@@ -2202,11 +2198,9 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
VEC (tree, heap) *known_binfos)
{
tree target;
- struct cgraph_node *callee;
- struct inline_summary *isummary;
- int edge_size = 0, edge_time = 0;
+ int time_diff, size_diff;
- if (!known_vals || !known_binfos)
+ if (!known_vals && !known_binfos)
return;
target = ipa_get_indirect_edge_target (ie, known_vals, known_binfos);
@@ -2214,10 +2208,22 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
return;
/* Account for difference in cost between indirect and direct calls. */
- *size -= ((eni_size_weights.indirect_call_cost - eni_size_weights.call_cost)
- * INLINE_SIZE_SCALE);
- *time -= ((eni_time_weights.indirect_call_cost - eni_time_weights.call_cost)
- * INLINE_TIME_SCALE * prob / REG_BR_PROB_BASE);
+ size_diff = ((eni_size_weights.indirect_call_cost - eni_size_weights.call_cost)
+ * INLINE_SIZE_SCALE);
+ *size -= size_diff;
+ time_diff = ((eni_time_weights.indirect_call_cost - eni_time_weights.call_cost)
+ * INLINE_TIME_SCALE * prob / REG_BR_PROB_BASE);
+ *time -= time_diff;
+
+ /* TODO: This code is trying to benefit indirect calls that will be inlined later.
+ The logic however do not belong into local size/time estimates and can not be
+ done here, or the accounting of changes will get wrong and we result with
+ negative function body sizes. We need to introduce infrastructure for independent
+ benefits to the inliner. */
+#if 0
+ struct cgraph_node *callee;
+ struct inline_summary *isummary;
+ int edge_size, edge_time, time_diff, size_diff;
callee = cgraph_get_node (target);
if (!callee || !callee->analyzed)
@@ -2229,22 +2235,20 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
estimate_edge_size_and_time (ie, &edge_size, &edge_time, prob);
/* Count benefit only from functions that definitely will be inlined
- if additional context from NODE's caller were available. */
- if (edge_size >= isummary->size * INLINE_SIZE_SCALE)
+ if additional context from NODE's caller were available.
+
+ We just account overall size change by inlining. TODO:
+ we really need to add sort of benefit metrics for these kind of
+ cases. */
+ if (edge_size - size_diff >= isummary->size * INLINE_SIZE_SCALE)
{
/* Subtract size and time that we added for edge IE. */
- *size -= edge_size;
- *time -= edge_time;
-
- /* Subtract benefit from inlining devirtualized call. */
- *size -= edge_size - isummary->size * INLINE_SIZE_SCALE;
- *time -= edge_time - (isummary->time * INLINE_TIME_SCALE * prob
- / REG_BR_PROB_BASE);
+ *size -= edge_size - size_diff;
- /* TODO: estimate benefit from optimizing CALLEE's body provided
- additional context from IE call site.
- For insipiration see ipa-cp.c: devirtualization_time_bonus(). */
+ /* Account inlined call. */
+ *size += isummary->size * INLINE_SIZE_SCALE;
}
+#endif
}
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index 14bd89a67bc..8f8899f2475 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -482,21 +482,13 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report)
e->inline_failed = CIF_MAX_INLINE_INSNS_SINGLE_LIMIT;
want_inline = false;
}
- else if (!DECL_DECLARED_INLINE_P (callee->decl)
- && !flag_inline_functions)
- {
- e->inline_failed = CIF_NOT_DECLARED_INLINED;
- want_inline = false;
- }
- else if (!DECL_DECLARED_INLINE_P (callee->decl)
- && growth >= MAX_INLINE_INSNS_AUTO)
- {
- e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT;
- want_inline = false;
- }
- /* If call is cold, do not inline when function body would grow.
- Still inline when the overall unit size will shrink because the offline
- copy of function being eliminated.
+ /* Before giving up based on fact that caller size will grow, allow
+ functions that are called few times and eliminating the offline
+ copy will lead to overall code size reduction.
+ Not all of these will be handled by subsequent inlining of functions
+ called once: in particular weak functions are not handled or funcitons
+ that inline to multiple calls but a lot of bodies is optimized out.
+ Finally we want to inline earlier to allow inlining of callbacks.
This is slightly wrong on aggressive side: it is entirely possible
that function is called many times with a context where inlining
@@ -509,24 +501,37 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report)
first, this situation is not a problem at all: after inlining all
"good" calls, we will realize that keeping the function around is
better. */
- else if (!cgraph_maybe_hot_edge_p (e)
- && (DECL_EXTERNAL (callee->decl)
-
- /* Unlike for functions called once, we play unsafe with
- COMDATs. We can allow that since we know functions
- in consideration are small (and thus risk is small) and
- moreover grow estimates already accounts that COMDAT
- functions may or may not disappear when eliminated from
- current unit. With good probability making aggressive
- choice in all units is going to make overall program
- smaller.
-
- Consequently we ask cgraph_can_remove_if_no_direct_calls_p
- instead of
- cgraph_will_be_removed_from_program_if_no_direct_calls */
-
- || !cgraph_can_remove_if_no_direct_calls_p (callee)
- || estimate_growth (callee) > 0))
+ else if (growth <= MAX_INLINE_INSNS_SINGLE
+ /* Unlike for functions called once, we play unsafe with
+ COMDATs. We can allow that since we know functions
+ in consideration are small (and thus risk is small) and
+ moreover grow estimates already accounts that COMDAT
+ functions may or may not disappear when eliminated from
+ current unit. With good probability making aggressive
+ choice in all units is going to make overall program
+ smaller.
+
+ Consequently we ask cgraph_can_remove_if_no_direct_calls_p
+ instead of
+ cgraph_will_be_removed_from_program_if_no_direct_calls */
+ && !DECL_EXTERNAL (callee->decl)
+ && cgraph_can_remove_if_no_direct_calls_p (callee)
+ && estimate_growth (callee) <= 0)
+ ;
+ else if (!DECL_DECLARED_INLINE_P (callee->decl)
+ && !flag_inline_functions)
+ {
+ e->inline_failed = CIF_NOT_DECLARED_INLINED;
+ want_inline = false;
+ }
+ else if (!DECL_DECLARED_INLINE_P (callee->decl)
+ && growth >= MAX_INLINE_INSNS_AUTO)
+ {
+ e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT;
+ want_inline = false;
+ }
+ /* If call is cold, do not inline when function body would grow. */
+ else if (!cgraph_maybe_hot_edge_p (e))
{
e->inline_failed = CIF_UNLIKELY_CALL;
want_inline = false;
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index 4b3be3bb1ff..054bb85be0b 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -304,7 +304,6 @@ lto_is_streamable (tree expr)
&& code != WITH_CLEANUP_EXPR
&& code != STATEMENT_LIST
&& code != OMP_CLAUSE
- && code != OPTIMIZATION_NODE
&& (code == CASE_LABEL_EXPR
|| code == DECL_EXPR
|| TREE_CODE_CLASS (code) != tcc_statement);
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index 8882abe9d44..825d268e290 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR lto/51774
+ * lto-lang.c (handle_returns_twice_attribute): New function.
+ (lto_attribute_table): Add returns_twice attribute.
+
2011-12-21 Richard Guenther <rguenther@suse.de>
* lto.c (GIMPLE_REGISTER_TYPE): New define.
diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c
index 0d230eeddca..d255e65d26d 100644
--- a/gcc/lto/lto-lang.c
+++ b/gcc/lto/lto-lang.c
@@ -1,5 +1,5 @@
/* Language-dependent hooks for LTO.
- Copyright 2009, 2010 Free Software Foundation, Inc.
+ Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Contributed by CodeSourcery, Inc.
This file is part of GCC.
@@ -47,6 +47,7 @@ static tree handle_nothrow_attribute (tree *, tree, tree, int, bool *);
static tree handle_sentinel_attribute (tree *, tree, tree, int, bool *);
static tree handle_type_generic_attribute (tree *, tree, tree, int, bool *);
static tree handle_transaction_pure_attribute (tree *, tree, tree, int, bool *);
+static tree handle_returns_twice_attribute (tree *, tree, tree, int, bool *);
static tree ignore_attribute (tree *, tree, tree, int, bool *);
static tree handle_format_attribute (tree *, tree, tree, int, bool *);
@@ -74,6 +75,8 @@ const struct attribute_spec lto_attribute_table[] =
handle_nonnull_attribute, false },
{ "nothrow", 0, 0, true, false, false,
handle_nothrow_attribute, false },
+ { "returns_twice", 0, 0, true, false, false,
+ handle_returns_twice_attribute, false },
{ "sentinel", 0, 1, false, true, true,
handle_sentinel_attribute, false },
{ "type generic", 0, 0, false, true, true,
@@ -425,6 +428,21 @@ handle_transaction_pure_attribute (tree *node, tree ARG_UNUSED (name),
return NULL_TREE;
}
+/* Handle a "returns_twice" attribute. */
+
+static tree
+handle_returns_twice_attribute (tree *node, tree ARG_UNUSED (name),
+ tree ARG_UNUSED (args),
+ int ARG_UNUSED (flags),
+ bool * ARG_UNUSED (no_add_attrs))
+{
+ gcc_assert (TREE_CODE (*node) == FUNCTION_DECL);
+
+ DECL_IS_RETURNS_TWICE (*node) = 1;
+
+ return NULL_TREE;
+}
+
/* Ignore the given attribute. Used when this attribute may be usefully
overridden by the target, but is not used generically. */
diff --git a/gcc/profile.c b/gcc/profile.c
index 201f6cd3c32..10ab756d567 100644
--- a/gcc/profile.c
+++ b/gcc/profile.c
@@ -1,6 +1,6 @@
/* Calculate branch probabilities, and basic block execution counts.
Copyright (C) 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+ 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by James E. Wilson, UC Berkeley/Cygnus Support;
based on some ideas from Dain Samples of UC Berkeley.
@@ -1040,6 +1040,41 @@ branch_prob (void)
fprintf (dump_file, "Adding fake entry edge to bb %i\n",
bb->index);
make_edge (ENTRY_BLOCK_PTR, bb, EDGE_FAKE);
+ /* Avoid bbs that have both fake entry edge and also some
+ exit edge. One of those edges wouldn't be added to the
+ spanning tree, but we can't instrument any of them. */
+ if (have_exit_edge || need_exit_edge)
+ {
+ gimple_stmt_iterator gsi;
+ gimple first;
+ tree fndecl;
+
+ gsi = gsi_after_labels (bb);
+ gcc_checking_assert (!gsi_end_p (gsi));
+ first = gsi_stmt (gsi);
+ if (is_gimple_debug (first))
+ {
+ gsi_next_nondebug (&gsi);
+ gcc_checking_assert (!gsi_end_p (gsi));
+ first = gsi_stmt (gsi);
+ }
+ /* Don't split the bbs containing __builtin_setjmp_receiver
+ or __builtin_setjmp_dispatcher calls. These are very
+ special and don't expect anything to be inserted before
+ them. */
+ if (!is_gimple_call (first)
+ || (fndecl = gimple_call_fndecl (first)) == NULL
+ || DECL_BUILT_IN_CLASS (fndecl) != BUILT_IN_NORMAL
+ || (DECL_FUNCTION_CODE (fndecl) != BUILT_IN_SETJMP_RECEIVER
+ && (DECL_FUNCTION_CODE (fndecl)
+ != BUILT_IN_SETJMP_DISPATCHER)))
+ {
+ if (dump_file)
+ fprintf (dump_file, "Splitting bb %i after labels\n",
+ bb->index);
+ split_block_after_labels (bb);
+ }
+ }
}
}
diff --git a/gcc/stmt.c b/gcc/stmt.c
index af6439cd879..93d643a7bf0 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -1,7 +1,7 @@
/* Expands front end tree to back end RTL for GCC
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+ 2010, 2011, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -1253,11 +1253,11 @@ check_operand_nalternatives (tree outputs, tree inputs)
static bool
check_unique_operand_names (tree outputs, tree inputs, tree labels)
{
- tree i, j;
+ tree i, j, i_name = NULL_TREE;
for (i = outputs; i ; i = TREE_CHAIN (i))
{
- tree i_name = TREE_PURPOSE (TREE_PURPOSE (i));
+ i_name = TREE_PURPOSE (TREE_PURPOSE (i));
if (! i_name)
continue;
@@ -1268,7 +1268,7 @@ check_unique_operand_names (tree outputs, tree inputs, tree labels)
for (i = inputs; i ; i = TREE_CHAIN (i))
{
- tree i_name = TREE_PURPOSE (TREE_PURPOSE (i));
+ i_name = TREE_PURPOSE (TREE_PURPOSE (i));
if (! i_name)
continue;
@@ -1282,7 +1282,7 @@ check_unique_operand_names (tree outputs, tree inputs, tree labels)
for (i = labels; i ; i = TREE_CHAIN (i))
{
- tree i_name = TREE_PURPOSE (i);
+ i_name = TREE_PURPOSE (i);
if (! i_name)
continue;
@@ -1297,8 +1297,7 @@ check_unique_operand_names (tree outputs, tree inputs, tree labels)
return true;
failure:
- error ("duplicate asm operand name %qs",
- TREE_STRING_POINTER (TREE_PURPOSE (TREE_PURPOSE (i))));
+ error ("duplicate asm operand name %qs", TREE_STRING_POINTER (i_name));
return false;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d4a5c9cbf5a..b8b9b94468d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,111 @@
+2012-01-07 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimize/51694
+ * gcc.c-torture/compile/pr51694.c: new testcase.
+
+2012-01-07 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/51600
+ * g++.dg/torture/pr51600.C: New testcase.
+
+2012-01-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR gcov-profile/51715
+ PR gcov-profile/51717
+ * gcc.misc-tests/gcov-13.c: Skip on 32-bit hppa*-*-hpux*.
+ * gcc.misc-tests/gcov-14.c: Likewise.
+
+2012-01-06 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/parse/new5.C: New.
+
+2012-01-06 Patrick Marlier <patrick.marlier@gmail.com>
+
+ PR testsuite/51655
+ * c-c++-common/tm/memcpy-1.c: Declare memcpy instead of
+ including <string.h>.
+
+2012-01-06 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/abi/mangle51.C: New.
+ * g++.dg/abi/mangle52.C: New.
+ * g++.dg/abi/mangle53.C: New.
+ * g++.dg/abi/mangle54.C: New.
+ * g++.dg/abi/mangle55.C: New.
+ * g++.dg/abi/mangle56.C: New.
+ * g++.dg/abi/mangle57.C: New.
+ * g++.dg/abi/mangle58.C: New.
+ * g++.dg/abi/mangle59.C: New.
+ * g++.dg/cpp0x/trailing3.C: Update mangling.
+ * g++.dg/cpp0x/variadic111.C: Update mangling.
+ * g++.dg/cpp0x/variadic4.C: Update mangling.
+ * g++.dg/cpp0x/variadic42.C: Pass -fabi-version=5.
+ * g++.dg/template/nontype22.C: Works now.
+ * g++.dg/template/pr35240.C: Works now.
+
+ * g++.dg/cpp0x/error7.C: New.
+
+2012-01-06 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/deallocate_stat_2.f90: New.
+ * coarray/allocate_errgmsg.f90: New.
+ * gfortran.dg/coarray_lib_alloc_1.f90: New.
+ * gfortran.dg/coarray_lib_alloc_2.f90: New.
+ * coarray/subobject_1.f90: Fix for num_images > 1.
+ * gfortran.dg/deallocate_stat.f90: Update due to changed
+ stat= handling.
+
+2012-01-06 Andrew Stubbs <ams@codesourcery.com>
+
+ * gcc.target/arm/headmerge-2.c: Adjust scan pattern.
+
+2012-01-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * ada/acats/overflow.lst: Add cb20004.
+
+2012-01-05 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/51541
+ * g++.dg/cpp0x/alias-decl-18.C: New test.
+
+2012-01-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/execute/20120104-1.c: New test.
+
+2012-01-05 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/PR48946
+ * gfortran.dg/typebound_operator_9.f03: This is now a copy of
+ the old typebound_operator_8.f03.
+ * gfortran.dg/typebound_operator_8.f03: New version of
+ typebound_operator_7.f03 with 'u' a derived type instead of a
+ class object.
+
+2012-01-05 Richard Guenther <rguenther@suse.de>
+
+ * g++.dg/torture/pr49309.C: Skip for -flto.
+
+2012-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/51761
+ * gcc.c-torture/compile/pr51761.c: New test.
+
+2012-01-05 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/51760
+ * gcc.dg/torture/pr51760.c: New testcase.
+
+2012-01-05 Aldy Hernandez <aldyh@redhat.com>
+
+ PR middle-end/51472
+ * gcc.dg/tm/memopt-6.c: Adjust regexp.
+
+2012-01-05 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41576
+ * gfortran.dg/lto/pr41576_0.f90: New testcase.
+ * gfortran.dg/lto/pr41576_1.f90: Likewise.
+
2012-01-04 Jakub Jelinek <jakub@redhat.com>
PR debug/51695
diff --git a/gcc/testsuite/ada/acats/overflow.lst b/gcc/testsuite/ada/acats/overflow.lst
index 3685a4d809f..fb76ef17705 100644
--- a/gcc/testsuite/ada/acats/overflow.lst
+++ b/gcc/testsuite/ada/acats/overflow.lst
@@ -14,3 +14,4 @@ c46014a
c460008
c460011
c4a012b
+cb20004
diff --git a/gcc/testsuite/c-c++-common/pr51768.c b/gcc/testsuite/c-c++-common/pr51768.c
new file mode 100644
index 00000000000..082594ccad7
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr51768.c
@@ -0,0 +1,25 @@
+/* PR middle-end/51768 */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void
+foo (void)
+{
+ asm goto ("" : : : : lab, lab, lab2, lab); /* { dg-error "duplicate asm operand name" } */
+lab:;
+lab2:;
+}
+
+void
+bar (void)
+{
+ asm goto ("" : : [lab] "i" (0) : : lab); /* { dg-error "duplicate asm operand name" } */
+lab:;
+}
+
+void
+baz (void)
+{
+ int x;
+ asm ("" : [lab] "=r" (x) : [lab] "r" (x)); /* { dg-error "duplicate asm operand name" } */
+}
diff --git a/gcc/testsuite/c-c++-common/tm/memcpy-1.c b/gcc/testsuite/c-c++-common/tm/memcpy-1.c
index fa841b26164..873e14bb1bc 100644
--- a/gcc/testsuite/c-c++-common/tm/memcpy-1.c
+++ b/gcc/testsuite/c-c++-common/tm/memcpy-1.c
@@ -1,6 +1,10 @@
/* { dg-do compile } */
/* { dg-options "-fgnu-tm" } */
-#include <string.h>
+typedef __SIZE_TYPE__ size_t;
+#ifdef __cplusplus
+extern "C"
+#endif
+void *memcpy (void *__restrict, const void *__restrict, size_t);
__attribute__((transaction_safe))
void *wmemcpy(void *dest, const void *src, size_t n)
diff --git a/gcc/testsuite/g++.dg/abi/mangle51.C b/gcc/testsuite/g++.dg/abi/mangle51.C
new file mode 100644
index 00000000000..4992f1a327c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle51.C
@@ -0,0 +1,27 @@
+// { dg-options "-std=c++0x -fabi-version=0" }
+
+void* operator new (__SIZE_TYPE__, void *p) { return p; }
+int i;
+
+template <unsigned int> struct helper {};
+// { dg-final { scan-assembler "_Z6check1IiEvP6helperIXsznw_T_EEE" } }
+template <class T> void check1( helper<sizeof(new T)> * ) { }
+// { dg-final { scan-assembler "_Z6check2IiEvP6helperIXszgsnw_T_piEEE" } }
+template <class T> void check2( helper<sizeof(::new T())> * ) { }
+// { dg-final { scan-assembler "_Z6check3IiEvP6helperIXsznwadL_Z1iE_T_piLi1EEEE" } }
+template <class T> void check3( helper<sizeof(new (&i) T(1))> * ) { }
+// { dg-final { scan-assembler "_Z7check3aIiEvP6helperIXsznw_T_ilLi1EEEE" } }
+template <class T> void check3a( helper<sizeof(new T{1})> * ) { }
+// { dg-final { scan-assembler "_Z6check4IiEvP6helperIXszna_A1_T_EEE" } }
+template <class T> void check4( helper<sizeof(new T[1])> * ) { }
+// { dg-final { scan-assembler "_Z6check5IiEvP6helperIXszna_A1_T_piEEE" } }
+template <class T> void check5( helper<sizeof(new T[1]())> * ) { }
+int main()
+{
+ check1<int>(0);
+ check2<int>(0);
+ check3<int>(0);
+ check3a<int>(0);
+ check4<int>(0);
+ check5<int>(0);
+}
diff --git a/gcc/testsuite/g++.dg/abi/mangle52.C b/gcc/testsuite/g++.dg/abi/mangle52.C
new file mode 100644
index 00000000000..2c463415f1f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle52.C
@@ -0,0 +1,21 @@
+// { dg-options "-fabi-version=0" }
+
+template <unsigned int> struct helper {};
+// { dg-final { scan-assembler "_Z6check1IiEvP6helperIXszscT_Li1EEE" } }
+template <class T> void check1( helper<sizeof(static_cast<T>(1))> * ) { }
+// { dg-final { scan-assembler "_Z6check2IiXadL_Z1iEEEvP6helperIXszccPT_T0_EE" } }
+template <class T, T* p> void check2( helper<sizeof(const_cast<T*>(p))> * ) { }
+// { dg-final { scan-assembler "_Z6check3IiEvP6helperIXszrcPT_Li0EEE" } }
+template <class T> void check3( helper<sizeof(reinterpret_cast<T*>(0))> * ) { }
+// { dg-final { scan-assembler "_Z6check4I1AXadL_Z1aEEEvP6helperIXszdcPT_T0_EE" } }
+template <class T, T* p> void check4( helper<sizeof(dynamic_cast<T*>(p))> * ) { }
+
+struct A{} a;
+int i;
+int main()
+{
+ check1<int>(0);
+ check2<int,&i>(0);
+ check3<int>(0);
+ check4<A,&a>(0);
+}
diff --git a/gcc/testsuite/g++.dg/abi/mangle53.C b/gcc/testsuite/g++.dg/abi/mangle53.C
new file mode 100644
index 00000000000..b279182d8c4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle53.C
@@ -0,0 +1,13 @@
+// { dg-options "-std=c++0x" }
+
+bool b;
+// { dg-final { scan-assembler "_Z1fIiEDTquL_Z1bEfp_twLi42EET_" } }
+template <class T> auto f (T t) -> decltype(b?t:throw 42) { return 0; }
+// { dg-final { scan-assembler "_Z2f2IiEDTquL_Z1bEfp_trET_" } }
+template <class T> auto f2 (T t) -> decltype(b?t:throw) { return 0; }
+
+int main()
+{
+ f(0);
+ f2(0);
+}
diff --git a/gcc/testsuite/g++.dg/abi/mangle54.C b/gcc/testsuite/g++.dg/abi/mangle54.C
new file mode 100644
index 00000000000..ea98df17d36
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle54.C
@@ -0,0 +1,19 @@
+// { dg-options "-std=c++0x -fabi-version=0" }
+
+int i;
+// { dg-final { scan-assembler "_Z2f1IiEDTppfp_ET_" } }
+template <class T> auto f1 (T t) -> decltype(t++) { return i; }
+// { dg-final { scan-assembler "_Z2f2IiEDTpp_fp_ET_" } }
+template <class T> auto f2 (T t) -> decltype(++t) { return i; }
+// { dg-final { scan-assembler "_Z2f3IiEDTmmfp_ET_" } }
+template <class T> auto f3 (T t) -> decltype(t--) { return i; }
+// { dg-final { scan-assembler "_Z2f4IiEDTmm_fp_ET_" } }
+template <class T> auto f4 (T t) -> decltype(--t) { return i; }
+
+int main()
+{
+ f1(0);
+ f2(0);
+ f3(0);
+ f4(0);
+}
diff --git a/gcc/testsuite/g++.dg/abi/mangle55.C b/gcc/testsuite/g++.dg/abi/mangle55.C
new file mode 100644
index 00000000000..72caadcc24d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle55.C
@@ -0,0 +1,14 @@
+// { dg-options "-std=c++0x" }
+
+struct A { int i; };
+// { dg-final { scan-assembler "_Z2f1Ii1AEDTdsfp_fp0_ET0_MS2_T_" } }
+template <class T, class U> auto f1 (U u, T U::* p) -> decltype(u.*p) { return u.*p; }
+// { dg-final { scan-assembler "_Z2f2Ii1AEDTpmfp_fp0_EPT0_MS2_T_" } }
+template <class T, class U> auto f2 (U* u, T U::* p) -> decltype(u->*p) { return u->*p; }
+
+int main()
+{
+ A a = {};
+ f1(a, &A::i);
+ f2(&a, &A::i);
+}
diff --git a/gcc/testsuite/g++.dg/abi/mangle56.C b/gcc/testsuite/g++.dg/abi/mangle56.C
new file mode 100644
index 00000000000..0fd270169d6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle56.C
@@ -0,0 +1,13 @@
+// { dg-options "-std=c++0x" }
+
+template <class T> T g(T t1, T t2) { return t2; }
+// { dg-final { scan-assembler "_Z2f1IiEDTcl1gfp_ilEEET_" } }
+template <class T> auto f1 (T t) -> decltype(g(t,{})) { return g(t,{}); }
+// { dg-final { scan-assembler "_Z2f2IiEDTcl1gfp_tlT_EEES0_" } }
+template <class T> auto f2 (T t) -> decltype(g(t,T{})) { return g(t,T{}); }
+
+int main()
+{
+ f1(0);
+ f2(0);
+}
diff --git a/gcc/testsuite/g++.dg/abi/mangle57.C b/gcc/testsuite/g++.dg/abi/mangle57.C
new file mode 100644
index 00000000000..3d9d81e55ba
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle57.C
@@ -0,0 +1,16 @@
+// { dg-options "-std=c++0x -fabi-version=0" }
+
+template<typename T> int cmp1(T a, T b);
+int cmp2(char a, char b);
+template<typename T, int (*cmp)(T, T)> struct A { };
+// { dg-final { scan-assembler "_Z1fIcEvR1AIT_X4cmp1EE" } }
+template <typename T> void f (A<T,cmp1> &);
+// { dg-final { scan-assembler "_Z1fIcEvR1AIT_L_Z4cmp2ccEE" } }
+template <typename T> void f (A<T,cmp2> &);
+void g()
+{
+ A<char,cmp1> a;
+ f(a);
+ A<char,cmp2> a2;
+ f(a2);
+}
diff --git a/gcc/testsuite/g++.dg/abi/mangle58.C b/gcc/testsuite/g++.dg/abi/mangle58.C
new file mode 100644
index 00000000000..14e5543d9f2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle58.C
@@ -0,0 +1,19 @@
+// { dg-options "-std=c++0x -fabi-version=0" }
+
+template<typename T, int (*cmp)(T, T)> struct A { };
+struct B {
+ template<typename T> static int cmp1(T a, T b);
+ static int cmp2(char a, char b);
+ // { dg-final { scan-assembler "_ZN1B1fIcEEvR1AIT_X4cmp1EE" } }
+ template <typename T> static void f (A<T,cmp1> &);
+ // { dg-final { scan-assembler "_ZN1B1fIcEEvR1AIT_L_ZNS_4cmp2EccEE" } }
+ template <typename T> static void f (A<T,cmp2> &);
+};
+
+void g()
+{
+ A<char,B::cmp1> a;
+ B::f(a);
+ A<char,B::cmp2> a2;
+ B::f(a2);
+}
diff --git a/gcc/testsuite/g++.dg/abi/mangle59.C b/gcc/testsuite/g++.dg/abi/mangle59.C
new file mode 100644
index 00000000000..3c88ec87486
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle59.C
@@ -0,0 +1,19 @@
+// { dg-options "-std=c++0x -fabi-version=0" }
+
+// { dg-final { scan-assembler "_Z1fIiEDTcmdlfp_psfp_EPT_" } }
+template <class T> auto f (T* p) -> decltype(delete p, +p) { return p; }
+// { dg-final { scan-assembler "_Z1gIiEDTcmgsdlfp_psfp_EPT_" } }
+template <class T> auto g (T* p) -> decltype(::delete p, +p) { return p; }
+// { dg-final { scan-assembler "_Z1hIiEDTcmdafp_psfp_EPT_" } }
+template <class T> auto h (T* p) -> decltype(delete[] p, +p) { return p; }
+// { dg-final { scan-assembler "_Z1iIiEDTcmgsdafp_psfp_EPT_" } }
+template <class T> auto i (T* p) -> decltype(::delete[] p, +p) { return p; }
+
+int main()
+{
+ int x;
+ f(&x);
+ g(&x);
+ h(&x);
+ i(&x);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-18.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-18.C
new file mode 100644
index 00000000000..ba655613117
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-18.C
@@ -0,0 +1,9 @@
+// Origin: PR c++/51541
+// { dg-options -std=c++11 }
+
+template<typename Z> using ::T = void(int n); // { dg-error "" }
+template<typename Z> using operator int = void(int n); // { dg-error "" }
+template<typename Z> using typename U = void; // { dg-error "" }
+template<typename Z> using typename ::V = void(int n); // { dg-error "" }
+template<typename Z> using typename ::operator bool = void(int n); // { dg-error "" }
+using foo __attribute__((aligned(4)) = int; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/error7.C b/gcc/testsuite/g++.dg/cpp0x/error7.C
new file mode 100644
index 00000000000..0dfbf9f0406
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/error7.C
@@ -0,0 +1,10 @@
+// Test for printing the type of T{} in error messages.
+// { dg-options -std=c++0x }
+
+template <class T, T t> struct A { };
+template <class T> A<T,T{}> f(T t); // { dg-message "T{}" }
+
+int main()
+{
+ f(); // { dg-error "no match" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/trailing3.C b/gcc/testsuite/g++.dg/cpp0x/trailing3.C
index 82d36f0d0d2..1c64f45731a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/trailing3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/trailing3.C
@@ -1,5 +1,5 @@
// More auto/decltype mangling tests.
-// { dg-options "-std=c++0x" }
+// { dg-options "-std=c++0x -fabi-version=0" }
template <class T>
struct B
@@ -58,6 +58,6 @@ int main()
A<int>().h(1);
// { dg-final { scan-assembler "_ZN1AIiE1jIiEEDTplfp_clL_Z1xvEEET_" } }
A<int>().j(1);
- // { dg-final { scan-assembler "_Z1gIIidEEDTcl1fspplfp_Li1EEEDpT_" } }
+ // { dg-final { scan-assembler "_Z1gIJidEEDTcl1fspplfp_Li1EEEDpT_" } }
g(42, 1.0);
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic111.C b/gcc/testsuite/g++.dg/cpp0x/variadic111.C
index 378162e162d..cb94ce69755 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic111.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic111.C
@@ -1,5 +1,5 @@
// PR c++/48424
-// { dg-options -std=c++0x }
+// { dg-options "-std=c++0x -fabi-version=0" }
template<typename... Args1>
struct S
@@ -16,4 +16,4 @@ int main()
s.f(1,2.0,false,'a');
}
-// { dg-final { scan-assembler "_ZN1SIIidEE1fIIbcEEEvidDpOT_" } }
+// { dg-final { scan-assembler "_ZN1SIJidEE1fIJbcEEEvidDpOT_" } }
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic4.C b/gcc/testsuite/g++.dg/cpp0x/variadic4.C
index 9257a92d5b9..1bdad3256fb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic4.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic4.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=gnu++0x" }
+// { dg-options "-std=gnu++0x -fabi-version=0" }
// { dg-do compile }
template<typename... Args>
class tuple {};
@@ -9,7 +9,7 @@ void f_two(tuple<int, float>) {}
void f_nested(tuple<int, tuple<double, char>, float>) { }
-// { dg-final { scan-assembler "_Z6f_none5tupleIIEE" } }
-// { dg-final { scan-assembler "_Z5f_one5tupleIIiEE" } }
-// { dg-final { scan-assembler "_Z5f_two5tupleIIifEE" } }
-// { dg-final { scan-assembler "_Z8f_nested5tupleIIiS_IIdcEEfEE" } }
+// { dg-final { scan-assembler "_Z6f_none5tupleIJEE" } }
+// { dg-final { scan-assembler "_Z5f_one5tupleIJiEE" } }
+// { dg-final { scan-assembler "_Z5f_two5tupleIJifEE" } }
+// { dg-final { scan-assembler "_Z8f_nested5tupleIJiS_IJdcEEfEE" } }
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic42.C b/gcc/testsuite/g++.dg/cpp0x/variadic42.C
index 47d9b66da58..3ec68e8b1ff 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic42.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic42.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=gnu++0x" }
+// { dg-options "-std=gnu++0x -fabi-version=5" }
// { dg-do compile }
template<typename... Args>
void f(Args...) { }
diff --git a/gcc/testsuite/g++.dg/parse/new5.C b/gcc/testsuite/g++.dg/parse/new5.C
new file mode 100644
index 00000000000..83937c6e9c1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/new5.C
@@ -0,0 +1,4 @@
+// PR c++/47450
+
+struct A { };
+A* ap = new(struct: A { }); // { dg-error "types may not be defined" }
diff --git a/gcc/testsuite/g++.dg/template/nontype22.C b/gcc/testsuite/g++.dg/template/nontype22.C
index f2c8c46e9fc..44d8479af29 100644
--- a/gcc/testsuite/g++.dg/template/nontype22.C
+++ b/gcc/testsuite/g++.dg/template/nontype22.C
@@ -3,7 +3,7 @@
template<typename T> int cmp1(T a, T b);
template<typename T, int (*cmp)(T, T) = cmp1> struct A { };
-template <typename T> void f (A<T> &); // { dg-bogus "" "" { xfail *-*-* } }
+template <typename T> void f (A<T> &);
void g()
{
A<char> a;
diff --git a/gcc/testsuite/g++.dg/template/pr35240.C b/gcc/testsuite/g++.dg/template/pr35240.C
index 88e25050fda..5b945511768 100644
--- a/gcc/testsuite/g++.dg/template/pr35240.C
+++ b/gcc/testsuite/g++.dg/template/pr35240.C
@@ -1,12 +1,11 @@
// PR c++/35240
// { dg-do compile }
-
template<int> struct A {};
-template<int N> A<sizeof(new int[N][N])> foo(); // { dg-message "unimplemented" }
+template<int N> A<sizeof(new int[N][N])> foo();
void bar()
{
- foo<1>(); // { dg-message "required" }
+ foo<1>();
}
diff --git a/gcc/testsuite/g++.dg/torture/pr49309.C b/gcc/testsuite/g++.dg/torture/pr49309.C
index a3453779250..f96967ddd34 100644
--- a/gcc/testsuite/g++.dg/torture/pr49309.C
+++ b/gcc/testsuite/g++.dg/torture/pr49309.C
@@ -1,5 +1,6 @@
// PR tree-optimization/49309
// { dg-do compile }
+// { dg-skip-if "" { *-*-* } { "-flto" } { "" } }
// { dg-options "-fpreprocessed -fmudflap" }
struct A
diff --git a/gcc/testsuite/g++.dg/torture/pr51600.C b/gcc/testsuite/g++.dg/torture/pr51600.C
new file mode 100644
index 00000000000..61803607762
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr51600.C
@@ -0,0 +1,16 @@
+template<class T> inline T min(T a, T b) { return a < b ? a : b; }
+double cornerbound(double *P, double (*m)(double, double))
+{
+ double b=m(P[0],P[3]);
+ return m(b,P[12]);
+}
+void bound(double *P, double (*m)(double, double), double b)
+{
+ m(b,cornerbound(P,m));
+}
+void bounds(double fuzz, unsigned maxdepth)
+{
+ double Px[]={};
+ double bx=Px[0];
+ bound(Px,min,bx);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr49710.c b/gcc/testsuite/gcc.c-torture/compile/pr49710.c
new file mode 100644
index 00000000000..2a6e331db8d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr49710.c
@@ -0,0 +1,35 @@
+int a, b, c, d;
+
+static void
+foo (int *x)
+{
+ c = 0;
+ while (1)
+ {
+ if (*x)
+break;
+ while (b)
+for (; c; c = 0);
+ for (d = 18; d != 18; d++)
+if (c)
+ {
+ foo (x);
+ return;
+ }
+ }
+}
+
+static void
+bar ()
+{
+ foo (0);
+ foo (0);
+ for (;;)
+ ;
+}
+
+baz ()
+{
+ for (; a;)
+ bar ();
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr51694.c b/gcc/testsuite/gcc.c-torture/compile/pr51694.c
new file mode 100644
index 00000000000..579a2434d82
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr51694.c
@@ -0,0 +1,14 @@
+void
+foo (x, fn)
+ void (*fn) ();
+{
+ int a = baz ((void *) 0, x);
+ (*fn) (x, 0);
+}
+
+void
+bar (void)
+{
+ void *x = 0;
+ foo (x);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr51761.c b/gcc/testsuite/gcc.c-torture/compile/pr51761.c
new file mode 100644
index 00000000000..68911c84ce1
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr51761.c
@@ -0,0 +1,10 @@
+/* PR middle-end/51761 */
+
+struct S { unsigned int len; };
+struct S foo (struct S);
+
+struct S
+bar (struct S x)
+{
+ return ({ struct S a = x; foo (a); });
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr51767.c b/gcc/testsuite/gcc.c-torture/compile/pr51767.c
new file mode 100644
index 00000000000..62a192d660d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr51767.c
@@ -0,0 +1,23 @@
+/* PR rtl-optimization/51767 */
+
+extern void fn1 (void), fn2 (void);
+
+static inline __attribute__((always_inline)) int
+foo (int *x, long y)
+{
+ asm goto ("" : : "r" (x), "r" (y) : "memory" : lab);
+ return 0;
+lab:
+ return 1;
+}
+
+void
+bar (int *x)
+{
+ if (foo (x, 23))
+ fn1 ();
+ else
+ fn2 ();
+
+ foo (x, 2);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20120105-1.c b/gcc/testsuite/gcc.c-torture/execute/20120105-1.c
new file mode 100644
index 00000000000..115ba1509d4
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20120105-1.c
@@ -0,0 +1,24 @@
+struct __attribute__((packed)) S
+{
+ int a, b, c;
+};
+
+static int __attribute__ ((noinline,noclone))
+extract(const char *p)
+{
+ struct S s;
+ __builtin_memcpy (&s, p, sizeof(struct S));
+ return s.a;
+}
+
+volatile int i;
+
+int main (void)
+{
+ char p[sizeof(struct S) + 1];
+
+ __builtin_memset (p, 0, sizeof(struct S) + 1);
+ i = extract (p + 1);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr51762.c b/gcc/testsuite/gcc.dg/pr51762.c
new file mode 100644
index 00000000000..9c59f338c7e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr51762.c
@@ -0,0 +1,19 @@
+/* PR debug/51762 */
+/* { dg-do compile } */
+/* { dg-options "-g -Os -fomit-frame-pointer -fno-asynchronous-unwind-tables" } */
+
+void noret (void) __attribute__ ((noreturn));
+int bar (void);
+void baz (const char *);
+static int v = -1;
+
+void
+foo (void)
+{
+ if (bar () && v == -1)
+ {
+ baz ("baz");
+ noret ();
+ }
+ noret ();
+}
diff --git a/gcc/testsuite/gcc.dg/tm/memopt-6.c b/gcc/testsuite/gcc.dg/tm/memopt-6.c
index 496ce2dd3e8..810a5595db1 100644
--- a/gcc/testsuite/gcc.dg/tm/memopt-6.c
+++ b/gcc/testsuite/gcc.dg/tm/memopt-6.c
@@ -17,5 +17,5 @@ int f()
return lala.x[i];
}
-/* { dg-final { scan-tree-dump-times "memmoveRtWt \\\(&lala, &lacopy" 1 "tmedge" } } */
+/* { dg-final { scan-tree-dump-times "memmoveRtWt \\\(.*, &lacopy" 1 "tmedge" } } */
/* { dg-final { cleanup-tree-dump "tmedge" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/pr51760.c b/gcc/testsuite/gcc.dg/torture/pr51760.c
new file mode 100644
index 00000000000..ebff2c93043
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr51760.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+
+extern inline __attribute__ ((always_inline)) void *
+memmove (void *dest, const void *src, __SIZE_TYPE__ len)
+{
+ return __builtin___memmove_chk (dest, src, len,
+ __builtin_object_size (dest, 0));
+}
+
+void
+foo (void)
+{
+ char a[64], *b;
+ for (;;)
+ {
+ memmove (a, b, 0);
+ b = a;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/tree-prof/pr44777.c b/gcc/testsuite/gcc.dg/tree-prof/pr44777.c
new file mode 100644
index 00000000000..1c4da7f5f7d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-prof/pr44777.c
@@ -0,0 +1,43 @@
+/* PR middle-end/44777 */
+/* { dg-options "-O0" } */
+/* A variant of gcc.c-torture/execute/comp-goto-2.c. */
+
+extern void abort (void);
+extern void exit (int);
+
+#ifdef STACK_SIZE
+#define DEPTH ((STACK_SIZE) / 512 + 1)
+#else
+#define DEPTH 1000
+#endif
+
+#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES)
+int
+x (int a)
+{
+ __label__ xlab;
+ void y (int a)
+ {
+ void *x = &&llab;
+ if (a==-1)
+ goto *x;
+ if (a==0)
+ goto xlab;
+ llab:
+ y (a-1);
+ }
+ y (a);
+ xlab:;
+ return a;
+}
+#endif
+
+int
+main ()
+{
+#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES)
+ if (x (DEPTH) != DEPTH)
+ abort ();
+#endif
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.misc-tests/gcov-13.c b/gcc/testsuite/gcc.misc-tests/gcov-13.c
index fa9680b2544..e26f76be57b 100644
--- a/gcc/testsuite/gcc.misc-tests/gcov-13.c
+++ b/gcc/testsuite/gcc.misc-tests/gcov-13.c
@@ -4,6 +4,7 @@
/* { dg-require-weak "" } */
/* { dg-do run { target native } } */
/* { dg-additional-sources "gcovpart-13b.c" } */
+/* { dg-skip-if "weak ellision not supported" { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
int __attribute__ ((weak)) weak ()
{
diff --git a/gcc/testsuite/gcc.misc-tests/gcov-14.c b/gcc/testsuite/gcc.misc-tests/gcov-14.c
index 9e16cee52cb..9599e0bd126 100644
--- a/gcc/testsuite/gcc.misc-tests/gcov-14.c
+++ b/gcc/testsuite/gcc.misc-tests/gcov-14.c
@@ -5,6 +5,7 @@
/* { dg-additional-options "-flat_namespace -undefined suppress" { target *-*-darwin* } } */
/* { dg-require-weak "" } */
/* { dg-do run { target native } } */
+/* { dg-skip-if "undefined weak not supported" { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
extern int __attribute__ ((weak)) Foo ();
diff --git a/gcc/testsuite/gcc.target/arm/headmerge-2.c b/gcc/testsuite/gcc.target/arm/headmerge-2.c
index 36637a64eb3..17d8e9365c5 100644
--- a/gcc/testsuite/gcc.target/arm/headmerge-2.c
+++ b/gcc/testsuite/gcc.target/arm/headmerge-2.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
-/* { dg-final { scan-assembler-times "120" 1 } } */
+/* { dg-final { scan-assembler-times "120\n" 1 } } */
extern void foo1 (int);
extern void foo2 (int);
diff --git a/gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90 b/gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90
new file mode 100644
index 00000000000..e5a19543742
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90
@@ -0,0 +1,36 @@
+! { dg-do run }
+!
+! Check handling of errmsg.
+!
+implicit none
+integer, allocatable :: a[:], b(:)[:], c, d(:)
+integer :: stat
+character(len=300) :: str
+
+allocate(a[*], b(1)[*], c, d(2), stat=stat)
+
+str = repeat('X', len(str))
+allocate(a[*], stat=stat, errmsg=str)
+!print *, stat, trim(str)
+if (stat == 0 .or. str /= "Attempt to allocate an allocated object") &
+ call abort ()
+
+str = repeat('Y', len(str))
+allocate(b(2)[*], stat=stat, errmsg=str)
+!print *, stat, trim(str)
+if (stat == 0 .or. str /= "Attempt to allocate an allocated object") &
+ call abort ()
+
+str = repeat('Q', len(str))
+allocate(c, stat=stat, errmsg=str)
+!print *, stat, trim(str)
+if (stat == 0 .or. str /= "Attempt to allocate an allocated object") &
+ call abort ()
+
+str = repeat('P', len(str))
+allocate(d(3), stat=stat, errmsg=str)
+!print *, stat, trim(str)
+if (stat == 0 .or. str /= "Attempt to allocate an allocated object") &
+ call abort ()
+
+end
diff --git a/gcc/testsuite/gfortran.dg/coarray/subobject_1.f90 b/gcc/testsuite/gfortran.dg/coarray/subobject_1.f90
index 02536866b4d..028c24a8e65 100644
--- a/gcc/testsuite/gfortran.dg/coarray/subobject_1.f90
+++ b/gcc/testsuite/gfortran.dg/coarray/subobject_1.f90
@@ -24,20 +24,20 @@
b%a%i = 7
if (b%a%i /= 7) call abort
if (any (lcobound(b%a) /= (/ lb /))) call abort
- if (ucobound(b%a, dim=1) /= this_image() + lb - 1) call abort
+ if (ucobound(b%a, dim=1) /= num_images() + lb - 1) call abort
if (any (lcobound(b%a%i) /= (/ lb /))) call abort
- if (ucobound(b%a%i, dim=1) /= this_image() + lb - 1) call abort
+ if (ucobound(b%a%i, dim=1) /= num_images() + lb - 1) call abort
allocate(c%a(la)[lc:*])
c%a%i = init
if (any(c%a%i /= init)) call abort
if (any (lcobound(c%a) /= (/ lc /))) call abort
- if (ucobound(c%a, dim=1) /= this_image() + lc - 1) call abort
+ if (ucobound(c%a, dim=1) /= num_images() + lc - 1) call abort
if (any (lcobound(c%a%i) /= (/ lc /))) call abort
- if (ucobound(c%a%i, dim=1) /= this_image() + lc - 1) call abort
+ if (ucobound(c%a%i, dim=1) /= num_images() + lc - 1) call abort
if (c%a(2)%i /= init(2)) call abort
if (any (lcobound(c%a(2)) /= (/ lc /))) call abort
- if (ucobound(c%a(2), dim=1) /= this_image() + lc - 1) call abort
+ if (ucobound(c%a(2), dim=1) /= num_images() + lc - 1) call abort
if (any (lcobound(c%a(2)%i) /= (/ lc /))) call abort
- if (ucobound(c%a(2)%i, dim=1) /= this_image() + lc - 1) call abort
+ if (ucobound(c%a(2)%i, dim=1) /= num_images() + lc - 1) call abort
deallocate(b%a, c%a)
end
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90 b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
new file mode 100644
index 00000000000..c0d06a4bd2a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
@@ -0,0 +1,21 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=lib -fdump-tree-original" }
+!
+! Allocate/deallocate with libcaf.
+!
+
+ integer(4), allocatable :: xx[:], yy(:)[:]
+ integer :: stat
+ character(len=200) :: errmsg
+ allocate(xx[*], stat=stat, errmsg=errmsg)
+ allocate(yy(2)[*], stat=stat, errmsg=errmsg)
+ deallocate(xx,yy,stat=stat, errmsg=errmsg)
+ end
+
+! { dg-final { scan-tree-dump-times "_gfortran_caf_register .4, 1, &xx.token, &stat.., &errmsg, 200.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_register .8, 1, &yy.token, &stat.., &errmsg, 200.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&xx.token, &stat.., &errmsg, 200.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy.token, &stat.., &errmsg, 200.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy.token, 0B, 0B, 0.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&xx.token, 0B, 0B, 0.;" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90 b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
new file mode 100644
index 00000000000..3aaff1e8c35
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
@@ -0,0 +1,23 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=lib -fdump-tree-original" }
+!
+! Allocate/deallocate with libcaf.
+!
+
+ type t
+ end type t
+ class(t), allocatable :: xx[:], yy(:)[:]
+ integer :: stat
+ character(len=200) :: errmsg
+ allocate(xx[*], stat=stat, errmsg=errmsg)
+ allocate(yy(2)[*], stat=stat, errmsg=errmsg)
+ deallocate(xx,yy,stat=stat, errmsg=errmsg)
+ end
+
+! { dg-final { scan-tree-dump-times "_gfortran_caf_register .1, 1, &xx._data.token, &stat.., &errmsg, 200.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_register .1, 1, &yy._data.token, &stat.., &errmsg, 200.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&xx._data.token, &stat.., &errmsg, 200.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy._data.token, &stat.., &errmsg, 200.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy._data.token, 0B, 0B, 0.;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&xx._data.token, 0B, 0B, 0.;" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc/testsuite/gfortran.dg/deallocate_stat.f90 b/gcc/testsuite/gfortran.dg/deallocate_stat.f90
index b691f21c74e..b2ba95c740a 100644
--- a/gcc/testsuite/gfortran.dg/deallocate_stat.f90
+++ b/gcc/testsuite/gfortran.dg/deallocate_stat.f90
@@ -69,9 +69,9 @@ program deallocate_stat
i = 13
deallocate(a1, stat=i) ; if (i /= 0) call abort
deallocate(a2, a1, stat=i) ; if (i /= 1) call abort
- deallocate(a1, a3, a2, stat=i) ; if (i /= 2) call abort
+ deallocate(a1, a3, a2, stat=i) ; if (i /= 1) call abort
deallocate(b4, stat=i) ; if (i /= 0) call abort
deallocate(b4, b5, stat=i) ; if (i /= 1) call abort
- deallocate(b4, b5, b6, stat=i) ; if (i /= 2) call abort
+ deallocate(b4, b5, b6, stat=i) ; if (i /= 1) call abort
end program deallocate_stat
diff --git a/gcc/testsuite/gfortran.dg/deallocate_stat_2.f90 b/gcc/testsuite/gfortran.dg/deallocate_stat_2.f90
new file mode 100644
index 00000000000..e93f446a818
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/deallocate_stat_2.f90
@@ -0,0 +1,30 @@
+! { dg-do run }
+!
+! Check that the error is properly diagnosed and the strings are correctly padded.
+!
+integer, allocatable :: A, B(:)
+integer :: stat
+character(len=5) :: sstr
+character(len=200) :: str
+
+str = repeat('X', len(str))
+deallocate(a, stat=stat, errmsg=str)
+!print *, stat, trim(str)
+if (stat == 0 .or. str /= "Attempt to deallocate an unallocated object") call abort()
+
+str = repeat('Y', len(str))
+deallocate(b, stat=stat, errmsg=str)
+!print *, stat, trim(str)
+if (stat == 0 .or. str /= "Attempt to deallocate an unallocated object") call abort()
+
+sstr = repeat('Q', len(sstr))
+deallocate(a, stat=stat, errmsg=sstr)
+!print *, stat, trim(sstr)
+if (stat == 0 .or. sstr /= "Attem") call abort()
+
+sstr = repeat('P', len(sstr))
+deallocate(b, stat=stat, errmsg=sstr)
+!print *, stat, trim(sstr)
+if (stat == 0 .or. sstr /= "Attem") call abort()
+
+end
diff --git a/gcc/testsuite/gfortran.dg/lto/pr41576_0.f90 b/gcc/testsuite/gfortran.dg/lto/pr41576_0.f90
new file mode 100644
index 00000000000..feda0b174cb
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/lto/pr41576_0.f90
@@ -0,0 +1,10 @@
+! { dg-lto-do run }
+! { dg-lto-options { { -O2 -flto -Werror } } }
+
+subroutine foo
+ common /bar/ a, b
+ integer(4) :: a ,b
+ a = 1
+ b = 2
+end
+
diff --git a/gcc/testsuite/gfortran.dg/lto/pr41576_1.f90 b/gcc/testsuite/gfortran.dg/lto/pr41576_1.f90
new file mode 100644
index 00000000000..6aefcc875e3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/lto/pr41576_1.f90
@@ -0,0 +1,7 @@
+program test
+ common /bar/ c, d
+ integer(4) :: c, d
+ call foo
+ if (c/=1 .or. d/=2) call abort
+end program test
+
diff --git a/gcc/testsuite/gfortran.dg/typebound_operator_8.f03 b/gcc/testsuite/gfortran.dg/typebound_operator_8.f03
index b27210bc646..a3726ba9f1a 100644
--- a/gcc/testsuite/gfortran.dg/typebound_operator_8.f03
+++ b/gcc/testsuite/gfortran.dg/typebound_operator_8.f03
@@ -1,500 +1,100 @@
! { dg-do run }
-! { dg-add-options ieee }
+! PR48946 - complex expressions involving typebound operators of derived types.
!
-! Solve a diffusion problem using an object-oriented approach
-!
-! Author: Arjen Markus (comp.lang.fortran)
-! This version: pault@gcc.gnu.org
-!
-! Note:
-! (i) This could be turned into a more sophisticated program
-! using the techniques described in the chapter on
-! mathematical abstractions.
-! (That would allow the selection of the time integration
-! method in a transparent way)
-!
-! (ii) The target procedures for process_p and source_p are
-! different to the typebound procedures for dynamic types
-! because the passed argument is not type(base_pde_object).
-!
-! (iii) Two solutions are calculated, one with the procedure
-! pointers and the other with typebound procedures. The sums
-! of the solutions are compared.
-
-! (iv) The source is a delta function in the middle of the
-! mesh, whilst the process is quartic in the local value,
-! when it is positive.
-!
-! base_pde_objects --
-! Module to define the basic objects
-!
-module base_pde_objects
+module field_module
implicit none
- type, abstract :: base_pde_object
-! No data
- procedure(process_p), pointer, pass :: process_p
- procedure(source_p), pointer, pass :: source_p
+ type ,abstract :: field
contains
- procedure(process), deferred :: process
- procedure(source), deferred :: source
- procedure :: initialise
- procedure :: nabla2
- procedure :: print
- procedure(real_times_obj), pass(obj), deferred :: real_times_obj
- procedure(obj_plus_obj), deferred :: obj_plus_obj
- procedure(obj_assign_obj), deferred :: obj_assign_obj
- generic :: operator(*) => real_times_obj
- generic :: operator(+) => obj_plus_obj
- generic :: assignment(=) => obj_assign_obj
+ procedure(field_op_real) ,deferred :: multiply_real
+ procedure(field_plus_field) ,deferred :: plus
+ procedure(assign_field) ,deferred :: assn
+ generic :: operator(*) => multiply_real
+ generic :: operator(+) => plus
+ generic :: ASSIGNMENT(=) => assn
end type
abstract interface
- function process_p (obj)
- import base_pde_object
- class(base_pde_object), intent(in) :: obj
- class(base_pde_object), allocatable :: process_p
- end function process_p
- end interface
- abstract interface
- function source_p (obj, time)
- import base_pde_object
- class(base_pde_object), intent(in) :: obj
- real, intent(in) :: time
- class(base_pde_object), allocatable :: source_p
- end function source_p
+ function field_plus_field(lhs,rhs)
+ import :: field
+ class(field) ,intent(in) :: lhs
+ class(field) ,intent(in) :: rhs
+ class(field) ,allocatable :: field_plus_field
+ end function
end interface
abstract interface
- function process (obj)
- import base_pde_object
- class(base_pde_object), intent(in) :: obj
- class(base_pde_object), allocatable :: process
- end function process
+ function field_op_real(lhs,rhs)
+ import :: field
+ class(field) ,intent(in) :: lhs
+ real ,intent(in) :: rhs
+ class(field) ,allocatable :: field_op_real
+ end function
end interface
abstract interface
- function source (obj, time)
- import base_pde_object
- class(base_pde_object), intent(in) :: obj
- real, intent(in) :: time
- class(base_pde_object), allocatable :: source
- end function source
+ subroutine assign_field(lhs,rhs)
+ import :: field
+ class(field) ,intent(OUT) :: lhs
+ class(field) ,intent(IN) :: rhs
+ end subroutine
end interface
- abstract interface
- function real_times_obj (factor, obj) result(newobj)
- import base_pde_object
- real, intent(in) :: factor
- class(base_pde_object), intent(in) :: obj
- class(base_pde_object), allocatable :: newobj
- end function real_times_obj
- end interface
- abstract interface
- function obj_plus_obj (obj1, obj2) result(newobj)
- import base_pde_object
- class(base_pde_object), intent(in) :: obj1
- class(base_pde_object), intent(in) :: obj2
- class(base_pde_object), allocatable :: newobj
- end function obj_plus_obj
- end interface
- abstract interface
- subroutine obj_assign_obj (obj1, obj2)
- import base_pde_object
- class(base_pde_object), intent(inout) :: obj1
- class(base_pde_object), intent(in) :: obj2
- end subroutine obj_assign_obj
- end interface
-contains
-! print --
-! Print the concentration field
- subroutine print (obj)
- class(base_pde_object) :: obj
- ! Dummy
- end subroutine print
-! initialise --
-! Initialise the concentration field using a specific function
- subroutine initialise (obj, funcxy)
- class(base_pde_object) :: obj
- interface
- real function funcxy (coords)
- real, dimension(:), intent(in) :: coords
- end function funcxy
- end interface
- ! Dummy
- end subroutine initialise
-! nabla2 --
-! Determine the divergence
- function nabla2 (obj)
- class(base_pde_object), intent(in) :: obj
- class(base_pde_object), allocatable :: nabla2
- ! Dummy
- end function nabla2
-end module base_pde_objects
-! cartesian_2d_objects --
-! PDE object on a 2D cartesian grid
-!
-module cartesian_2d_objects
- use base_pde_objects
+end module
+
+module i_field_module
+ use field_module
implicit none
- type, extends(base_pde_object) :: cartesian_2d_object
- real, dimension(:,:), allocatable :: c
- real :: dx
- real :: dy
+ type, extends (field) :: i_field
+ integer :: i
contains
- procedure :: process => process_cart2d
- procedure :: source => source_cart2d
- procedure :: initialise => initialise_cart2d
- procedure :: nabla2 => nabla2_cart2d
- procedure :: print => print_cart2d
- procedure, pass(obj) :: real_times_obj => real_times_cart2d
- procedure :: obj_plus_obj => obj_plus_cart2d
- procedure :: obj_assign_obj => obj_assign_cart2d
- end type cartesian_2d_object
- interface grid_definition
- module procedure grid_definition_cart2d
- end interface
+ procedure :: multiply_real => i_multiply_real
+ procedure :: plus => i_plus_i
+ procedure :: assn => i_assn
+ end type
contains
- function process_cart2d (obj)
- class(cartesian_2d_object), intent(in) :: obj
- class(base_pde_object), allocatable :: process_cart2d
- allocate (process_cart2d,source = obj)
- select type (process_cart2d)
- type is (cartesian_2d_object)
- process_cart2d%c = -sign (obj%c, 1.0)*obj%c** 4
- class default
- call abort
- end select
- end function process_cart2d
- function process_cart2d_p (obj)
- class(base_pde_object), intent(in) :: obj
- class(base_pde_object), allocatable :: process_cart2d_p
- allocate (process_cart2d_p,source = obj)
- select type (process_cart2d_p)
- type is (cartesian_2d_object)
- select type (obj)
- type is (cartesian_2d_object)
- process_cart2d_p%c = -sign (obj%c, 1.0)*obj%c** 4
- end select
- class default
- call abort
+ function i_plus_i(lhs,rhs)
+ class(i_field) ,intent(in) :: lhs
+ class(field) ,intent(in) :: rhs
+ class(field) ,allocatable :: i_plus_i
+ integer :: m = 0
+ select type (lhs)
+ type is (i_field); m = lhs%i
end select
- end function process_cart2d_p
- function source_cart2d (obj, time)
- class(cartesian_2d_object), intent(in) :: obj
- real, intent(in) :: time
- class(base_pde_object), allocatable :: source_cart2d
- integer :: m, n
- m = size (obj%c, 1)
- n = size (obj%c, 2)
- allocate (source_cart2d, source = obj)
- select type (source_cart2d)
- type is (cartesian_2d_object)
- if (allocated (source_cart2d%c)) deallocate (source_cart2d%c)
- allocate (source_cart2d%c(m, n))
- source_cart2d%c = 0.0
- if (time .lt. 5.0) source_cart2d%c(m/2, n/2) = 0.1
- class default
- call abort
+ select type (rhs)
+ type is (i_field); m = rhs%i + m
end select
- end function source_cart2d
-
- function source_cart2d_p (obj, time)
- class(base_pde_object), intent(in) :: obj
- real, intent(in) :: time
- class(base_pde_object), allocatable :: source_cart2d_p
- integer :: m, n
- select type (obj)
- type is (cartesian_2d_object)
- m = size (obj%c, 1)
- n = size (obj%c, 2)
- class default
- call abort
- end select
- allocate (source_cart2d_p,source = obj)
- select type (source_cart2d_p)
- type is (cartesian_2d_object)
- if (allocated (source_cart2d_p%c)) deallocate (source_cart2d_p%c)
- allocate (source_cart2d_p%c(m,n))
- source_cart2d_p%c = 0.0
- if (time .lt. 5.0) source_cart2d_p%c(m/2, n/2) = 0.1
- class default
- call abort
+ allocate (i_plus_i, source = i_field (m))
+ end function
+ function i_multiply_real(lhs,rhs)
+ class(i_field) ,intent(in) :: lhs
+ real ,intent(in) :: rhs
+ class(field) ,allocatable :: i_multiply_real
+ integer :: m = 0
+ select type (lhs)
+ type is (i_field); m = lhs%i * int (rhs)
end select
- end function source_cart2d_p
+ allocate (i_multiply_real, source = i_field (m))
+ end function
+ subroutine i_assn(lhs,rhs)
+ class(i_field) ,intent(OUT) :: lhs
+ class(field) ,intent(IN) :: rhs
+ select type (lhs)
+ type is (i_field)
+ select type (rhs)
+ type is (i_field)
+ lhs%i = rhs%i
+ end select
+ end select
+ end subroutine
+end module
-! grid_definition --
-! Initialises the grid
-!
- subroutine grid_definition_cart2d (obj, sizes, dims)
- class(base_pde_object), allocatable :: obj
- real, dimension(:) :: sizes
- integer, dimension(:) :: dims
- allocate( cartesian_2d_object :: obj )
- select type (obj)
- type is (cartesian_2d_object)
- allocate (obj%c(dims(1), dims(2)))
- obj%c = 0.0
- obj%dx = sizes(1)/dims(1)
- obj%dy = sizes(2)/dims(2)
- class default
- call abort
- end select
- end subroutine grid_definition_cart2d
-! print_cart2d --
-! Print the concentration field to the screen
-!
- subroutine print_cart2d (obj)
- class(cartesian_2d_object) :: obj
- character(len=20) :: format
- write( format, '(a,i0,a)' ) '(', size(obj%c,1), 'f6.3)'
- write( *, format ) obj%c
- end subroutine print_cart2d
-! initialise_cart2d --
-! Initialise the concentration field using a specific function
-!
- subroutine initialise_cart2d (obj, funcxy)
- class(cartesian_2d_object) :: obj
- interface
- real function funcxy (coords)
- real, dimension(:), intent(in) :: coords
- end function funcxy
- end interface
- integer :: i, j
- real, dimension(2) :: x
- obj%c = 0.0
- do j = 2,size (obj%c, 2)-1
- x(2) = obj%dy * (j-1)
- do i = 2,size (obj%c, 1)-1
- x(1) = obj%dx * (i-1)
- obj%c(i,j) = funcxy (x)
- enddo
- enddo
- end subroutine initialise_cart2d
-! nabla2_cart2d
-! Determine the divergence
- function nabla2_cart2d (obj)
- class(cartesian_2d_object), intent(in) :: obj
- class(base_pde_object), allocatable :: nabla2_cart2d
- integer :: m, n
- real :: dx, dy
- m = size (obj%c, 1)
- n = size (obj%c, 2)
- dx = obj%dx
- dy = obj%dy
- allocate (cartesian_2d_object :: nabla2_cart2d)
- select type (nabla2_cart2d)
- type is (cartesian_2d_object)
- allocate (nabla2_cart2d%c(m,n))
- nabla2_cart2d%c = 0.0
- nabla2_cart2d%c(2:m-1,2:n-1) = &
- -(2.0 * obj%c(2:m-1,2:n-1) - obj%c(1:m-2,2:n-1) - obj%c(3:m,2:n-1)) / dx**2 &
- -(2.0 * obj%c(2:m-1,2:n-1) - obj%c(2:m-1,1:n-2) - obj%c(2:m-1,3:n)) / dy**2
- class default
- call abort
- end select
- end function nabla2_cart2d
- function real_times_cart2d (factor, obj) result(newobj)
- real, intent(in) :: factor
- class(cartesian_2d_object), intent(in) :: obj
- class(base_pde_object), allocatable :: newobj
- integer :: m, n
- m = size (obj%c, 1)
- n = size (obj%c, 2)
- allocate (cartesian_2d_object :: newobj)
- select type (newobj)
- type is (cartesian_2d_object)
- allocate (newobj%c(m,n))
- newobj%c = factor * obj%c
- class default
- call abort
- end select
- end function real_times_cart2d
- function obj_plus_cart2d (obj1, obj2) result( newobj )
- class(cartesian_2d_object), intent(in) :: obj1
- class(base_pde_object), intent(in) :: obj2
- class(base_pde_object), allocatable :: newobj
- integer :: m, n
- m = size (obj1%c, 1)
- n = size (obj1%c, 2)
- allocate (cartesian_2d_object :: newobj)
- select type (newobj)
- type is (cartesian_2d_object)
- allocate (newobj%c(m,n))
- select type (obj2)
- type is (cartesian_2d_object)
- newobj%c = obj1%c + obj2%c
- class default
- call abort
- end select
- class default
- call abort
- end select
- end function obj_plus_cart2d
- subroutine obj_assign_cart2d (obj1, obj2)
- class(cartesian_2d_object), intent(inout) :: obj1
- class(base_pde_object), intent(in) :: obj2
- select type (obj2)
- type is (cartesian_2d_object)
- obj1%c = obj2%c
- class default
- call abort
- end select
- end subroutine obj_assign_cart2d
-end module cartesian_2d_objects
-! define_pde_objects --
-! Module to bring all the PDE object types together
-!
-module define_pde_objects
- use base_pde_objects
- use cartesian_2d_objects
- implicit none
- interface grid_definition
- module procedure grid_definition_general
- end interface
-contains
- subroutine grid_definition_general (obj, type, sizes, dims)
- class(base_pde_object), allocatable :: obj
- character(len=*) :: type
- real, dimension(:) :: sizes
- integer, dimension(:) :: dims
- select case (type)
- case ("cartesian 2d")
- call grid_definition (obj, sizes, dims)
- case default
- write(*,*) 'Unknown grid type: ', trim (type)
- stop
- end select
- end subroutine grid_definition_general
-end module define_pde_objects
-! pde_specific --
-! Module holding the routines specific to the PDE that
-! we are solving
-!
-module pde_specific
+program main
+ use i_field_module
implicit none
-contains
- real function patch (coords)
- real, dimension(:), intent(in) :: coords
- if (sum ((coords-[50.0,50.0])**2) < 40.0) then
- patch = 1.0
- else
- patch = 0.0
- endif
- end function patch
-end module pde_specific
-! test_pde_solver --
-! Small test program to demonstrate the usage
-!
-program test_pde_solver
- use define_pde_objects
- use pde_specific
- implicit none
- class(base_pde_object), allocatable :: solution, deriv
- integer :: i
- real :: time, dtime, diff, chksum(2)
+ type(i_field) ,allocatable :: u
+ allocate (u, source = i_field (99))
- call simulation1 ! Use proc pointers for source and process define_pde_objects
- select type (solution)
- type is (cartesian_2d_object)
- deallocate (solution%c)
- end select
- select type (deriv)
- type is (cartesian_2d_object)
- deallocate (deriv%c)
- end select
- deallocate (solution, deriv)
-
- call simulation2 ! Use typebound procedures for source and process
- if (chksum(1) .ne. chksum(2)) call abort
- if ((chksum(1) - 0.881868720)**2 > 1e-4) call abort
-contains
- subroutine simulation1
-!
-! Create the grid
-!
- call grid_definition (solution, "cartesian 2d", [100.0, 100.0], [16, 16])
- call grid_definition (deriv, "cartesian 2d", [100.0, 100.0], [16, 16])
-!
-! Initialise the concentration field
-!
- call solution%initialise (patch)
-!
-! Set the procedure pointers
-!
- solution%source_p => source_cart2d_p
- solution%process_p => process_cart2d_p
-!
-! Perform the integration - explicit method
-!
- time = 0.0
- dtime = 0.1
- diff = 5.0e-3
-
-! Give the diffusion coefficient correct dimensions.
- select type (solution)
- type is (cartesian_2d_object)
- diff = diff * solution%dx * solution%dy / dtime
- end select
-
-! write(*,*) 'Time: ', time, diff
-! call solution%print
- do i = 1,100
- deriv = solution%nabla2 ()
- solution = solution + diff * dtime * deriv + solution%source_p (time) + solution%process_p ()
-! if ( mod(i, 25) == 0 ) then
-! write(*,*)'Time: ', time
-! call solution%print
-! endif
- time = time + dtime
- enddo
-! write(*,*) 'End result 1: '
-! call solution%print
- select type (solution)
- type is (cartesian_2d_object)
- chksum(1) = sum (solution%c)
- end select
- end subroutine
- subroutine simulation2
-!
-! Create the grid
-!
- call grid_definition (solution, "cartesian 2d", [100.0, 100.0], [16, 16])
- call grid_definition (deriv, "cartesian 2d", [100.0, 100.0], [16, 16])
-!
-! Initialise the concentration field
-!
- call solution%initialise (patch)
-!
-! Set the procedure pointers
-!
- solution%source_p => source_cart2d_p
- solution%process_p => process_cart2d_p
-!
-! Perform the integration - explicit method
-!
- time = 0.0
- dtime = 0.1
- diff = 5.0e-3
-
-! Give the diffusion coefficient correct dimensions.
- select type (solution)
- type is (cartesian_2d_object)
- diff = diff * solution%dx * solution%dy / dtime
- end select
-
-! write(*,*) 'Time: ', time, diff
-! call solution%print
- do i = 1,100
- deriv = solution%nabla2 ()
- solution = solution + diff * dtime * deriv + solution%source (time) + solution%process ()
-! if ( mod(i, 25) == 0 ) then
-! write(*,*)'Time: ', time
-! call solution%print
-! endif
- time = time + dtime
- enddo
-! write(*,*) 'End result 2: '
-! call solution%print
- select type (solution)
- type is (cartesian_2d_object)
- chksum(2) = sum (solution%c)
- end select
- end subroutine
-end program test_pde_solver
-! { dg-final { cleanup-modules "pde_specific define_pde_objects cartesian_2d_objects base_pde_objects" } }
+ u = u*2.
+ u = (u*2.0*4.0) + u*4.0
+ u = u%multiply_real (2.0)*4.0
+ u = i_multiply_real (u, 2.0) * 4.0
+
+ if (u%i .ne. 152064) call abort
+end program
+! { dg-final { cleanup-modules "field_module i_field_module" } }
diff --git a/gcc/testsuite/gfortran.dg/typebound_operator_9.f03 b/gcc/testsuite/gfortran.dg/typebound_operator_9.f03
new file mode 100644
index 00000000000..b27210bc646
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_operator_9.f03
@@ -0,0 +1,500 @@
+! { dg-do run }
+! { dg-add-options ieee }
+!
+! Solve a diffusion problem using an object-oriented approach
+!
+! Author: Arjen Markus (comp.lang.fortran)
+! This version: pault@gcc.gnu.org
+!
+! Note:
+! (i) This could be turned into a more sophisticated program
+! using the techniques described in the chapter on
+! mathematical abstractions.
+! (That would allow the selection of the time integration
+! method in a transparent way)
+!
+! (ii) The target procedures for process_p and source_p are
+! different to the typebound procedures for dynamic types
+! because the passed argument is not type(base_pde_object).
+!
+! (iii) Two solutions are calculated, one with the procedure
+! pointers and the other with typebound procedures. The sums
+! of the solutions are compared.
+
+! (iv) The source is a delta function in the middle of the
+! mesh, whilst the process is quartic in the local value,
+! when it is positive.
+!
+! base_pde_objects --
+! Module to define the basic objects
+!
+module base_pde_objects
+ implicit none
+ type, abstract :: base_pde_object
+! No data
+ procedure(process_p), pointer, pass :: process_p
+ procedure(source_p), pointer, pass :: source_p
+ contains
+ procedure(process), deferred :: process
+ procedure(source), deferred :: source
+ procedure :: initialise
+ procedure :: nabla2
+ procedure :: print
+ procedure(real_times_obj), pass(obj), deferred :: real_times_obj
+ procedure(obj_plus_obj), deferred :: obj_plus_obj
+ procedure(obj_assign_obj), deferred :: obj_assign_obj
+ generic :: operator(*) => real_times_obj
+ generic :: operator(+) => obj_plus_obj
+ generic :: assignment(=) => obj_assign_obj
+ end type
+ abstract interface
+ function process_p (obj)
+ import base_pde_object
+ class(base_pde_object), intent(in) :: obj
+ class(base_pde_object), allocatable :: process_p
+ end function process_p
+ end interface
+ abstract interface
+ function source_p (obj, time)
+ import base_pde_object
+ class(base_pde_object), intent(in) :: obj
+ real, intent(in) :: time
+ class(base_pde_object), allocatable :: source_p
+ end function source_p
+ end interface
+ abstract interface
+ function process (obj)
+ import base_pde_object
+ class(base_pde_object), intent(in) :: obj
+ class(base_pde_object), allocatable :: process
+ end function process
+ end interface
+ abstract interface
+ function source (obj, time)
+ import base_pde_object
+ class(base_pde_object), intent(in) :: obj
+ real, intent(in) :: time
+ class(base_pde_object), allocatable :: source
+ end function source
+ end interface
+ abstract interface
+ function real_times_obj (factor, obj) result(newobj)
+ import base_pde_object
+ real, intent(in) :: factor
+ class(base_pde_object), intent(in) :: obj
+ class(base_pde_object), allocatable :: newobj
+ end function real_times_obj
+ end interface
+ abstract interface
+ function obj_plus_obj (obj1, obj2) result(newobj)
+ import base_pde_object
+ class(base_pde_object), intent(in) :: obj1
+ class(base_pde_object), intent(in) :: obj2
+ class(base_pde_object), allocatable :: newobj
+ end function obj_plus_obj
+ end interface
+ abstract interface
+ subroutine obj_assign_obj (obj1, obj2)
+ import base_pde_object
+ class(base_pde_object), intent(inout) :: obj1
+ class(base_pde_object), intent(in) :: obj2
+ end subroutine obj_assign_obj
+ end interface
+contains
+! print --
+! Print the concentration field
+ subroutine print (obj)
+ class(base_pde_object) :: obj
+ ! Dummy
+ end subroutine print
+! initialise --
+! Initialise the concentration field using a specific function
+ subroutine initialise (obj, funcxy)
+ class(base_pde_object) :: obj
+ interface
+ real function funcxy (coords)
+ real, dimension(:), intent(in) :: coords
+ end function funcxy
+ end interface
+ ! Dummy
+ end subroutine initialise
+! nabla2 --
+! Determine the divergence
+ function nabla2 (obj)
+ class(base_pde_object), intent(in) :: obj
+ class(base_pde_object), allocatable :: nabla2
+ ! Dummy
+ end function nabla2
+end module base_pde_objects
+! cartesian_2d_objects --
+! PDE object on a 2D cartesian grid
+!
+module cartesian_2d_objects
+ use base_pde_objects
+ implicit none
+ type, extends(base_pde_object) :: cartesian_2d_object
+ real, dimension(:,:), allocatable :: c
+ real :: dx
+ real :: dy
+ contains
+ procedure :: process => process_cart2d
+ procedure :: source => source_cart2d
+ procedure :: initialise => initialise_cart2d
+ procedure :: nabla2 => nabla2_cart2d
+ procedure :: print => print_cart2d
+ procedure, pass(obj) :: real_times_obj => real_times_cart2d
+ procedure :: obj_plus_obj => obj_plus_cart2d
+ procedure :: obj_assign_obj => obj_assign_cart2d
+ end type cartesian_2d_object
+ interface grid_definition
+ module procedure grid_definition_cart2d
+ end interface
+contains
+ function process_cart2d (obj)
+ class(cartesian_2d_object), intent(in) :: obj
+ class(base_pde_object), allocatable :: process_cart2d
+ allocate (process_cart2d,source = obj)
+ select type (process_cart2d)
+ type is (cartesian_2d_object)
+ process_cart2d%c = -sign (obj%c, 1.0)*obj%c** 4
+ class default
+ call abort
+ end select
+ end function process_cart2d
+ function process_cart2d_p (obj)
+ class(base_pde_object), intent(in) :: obj
+ class(base_pde_object), allocatable :: process_cart2d_p
+ allocate (process_cart2d_p,source = obj)
+ select type (process_cart2d_p)
+ type is (cartesian_2d_object)
+ select type (obj)
+ type is (cartesian_2d_object)
+ process_cart2d_p%c = -sign (obj%c, 1.0)*obj%c** 4
+ end select
+ class default
+ call abort
+ end select
+ end function process_cart2d_p
+ function source_cart2d (obj, time)
+ class(cartesian_2d_object), intent(in) :: obj
+ real, intent(in) :: time
+ class(base_pde_object), allocatable :: source_cart2d
+ integer :: m, n
+ m = size (obj%c, 1)
+ n = size (obj%c, 2)
+ allocate (source_cart2d, source = obj)
+ select type (source_cart2d)
+ type is (cartesian_2d_object)
+ if (allocated (source_cart2d%c)) deallocate (source_cart2d%c)
+ allocate (source_cart2d%c(m, n))
+ source_cart2d%c = 0.0
+ if (time .lt. 5.0) source_cart2d%c(m/2, n/2) = 0.1
+ class default
+ call abort
+ end select
+ end function source_cart2d
+
+ function source_cart2d_p (obj, time)
+ class(base_pde_object), intent(in) :: obj
+ real, intent(in) :: time
+ class(base_pde_object), allocatable :: source_cart2d_p
+ integer :: m, n
+ select type (obj)
+ type is (cartesian_2d_object)
+ m = size (obj%c, 1)
+ n = size (obj%c, 2)
+ class default
+ call abort
+ end select
+ allocate (source_cart2d_p,source = obj)
+ select type (source_cart2d_p)
+ type is (cartesian_2d_object)
+ if (allocated (source_cart2d_p%c)) deallocate (source_cart2d_p%c)
+ allocate (source_cart2d_p%c(m,n))
+ source_cart2d_p%c = 0.0
+ if (time .lt. 5.0) source_cart2d_p%c(m/2, n/2) = 0.1
+ class default
+ call abort
+ end select
+ end function source_cart2d_p
+
+! grid_definition --
+! Initialises the grid
+!
+ subroutine grid_definition_cart2d (obj, sizes, dims)
+ class(base_pde_object), allocatable :: obj
+ real, dimension(:) :: sizes
+ integer, dimension(:) :: dims
+ allocate( cartesian_2d_object :: obj )
+ select type (obj)
+ type is (cartesian_2d_object)
+ allocate (obj%c(dims(1), dims(2)))
+ obj%c = 0.0
+ obj%dx = sizes(1)/dims(1)
+ obj%dy = sizes(2)/dims(2)
+ class default
+ call abort
+ end select
+ end subroutine grid_definition_cart2d
+! print_cart2d --
+! Print the concentration field to the screen
+!
+ subroutine print_cart2d (obj)
+ class(cartesian_2d_object) :: obj
+ character(len=20) :: format
+ write( format, '(a,i0,a)' ) '(', size(obj%c,1), 'f6.3)'
+ write( *, format ) obj%c
+ end subroutine print_cart2d
+! initialise_cart2d --
+! Initialise the concentration field using a specific function
+!
+ subroutine initialise_cart2d (obj, funcxy)
+ class(cartesian_2d_object) :: obj
+ interface
+ real function funcxy (coords)
+ real, dimension(:), intent(in) :: coords
+ end function funcxy
+ end interface
+ integer :: i, j
+ real, dimension(2) :: x
+ obj%c = 0.0
+ do j = 2,size (obj%c, 2)-1
+ x(2) = obj%dy * (j-1)
+ do i = 2,size (obj%c, 1)-1
+ x(1) = obj%dx * (i-1)
+ obj%c(i,j) = funcxy (x)
+ enddo
+ enddo
+ end subroutine initialise_cart2d
+! nabla2_cart2d
+! Determine the divergence
+ function nabla2_cart2d (obj)
+ class(cartesian_2d_object), intent(in) :: obj
+ class(base_pde_object), allocatable :: nabla2_cart2d
+ integer :: m, n
+ real :: dx, dy
+ m = size (obj%c, 1)
+ n = size (obj%c, 2)
+ dx = obj%dx
+ dy = obj%dy
+ allocate (cartesian_2d_object :: nabla2_cart2d)
+ select type (nabla2_cart2d)
+ type is (cartesian_2d_object)
+ allocate (nabla2_cart2d%c(m,n))
+ nabla2_cart2d%c = 0.0
+ nabla2_cart2d%c(2:m-1,2:n-1) = &
+ -(2.0 * obj%c(2:m-1,2:n-1) - obj%c(1:m-2,2:n-1) - obj%c(3:m,2:n-1)) / dx**2 &
+ -(2.0 * obj%c(2:m-1,2:n-1) - obj%c(2:m-1,1:n-2) - obj%c(2:m-1,3:n)) / dy**2
+ class default
+ call abort
+ end select
+ end function nabla2_cart2d
+ function real_times_cart2d (factor, obj) result(newobj)
+ real, intent(in) :: factor
+ class(cartesian_2d_object), intent(in) :: obj
+ class(base_pde_object), allocatable :: newobj
+ integer :: m, n
+ m = size (obj%c, 1)
+ n = size (obj%c, 2)
+ allocate (cartesian_2d_object :: newobj)
+ select type (newobj)
+ type is (cartesian_2d_object)
+ allocate (newobj%c(m,n))
+ newobj%c = factor * obj%c
+ class default
+ call abort
+ end select
+ end function real_times_cart2d
+ function obj_plus_cart2d (obj1, obj2) result( newobj )
+ class(cartesian_2d_object), intent(in) :: obj1
+ class(base_pde_object), intent(in) :: obj2
+ class(base_pde_object), allocatable :: newobj
+ integer :: m, n
+ m = size (obj1%c, 1)
+ n = size (obj1%c, 2)
+ allocate (cartesian_2d_object :: newobj)
+ select type (newobj)
+ type is (cartesian_2d_object)
+ allocate (newobj%c(m,n))
+ select type (obj2)
+ type is (cartesian_2d_object)
+ newobj%c = obj1%c + obj2%c
+ class default
+ call abort
+ end select
+ class default
+ call abort
+ end select
+ end function obj_plus_cart2d
+ subroutine obj_assign_cart2d (obj1, obj2)
+ class(cartesian_2d_object), intent(inout) :: obj1
+ class(base_pde_object), intent(in) :: obj2
+ select type (obj2)
+ type is (cartesian_2d_object)
+ obj1%c = obj2%c
+ class default
+ call abort
+ end select
+ end subroutine obj_assign_cart2d
+end module cartesian_2d_objects
+! define_pde_objects --
+! Module to bring all the PDE object types together
+!
+module define_pde_objects
+ use base_pde_objects
+ use cartesian_2d_objects
+ implicit none
+ interface grid_definition
+ module procedure grid_definition_general
+ end interface
+contains
+ subroutine grid_definition_general (obj, type, sizes, dims)
+ class(base_pde_object), allocatable :: obj
+ character(len=*) :: type
+ real, dimension(:) :: sizes
+ integer, dimension(:) :: dims
+ select case (type)
+ case ("cartesian 2d")
+ call grid_definition (obj, sizes, dims)
+ case default
+ write(*,*) 'Unknown grid type: ', trim (type)
+ stop
+ end select
+ end subroutine grid_definition_general
+end module define_pde_objects
+! pde_specific --
+! Module holding the routines specific to the PDE that
+! we are solving
+!
+module pde_specific
+ implicit none
+contains
+ real function patch (coords)
+ real, dimension(:), intent(in) :: coords
+ if (sum ((coords-[50.0,50.0])**2) < 40.0) then
+ patch = 1.0
+ else
+ patch = 0.0
+ endif
+ end function patch
+end module pde_specific
+! test_pde_solver --
+! Small test program to demonstrate the usage
+!
+program test_pde_solver
+ use define_pde_objects
+ use pde_specific
+ implicit none
+ class(base_pde_object), allocatable :: solution, deriv
+ integer :: i
+ real :: time, dtime, diff, chksum(2)
+
+ call simulation1 ! Use proc pointers for source and process define_pde_objects
+ select type (solution)
+ type is (cartesian_2d_object)
+ deallocate (solution%c)
+ end select
+ select type (deriv)
+ type is (cartesian_2d_object)
+ deallocate (deriv%c)
+ end select
+ deallocate (solution, deriv)
+
+ call simulation2 ! Use typebound procedures for source and process
+ if (chksum(1) .ne. chksum(2)) call abort
+ if ((chksum(1) - 0.881868720)**2 > 1e-4) call abort
+contains
+ subroutine simulation1
+!
+! Create the grid
+!
+ call grid_definition (solution, "cartesian 2d", [100.0, 100.0], [16, 16])
+ call grid_definition (deriv, "cartesian 2d", [100.0, 100.0], [16, 16])
+!
+! Initialise the concentration field
+!
+ call solution%initialise (patch)
+!
+! Set the procedure pointers
+!
+ solution%source_p => source_cart2d_p
+ solution%process_p => process_cart2d_p
+!
+! Perform the integration - explicit method
+!
+ time = 0.0
+ dtime = 0.1
+ diff = 5.0e-3
+
+! Give the diffusion coefficient correct dimensions.
+ select type (solution)
+ type is (cartesian_2d_object)
+ diff = diff * solution%dx * solution%dy / dtime
+ end select
+
+! write(*,*) 'Time: ', time, diff
+! call solution%print
+ do i = 1,100
+ deriv = solution%nabla2 ()
+ solution = solution + diff * dtime * deriv + solution%source_p (time) + solution%process_p ()
+! if ( mod(i, 25) == 0 ) then
+! write(*,*)'Time: ', time
+! call solution%print
+! endif
+ time = time + dtime
+ enddo
+! write(*,*) 'End result 1: '
+! call solution%print
+ select type (solution)
+ type is (cartesian_2d_object)
+ chksum(1) = sum (solution%c)
+ end select
+ end subroutine
+ subroutine simulation2
+!
+! Create the grid
+!
+ call grid_definition (solution, "cartesian 2d", [100.0, 100.0], [16, 16])
+ call grid_definition (deriv, "cartesian 2d", [100.0, 100.0], [16, 16])
+!
+! Initialise the concentration field
+!
+ call solution%initialise (patch)
+!
+! Set the procedure pointers
+!
+ solution%source_p => source_cart2d_p
+ solution%process_p => process_cart2d_p
+!
+! Perform the integration - explicit method
+!
+ time = 0.0
+ dtime = 0.1
+ diff = 5.0e-3
+
+! Give the diffusion coefficient correct dimensions.
+ select type (solution)
+ type is (cartesian_2d_object)
+ diff = diff * solution%dx * solution%dy / dtime
+ end select
+
+! write(*,*) 'Time: ', time, diff
+! call solution%print
+ do i = 1,100
+ deriv = solution%nabla2 ()
+ solution = solution + diff * dtime * deriv + solution%source (time) + solution%process ()
+! if ( mod(i, 25) == 0 ) then
+! write(*,*)'Time: ', time
+! call solution%print
+! endif
+ time = time + dtime
+ enddo
+! write(*,*) 'End result 2: '
+! call solution%print
+ select type (solution)
+ type is (cartesian_2d_object)
+ chksum(2) = sum (solution%c)
+ end select
+ end subroutine
+end program test_pde_solver
+! { dg-final { cleanup-modules "pde_specific define_pde_objects cartesian_2d_objects base_pde_objects" } }
diff --git a/gcc/testsuite/go.test/test/cmp6.go b/gcc/testsuite/go.test/test/cmp6.go
index b3ea8ffebfd..0113a69ddb8 100644
--- a/gcc/testsuite/go.test/test/cmp6.go
+++ b/gcc/testsuite/go.test/test/cmp6.go
@@ -11,7 +11,7 @@ func use(bool) {}
type T1 *int
type T2 *int
-type T3 struct {}
+type T3 struct{ z []int }
var t3 T3
@@ -21,12 +21,12 @@ func main() {
// so chan int can be compared against
// directional channels but channel of different
// direction cannot be compared against each other.
- var c1 chan <-int
+ var c1 chan<- int
var c2 <-chan int
var c3 chan int
-
- use(c1 == c2) // ERROR "invalid operation|incompatible"
- use(c2 == c1) // ERROR "invalid operation|incompatible"
+
+ use(c1 == c2) // ERROR "invalid operation|incompatible"
+ use(c2 == c1) // ERROR "invalid operation|incompatible"
use(c1 == c3)
use(c2 == c2)
use(c3 == c1)
@@ -36,14 +36,32 @@ func main() {
var p1 T1
var p2 T2
var p3 *int
-
- use(p1 == p2) // ERROR "invalid operation|incompatible"
- use(p2 == p1) // ERROR "invalid operation|incompatible"
+
+ use(p1 == p2) // ERROR "invalid operation|incompatible"
+ use(p2 == p1) // ERROR "invalid operation|incompatible"
use(p1 == p3)
use(p2 == p2)
use(p3 == p1)
use(p3 == p2)
-
+
// Comparison of structs should have a good message
- use(t3 == t3) // ERROR "struct|expected"
+ use(t3 == t3) // ERROR "struct|expected"
+
+ // Slices, functions, and maps too.
+ var x []int
+ var f func()
+ var m map[int]int
+ use(x == x) // ERROR "slice can only be compared to nil"
+ use(f == f) // ERROR "func can only be compared to nil"
+ use(m == m) // ERROR "map can only be compared to nil"
+
+ // Comparison with interface that cannot return true
+ // (would panic).
+ var i interface{}
+ use(i == x) // ERROR "invalid operation"
+ use(x == i) // ERROR "invalid operation"
+ use(i == f) // ERROR "invalid operation"
+ use(f == i) // ERROR "invalid operation"
+ use(i == m) // ERROR "invalid operation"
+ use(m == i) // ERROR "invalid operation"
}
diff --git a/gcc/testsuite/go.test/test/recover2.go b/gcc/testsuite/go.test/test/recover2.go
index ccaf8ced16b..b5db6f0d1ca 100644
--- a/gcc/testsuite/go.test/test/recover2.go
+++ b/gcc/testsuite/go.test/test/recover2.go
@@ -60,6 +60,7 @@ func test4() {
type T struct {
a, b int
+ c []int
}
func test5() {
diff --git a/gcc/toplev.c b/gcc/toplev.c
index bc978c66bd2..6a712b684f5 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1343,6 +1343,9 @@ process_options (void)
"and -ftree-loop-linear)");
#endif
+ if (flag_mudflap && flag_lto)
+ sorry ("mudflap cannot be used together with link-time optimization");
+
/* One region RA really helps to decrease the code size. */
if (flag_ira_region == IRA_REGION_AUTODETECT)
flag_ira_region
diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c
index 750f3a18624..538d798a70d 100644
--- a/gcc/trans-mem.c
+++ b/gcc/trans-mem.c
@@ -2174,7 +2174,7 @@ expand_assign_tm (struct tm_region *region, gimple_stmt_iterator *gsi)
}
if (!gcall)
{
- tree lhs_addr, rhs_addr;
+ tree lhs_addr, rhs_addr, tmp;
if (load_p)
transaction_subcode_ior (region, GTMA_HAVE_LOAD);
@@ -2183,13 +2183,29 @@ expand_assign_tm (struct tm_region *region, gimple_stmt_iterator *gsi)
/* ??? Figure out if there's any possible overlap between the LHS
and the RHS and if not, use MEMCPY. */
- lhs_addr = gimplify_addr (gsi, lhs);
+
+ if (load_p && is_gimple_non_addressable (lhs))
+ {
+ tmp = create_tmp_var (TREE_TYPE (lhs), NULL);
+ lhs_addr = build_fold_addr_expr (tmp);
+ }
+ else
+ {
+ tmp = NULL_TREE;
+ lhs_addr = gimplify_addr (gsi, lhs);
+ }
rhs_addr = gimplify_addr (gsi, rhs);
gcall = gimple_build_call (builtin_decl_explicit (BUILT_IN_TM_MEMMOVE),
3, lhs_addr, rhs_addr,
TYPE_SIZE_UNIT (TREE_TYPE (lhs)));
gimple_set_location (gcall, loc);
gsi_insert_before (gsi, gcall, GSI_SAME_STMT);
+
+ if (tmp)
+ {
+ gcall = gimple_build_assign (lhs, tmp);
+ gsi_insert_before (gsi, gcall, GSI_SAME_STMT);
+ }
}
/* Now that we have the load/store in its instrumented form, add
diff --git a/gcc/tree-nomudflap.c b/gcc/tree-nomudflap.c
index 44e29891386..f204e2a064c 100644
--- a/gcc/tree-nomudflap.c
+++ b/gcc/tree-nomudflap.c
@@ -44,7 +44,7 @@ along with GCC; see the file COPYING3. If not see
static void
nogo (void)
{
- internal_error ("mudflap: this language is not supported");
+ sorry ("mudflap: this language is not supported");
}
void
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index accbc1ebaf4..600f4d776d1 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -1095,6 +1095,25 @@ tree_non_aligned_mem_p (tree exp, unsigned int align)
return false;
}
+/* Return true if EXP is a memory reference less aligned than what the access
+ ACC would require. This is invoked only on strict-alignment targets. */
+
+static bool
+tree_non_aligned_mem_for_access_p (tree exp, struct access *acc)
+{
+ unsigned int acc_align;
+
+ /* The alignment of the access is that of its expression. However, it may
+ have been artificially increased, e.g. by a local alignment promotion,
+ so we cap it to the alignment of the type of the base, on the grounds
+ that valid sub-accesses cannot be more aligned than that. */
+ acc_align = get_object_alignment (acc->expr);
+ if (acc->base && acc_align > TYPE_ALIGN (TREE_TYPE (acc->base)))
+ acc_align = TYPE_ALIGN (TREE_TYPE (acc->base));
+
+ return tree_non_aligned_mem_p (exp, acc_align);
+}
+
/* Scan expressions occuring in STMT, create access structures for all accesses
to candidates for scalarization and remove those candidates which occur in
statements or expressions that prevent them from being split apart. Return
@@ -1123,8 +1142,7 @@ build_accesses_from_assign (gimple stmt)
if (lacc)
{
lacc->grp_assignment_write = 1;
- if (STRICT_ALIGNMENT
- && tree_non_aligned_mem_p (rhs, get_object_alignment (lhs)))
+ if (STRICT_ALIGNMENT && tree_non_aligned_mem_for_access_p (rhs, lacc))
lacc->grp_unscalarizable_region = 1;
}
@@ -1134,8 +1152,7 @@ build_accesses_from_assign (gimple stmt)
if (should_scalarize_away_bitmap && !gimple_has_volatile_ops (stmt)
&& !is_gimple_reg_type (racc->type))
bitmap_set_bit (should_scalarize_away_bitmap, DECL_UID (racc->base));
- if (STRICT_ALIGNMENT
- && tree_non_aligned_mem_p (lhs, get_object_alignment (rhs)))
+ if (STRICT_ALIGNMENT && tree_non_aligned_mem_for_access_p (lhs, racc))
racc->grp_unscalarizable_region = 1;
}
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index 738606fad02..2080c06cce6 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -657,9 +657,10 @@ likely_value (gimple stmt)
}
}
/* If there was an UNDEFINED operand but the result may be not UNDEFINED
- fall back to VARYING even if there were CONSTANT operands. */
+ fall back to CONSTANT. During iteration UNDEFINED may still drop
+ to CONSTANT. */
if (has_undefined_operand)
- return VARYING;
+ return CONSTANT;
/* We do not consider virtual operands here -- load from read-only
memory may have only VARYING virtual operands, but still be
@@ -1368,6 +1369,10 @@ bit_value_unop (enum tree_code code, tree type, tree rhs)
prop_value_t rval = get_value_for_expr (rhs, true);
double_int value, mask;
prop_value_t val;
+
+ if (rval.lattice_val == UNDEFINED)
+ return rval;
+
gcc_assert ((rval.lattice_val == CONSTANT
&& TREE_CODE (rval.value) == INTEGER_CST)
|| double_int_minus_one_p (rval.mask));
@@ -1399,6 +1404,16 @@ bit_value_binop (enum tree_code code, tree type, tree rhs1, tree rhs2)
prop_value_t r2val = get_value_for_expr (rhs2, true);
double_int value, mask;
prop_value_t val;
+
+ if (r1val.lattice_val == UNDEFINED
+ || r2val.lattice_val == UNDEFINED)
+ {
+ val.lattice_val = VARYING;
+ val.value = NULL_TREE;
+ val.mask = double_int_minus_one;
+ return val;
+ }
+
gcc_assert ((r1val.lattice_val == CONSTANT
&& TREE_CODE (r1val.value) == INTEGER_CST)
|| double_int_minus_one_p (r1val.mask));
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c
index 8a18a995b75..c7215105233 100644
--- a/gcc/tree-streamer-in.c
+++ b/gcc/tree-streamer-in.c
@@ -903,6 +903,23 @@ lto_input_ts_target_option (struct lto_input_block *ib, tree expr)
fatal_error ("cl_target_option size mismatch in LTO reader and writer");
}
+/* Input a TS_OPTIMIZATION tree from IB into EXPR. */
+
+static void
+lto_input_ts_optimization (struct lto_input_block *ib, tree expr)
+{
+ unsigned i, len;
+ struct bitpack_d bp;
+ struct cl_optimization *t = TREE_OPTIMIZATION (expr);
+
+ bp = streamer_read_bitpack (ib);
+ len = sizeof (struct cl_optimization);
+ for (i = 0; i < len; i++)
+ ((unsigned char *)t)[i] = bp_unpack_value (&bp, 8);
+ if (bp_unpack_value (&bp, 32) != 0x12345678)
+ fatal_error ("cl_optimization size mismatch in LTO reader and writer");
+}
+
/* Input a TS_TRANSLATION_UNIT_DECL tree from IB and DATA_IN into EXPR. */
static void
@@ -979,6 +996,9 @@ streamer_read_tree_body (struct lto_input_block *ib, struct data_in *data_in,
if (CODE_CONTAINS_STRUCT (code, TS_TARGET_OPTION))
lto_input_ts_target_option (ib, expr);
+ if (CODE_CONTAINS_STRUCT (code, TS_OPTIMIZATION))
+ lto_input_ts_optimization (ib, expr);
+
if (CODE_CONTAINS_STRUCT (code, TS_TRANSLATION_UNIT_DECL))
lto_input_ts_translation_unit_decl_tree_pointers (ib, data_in, expr);
}
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c
index 17b5be78c7c..df8b92aa102 100644
--- a/gcc/tree-streamer-out.c
+++ b/gcc/tree-streamer-out.c
@@ -767,6 +767,27 @@ write_ts_target_option (struct output_block *ob, tree expr)
streamer_write_bitpack (&bp);
}
+/* Write a TS_OPTIMIZATION tree in EXPR to OB. */
+
+static void
+write_ts_optimization (struct output_block *ob, tree expr)
+{
+ struct cl_optimization *t = TREE_OPTIMIZATION (expr);
+ struct bitpack_d bp;
+ unsigned i, len;
+
+ /* The cl_optimizaation is generated by the options
+ awk script, so we just recreate a byte-by-byte copy here. */
+
+ bp = bitpack_create (ob->main_stream);
+ len = sizeof (struct cl_optimization);
+ for (i = 0; i < len; i++)
+ bp_pack_value (&bp, ((unsigned char *)t)[i], 8);
+ /* Catch struct size mismatches between reader and writer. */
+ bp_pack_value (&bp, 0x12345678, 32);
+ streamer_write_bitpack (&bp);
+}
+
/* Write a TS_TRANSLATION_UNIT_DECL tree in EXPR to OB. */
static void
@@ -841,6 +862,9 @@ streamer_write_tree_body (struct output_block *ob, tree expr, bool ref_p)
if (CODE_CONTAINS_STRUCT (code, TS_TARGET_OPTION))
write_ts_target_option (ob, expr);
+ if (CODE_CONTAINS_STRUCT (code, TS_OPTIMIZATION))
+ write_ts_optimization (ob, expr);
+
if (CODE_CONTAINS_STRUCT (code, TS_TRANSLATION_UNIT_DECL))
write_ts_translation_unit_decl_tree_pointers (ob, expr);
}
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 494cdd3e030..4a018f73c17 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -2579,17 +2579,13 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
behavior from the shift operation. We cannot even trust
SHIFT_COUNT_TRUNCATED at this stage, because that applies to rtl
shifts, and the operation at the tree level may be widened. */
- if (code == RSHIFT_EXPR)
+ if (vr1.type != VR_RANGE
+ || !value_range_nonnegative_p (&vr1)
+ || TREE_CODE (vr1.max) != INTEGER_CST
+ || compare_tree_int (vr1.max, TYPE_PRECISION (expr_type) - 1) == 1)
{
- if (vr1.type != VR_RANGE
- || !value_range_nonnegative_p (&vr1)
- || TREE_CODE (vr1.max) != INTEGER_CST
- || compare_tree_int (vr1.max,
- TYPE_PRECISION (expr_type) - 1) == 1)
- {
- set_value_range_to_varying (vr);
- return;
- }
+ set_value_range_to_varying (vr);
+ return;
}
extract_range_from_multiplicative_op_1 (vr, code, &vr0, &vr1);
@@ -2990,16 +2986,18 @@ extract_range_from_unary_expr_1 (value_range_t *vr,
size_int (TYPE_PRECISION (outer_type)))))))
{
tree new_min, new_max;
- new_min = force_fit_type_double (outer_type,
- tree_to_double_int (vr0.min),
- 0, false);
- new_max = force_fit_type_double (outer_type,
- tree_to_double_int (vr0.max),
- 0, false);
if (is_overflow_infinity (vr0.min))
new_min = negative_overflow_infinity (outer_type);
+ else
+ new_min = force_fit_type_double (outer_type,
+ tree_to_double_int (vr0.min),
+ 0, false);
if (is_overflow_infinity (vr0.max))
new_max = positive_overflow_infinity (outer_type);
+ else
+ new_max = force_fit_type_double (outer_type,
+ tree_to_double_int (vr0.max),
+ 0, false);
set_and_canonicalize_value_range (vr, vr0.type,
new_min, new_max, NULL);
return;
diff --git a/include/ChangeLog b/include/ChangeLog
index df131629f2b..4e4ca15832a 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,12 @@
+2012-01-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/6057
+ PR c++/48051
+ PR c++/50855
+ PR c++/51322
+ * demangle.h (enum demangle_component_type): Add
+ DEMANGLE_COMPONENT_INITIALIZER_LIST, DEMANGLE_COMPONENT_NULLARY.
+
2011-11-07 Richard Henderson <rth@redhat.com>
Merged from transactional-memory.
diff --git a/include/demangle.h b/include/demangle.h
index 98b11d796f4..34b3ed3cde9 100644
--- a/include/demangle.h
+++ b/include/demangle.h
@@ -344,6 +344,9 @@ enum demangle_component_type
template argument, and the right subtree is either NULL or
another TEMPLATE_ARGLIST node. */
DEMANGLE_COMPONENT_TEMPLATE_ARGLIST,
+ /* An initializer list. The left subtree is either an explicit type or
+ NULL, and the right subtree is a DEMANGLE_COMPONENT_ARGLIST. */
+ DEMANGLE_COMPONENT_INITIALIZER_LIST,
/* An operator. This holds information about a standard
operator. */
DEMANGLE_COMPONENT_OPERATOR,
@@ -353,6 +356,8 @@ enum demangle_component_type
/* A typecast, represented as a unary operator. The one subtree is
the type to which the argument should be cast. */
DEMANGLE_COMPONENT_CAST,
+ /* A nullary expression. The left subtree is the operator. */
+ DEMANGLE_COMPONENT_NULLARY,
/* A unary expression. The left subtree is the operator, and the
right subtree is the single argument. */
DEMANGLE_COMPONENT_UNARY,
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index e14c4b017fe..90cc782de3d 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,13 @@
+2012-01-06 Tristan Gingold <gingold@adacore.com>
+
+ * config/ia64/t-ia64 (LIB1ASMFUNCS): Move backward
+ compatibility thunks...
+ (CUSTOM_CRTSTUFF, crtbegin.o, crtend.o)
+ (crtbeginS.o, crtendS.o): ... and these to ...
+ * config/ia64/t-ia64-elf: ... this new file.
+ * config.host (ia64*-*-elf*, ia64*-*-freebsd*, ia64*-*-linux*)
+ (ia64*-*-hpux*): Add ia64/t-ia64-elf in tmake_file.
+
2012-01-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* configure: Regenerate.
diff --git a/libgcc/config.host b/libgcc/config.host
index a30bf5208ec..13b71b7ffdd 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -639,23 +639,23 @@ i[34567]86-*-interix3*)
;;
ia64*-*-elf*)
extra_parts="$extra_parts crtbeginS.o crtendS.o crtfastmath.o"
- tmake_file="ia64/t-ia64 ia64/t-eh-ia64 t-crtfm"
+ tmake_file="ia64/t-ia64 ia64/t-ia64-elf ia64/t-eh-ia64 t-crtfm"
;;
ia64*-*-freebsd*)
extra_parts="$extra_parts crtfastmath.o"
- tmake_file="$tmake_file ia64/t-ia64 ia64/t-eh-ia64 t-crtfm"
+ tmake_file="$tmake_file ia64/t-ia64 ia64/t-ia64-elf ia64/t-eh-ia64 t-crtfm"
;;
ia64*-*-linux*)
# Don't use crtbeginT.o from *-*-linux* default.
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
- tmake_file="$tmake_file ia64/t-ia64 t-crtfm t-softfp-tf ia64/t-softfp t-softfp ia64/t-softfp-compat ia64/t-eh-ia64 t-libunwind ia64/t-linux"
+ tmake_file="$tmake_file ia64/t-ia64 ia64/t-ia64-elf t-crtfm t-softfp-tf ia64/t-softfp t-softfp ia64/t-softfp-compat ia64/t-eh-ia64 t-libunwind ia64/t-linux"
if test x$with_system_libunwind != xyes ; then
tmake_file="${tmake_file} t-libunwind-elf ia64/t-linux-libunwind"
fi
md_unwind_header=ia64/linux-unwind.h
;;
ia64*-*-hpux*)
- tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc ia64/t-slibgcc-hpux t-slibgcc-hpux"
+ tmake_file="ia64/t-ia64 ia64/t-ia64-elf ia64/t-hpux t-slibgcc ia64/t-slibgcc-hpux t-slibgcc-hpux"
;;
ia64-hp-*vms*)
tmake_file="$tmake_file ia64/t-ia64 ia64/t-eh-ia64 ia64/t-vms t-slibgcc-vms"
diff --git a/libgcc/config/ia64/t-ia64 b/libgcc/config/ia64/t-ia64
index d1ec3536db0..1776ddd7958 100644
--- a/libgcc/config/ia64/t-ia64
+++ b/libgcc/config/ia64/t-ia64
@@ -8,8 +8,7 @@ LIB1ASMSRC = ia64/lib1funcs.S
LIB1ASMFUNCS = __divxf3 __divdf3 __divsf3 \
__divdi3 __moddi3 __udivdi3 __umoddi3 \
__divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \
- __nonlocal_goto __restore_stack_nonlocal __trampoline \
- _fixtfdi _fixunstfdi _floatditf
+ __nonlocal_goto __restore_stack_nonlocal __trampoline
# ??? Hack to get -P option used when compiling lib1funcs.S, because Intel
# assembler does not accept # line number as a comment.
@@ -17,20 +16,3 @@ LIB1ASMFUNCS = __divxf3 __divdf3 __divsf3 \
# C++ part of libgcc2, hence it had to be disabled. Must find some other way
# to support the Intel assembler.
#LIBGCC2_DEBUG_CFLAGS = -g1 -P
-
-CUSTOM_CRTSTUFF = yes
-
-# Assemble startup files.
-# FIXME: -I$(gcc_objdir) is necessary to find auto-host.h. Really?
-crtbegin.o: $(srcdir)/config/ia64/crtbegin.S
- $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp $<
-crtend.o: $(srcdir)/config/ia64/crtend.S
- $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp $<
-crtbeginS.o: $(srcdir)/config/ia64/crtbegin.S
- $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
- -o $@ -DSHARED $<
-crtendS.o: $(srcdir)/config/ia64/crtend.S
- $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
- -o $@ -DSHARED $<
-
-SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64.ver
diff --git a/libgcc/config/ia64/t-ia64-elf b/libgcc/config/ia64/t-ia64-elf
new file mode 100644
index 00000000000..08784dfaf86
--- /dev/null
+++ b/libgcc/config/ia64/t-ia64-elf
@@ -0,0 +1,20 @@
+LIB1ASMFUNCS += _fixtfdi _fixunstfdi _floatditf
+
+CUSTOM_CRTSTUFF = yes
+
+# Assemble startup files.
+# FIXME: -I$(gcc_objdir) is necessary to find auto-host.h. Really?
+crtbegin.o: $(srcdir)/config/ia64/crtbegin.S
+ $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
+ -o $@ $<
+crtend.o: $(srcdir)/config/ia64/crtend.S
+ $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
+ -o $@ $<
+crtbeginS.o: $(srcdir)/config/ia64/crtbegin.S
+ $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
+ -o $@ -DSHARED $<
+crtendS.o: $(srcdir)/config/ia64/crtend.S
+ $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
+ -o $@ -DSHARED $<
+
+SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64.ver
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index f516bad1049..f6b2a167fa4 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,11 @@
+2012-01-06 Tobias Burnus <burnus@net-b.de>
+
+ * caf/single.c (_gfortran_caf_register, _gfortran_caf_deregister):
+ Fix token handling.
+ * caf/mpi.c (_gfortran_caf_register, _gfortran_caf_deregister): Ditto.
+ * caf/libcaf.h (STAT_STOPPED_IMAGE): Sync with libgfortran.h.
+ (_gfortran_caf_register, _gfortran_caf_deregister): Update prototype.
+
2011-12-22 Janne Blomqvist <jb@gcc.gnu.org>
Tobias Burnus <burnus@net-b.de>
diff --git a/libgfortran/caf/libcaf.h b/libgfortran/caf/libcaf.h
index e6be7ce7ace..caffe17c272 100644
--- a/libgfortran/caf/libcaf.h
+++ b/libgfortran/caf/libcaf.h
@@ -1,5 +1,5 @@
/* Common declarations for all of GNU Fortran libcaf implementations.
- Copyright (C) 2011
+ Copyright (C) 2011, 2012
Free Software Foundation, Inc.
Contributed by Tobias Burnus <burnus@net-b.de>
@@ -44,7 +44,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define STAT_UNLOCKED 0
#define STAT_LOCKED 1
#define STAT_LOCKED_OTHER_IMAGE 2
-#define STAT_STOPPED_IMAGE 3
+#define STAT_STOPPED_IMAGE 6000
/* Describes what type of array we are registerring. Keep in sync with
gcc/fortran/trans.h. */
@@ -67,9 +67,9 @@ caf_static_t;
void _gfortran_caf_init (int *, char ***, int *, int *);
void _gfortran_caf_finalize (void);
-void * _gfortran_caf_register (ptrdiff_t, caf_register_t, void **, int *,
+void * _gfortran_caf_register (ptrdiff_t, caf_register_t, void ***, int *,
char *, int);
-void _gfortran_caf_deregister (void **, int *, char *, int);
+void _gfortran_caf_deregister (void ***, int *, char *, int);
void _gfortran_caf_sync_all (int *, char *, int);
diff --git a/libgfortran/caf/mpi.c b/libgfortran/caf/mpi.c
index c69c5b9574f..8c9f07b5b22 100644
--- a/libgfortran/caf/mpi.c
+++ b/libgfortran/caf/mpi.c
@@ -1,5 +1,5 @@
/* MPI implementation of GNU Fortran Coarray Library
- Copyright (C) 2011
+ Copyright (C) 2011, 2012
Free Software Foundation, Inc.
Contributed by Tobias Burnus <burnus@net-b.de>
@@ -119,7 +119,7 @@ _gfortran_caf_finalize (void)
void *
-_gfortran_caf_register (ptrdiff_t size, caf_register_t type, void **token,
+_gfortran_caf_register (ptrdiff_t size, caf_register_t type, void ***token,
int *stat, char *errmsg, int errmsg_len)
{
void *local;
@@ -134,18 +134,19 @@ _gfortran_caf_register (ptrdiff_t size, caf_register_t type, void **token,
/* Token contains only a list of pointers. */
local = malloc (size);
- token = malloc (sizeof (void*) * caf_num_images);
+ *token = malloc (sizeof (void*) * caf_num_images);
- if (unlikely (local == NULL || token == NULL))
+ if (unlikely (local == NULL || *token == NULL))
goto error;
/* token[img-1] is the address of the token in image "img". */
- err = MPI_Allgather (&local, sizeof (void*), MPI_BYTE, token,
+ err = MPI_Allgather (&local, sizeof (void*), MPI_BYTE, *token,
sizeof (void*), MPI_BYTE, MPI_COMM_WORLD);
+
if (unlikely (err))
{
free (local);
- free (token);
+ free (*token);
goto error;
}
@@ -153,7 +154,7 @@ _gfortran_caf_register (ptrdiff_t size, caf_register_t type, void **token,
{
caf_static_t *tmp = malloc (sizeof (caf_static_t));
tmp->prev = caf_static_list;
- tmp->token = token;
+ tmp->token = *token;
caf_static_list = tmp;
}
@@ -192,7 +193,7 @@ error:
void
-_gfortran_caf_deregister (void **token, int *stat, char *errmsg, int errmsg_len)
+_gfortran_caf_deregister (void ***token, int *stat, char *errmsg, int errmsg_len)
{
if (unlikely (caf_is_finalized))
{
@@ -220,8 +221,8 @@ _gfortran_caf_deregister (void **token, int *stat, char *errmsg, int errmsg_len)
if (stat)
*stat = 0;
- free (token[caf_this_image-1]);
- free (token);
+ free ((*token)[caf_this_image-1]);
+ free (*token);
}
diff --git a/libgfortran/caf/single.c b/libgfortran/caf/single.c
index 5353c7b86f7..4242fada3f0 100644
--- a/libgfortran/caf/single.c
+++ b/libgfortran/caf/single.c
@@ -1,5 +1,5 @@
/* Single-image implementation of GNU Fortran Coarray Library
- Copyright (C) 2011
+ Copyright (C) 2011, 2012
Free Software Foundation, Inc.
Contributed by Tobias Burnus <burnus@net-b.de>
@@ -81,14 +81,14 @@ _gfortran_caf_finalize (void)
void *
-_gfortran_caf_register (ptrdiff_t size, caf_register_t type, void **token,
+_gfortran_caf_register (ptrdiff_t size, caf_register_t type, void ***token,
int *stat, char *errmsg, int errmsg_len)
{
void *local;
local = malloc (size);
- token = malloc (sizeof (void*) * 1);
- token[0] = local;
+ *token = malloc (sizeof (void*) * 1);
+ (*token)[0] = local;
if (unlikely (local == NULL || token == NULL))
{
@@ -117,7 +117,7 @@ _gfortran_caf_register (ptrdiff_t size, caf_register_t type, void **token,
{
caf_static_t *tmp = malloc (sizeof (caf_static_t));
tmp->prev = caf_static_list;
- tmp->token = token;
+ tmp->token = *token;
caf_static_list = tmp;
}
return local;
@@ -125,12 +125,12 @@ _gfortran_caf_register (ptrdiff_t size, caf_register_t type, void **token,
void
-_gfortran_caf_deregister (void **token, int *stat,
+_gfortran_caf_deregister (void ***token, int *stat,
char *errmsg __attribute__ ((unused)),
int errmsg_len __attribute__ ((unused)))
{
+ free ((*token)[0]);
free (*token);
- free (token);
if (stat)
*stat = 0;
diff --git a/libgo/Makefile.am b/libgo/Makefile.am
index f146320b559..4625ce232b6 100644
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -460,8 +460,10 @@ runtime_files = \
runtime/go-strplus.c \
runtime/go-strslice.c \
runtime/go-trampoline.c \
+ runtime/go-type-complex.c \
runtime/go-type-eface.c \
runtime/go-type-error.c \
+ runtime/go-type-float.c \
runtime/go-type-identity.c \
runtime/go-type-interface.c \
runtime/go-type-string.c \
diff --git a/libgo/Makefile.in b/libgo/Makefile.in
index 627672eb93d..0304f7e8996 100644
--- a/libgo/Makefile.in
+++ b/libgo/Makefile.in
@@ -208,7 +208,8 @@ am__libgo_la_SOURCES_DIST = runtime/go-append.c runtime/go-assert.c \
runtime/go-string-to-byte-array.c \
runtime/go-string-to-int-array.c runtime/go-strplus.c \
runtime/go-strslice.c runtime/go-trampoline.c \
- runtime/go-type-eface.c runtime/go-type-error.c \
+ runtime/go-type-complex.c runtime/go-type-eface.c \
+ runtime/go-type-error.c runtime/go-type-float.c \
runtime/go-type-identity.c runtime/go-type-interface.c \
runtime/go-type-string.c runtime/go-typedesc-equal.c \
runtime/go-typestring.c runtime/go-unreflect.c \
@@ -242,13 +243,14 @@ am__objects_4 = go-append.lo go-assert.lo go-assert-interface.lo \
go-reflect-map.lo go-rune.lo go-runtime-error.lo go-setenv.lo \
go-signal.lo go-strcmp.lo go-string-to-byte-array.lo \
go-string-to-int-array.lo go-strplus.lo go-strslice.lo \
- go-trampoline.lo go-type-eface.lo go-type-error.lo \
- go-type-identity.lo go-type-interface.lo go-type-string.lo \
- go-typedesc-equal.lo go-typestring.lo go-unreflect.lo \
- go-unsafe-new.lo go-unsafe-newarray.lo go-unsafe-pointer.lo \
- go-unwind.lo chan.lo cpuprof.lo $(am__objects_1) mcache.lo \
- mcentral.lo $(am__objects_2) mfinal.lo mfixalloc.lo mgc0.lo \
- mheap.lo msize.lo proc.lo runtime.lo thread.lo yield.lo \
+ go-trampoline.lo go-type-complex.lo go-type-eface.lo \
+ go-type-error.lo go-type-float.lo go-type-identity.lo \
+ go-type-interface.lo go-type-string.lo go-typedesc-equal.lo \
+ go-typestring.lo go-unreflect.lo go-unsafe-new.lo \
+ go-unsafe-newarray.lo go-unsafe-pointer.lo go-unwind.lo \
+ chan.lo cpuprof.lo $(am__objects_1) mcache.lo mcentral.lo \
+ $(am__objects_2) mfinal.lo mfixalloc.lo mgc0.lo mheap.lo \
+ msize.lo proc.lo runtime.lo thread.lo yield.lo \
$(am__objects_3) iface.lo malloc.lo map.lo mprof.lo reflect.lo \
runtime1.lo sema.lo sigqueue.lo string.lo time.lo
am_libgo_la_OBJECTS = $(am__objects_4)
@@ -881,8 +883,10 @@ runtime_files = \
runtime/go-strplus.c \
runtime/go-strslice.c \
runtime/go-trampoline.c \
+ runtime/go-type-complex.c \
runtime/go-type-eface.c \
runtime/go-type-error.c \
+ runtime/go-type-float.c \
runtime/go-type-identity.c \
runtime/go-type-interface.c \
runtime/go-type-string.c \
@@ -2523,8 +2527,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-strplus.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-strslice.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-trampoline.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-complex.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-eface.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-error.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-float.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-identity.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-interface.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-string.Plo@am__quote@
@@ -2928,6 +2934,13 @@ go-trampoline.lo: runtime/go-trampoline.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o go-trampoline.lo `test -f 'runtime/go-trampoline.c' || echo '$(srcdir)/'`runtime/go-trampoline.c
+go-type-complex.lo: runtime/go-type-complex.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT go-type-complex.lo -MD -MP -MF $(DEPDIR)/go-type-complex.Tpo -c -o go-type-complex.lo `test -f 'runtime/go-type-complex.c' || echo '$(srcdir)/'`runtime/go-type-complex.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/go-type-complex.Tpo $(DEPDIR)/go-type-complex.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='runtime/go-type-complex.c' object='go-type-complex.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o go-type-complex.lo `test -f 'runtime/go-type-complex.c' || echo '$(srcdir)/'`runtime/go-type-complex.c
+
go-type-eface.lo: runtime/go-type-eface.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT go-type-eface.lo -MD -MP -MF $(DEPDIR)/go-type-eface.Tpo -c -o go-type-eface.lo `test -f 'runtime/go-type-eface.c' || echo '$(srcdir)/'`runtime/go-type-eface.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/go-type-eface.Tpo $(DEPDIR)/go-type-eface.Plo
@@ -2942,6 +2955,13 @@ go-type-error.lo: runtime/go-type-error.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o go-type-error.lo `test -f 'runtime/go-type-error.c' || echo '$(srcdir)/'`runtime/go-type-error.c
+go-type-float.lo: runtime/go-type-float.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT go-type-float.lo -MD -MP -MF $(DEPDIR)/go-type-float.Tpo -c -o go-type-float.lo `test -f 'runtime/go-type-float.c' || echo '$(srcdir)/'`runtime/go-type-float.c
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/go-type-float.Tpo $(DEPDIR)/go-type-float.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='runtime/go-type-float.c' object='go-type-float.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o go-type-float.lo `test -f 'runtime/go-type-float.c' || echo '$(srcdir)/'`runtime/go-type-float.c
+
go-type-identity.lo: runtime/go-type-identity.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT go-type-identity.lo -MD -MP -MF $(DEPDIR)/go-type-identity.Tpo -c -o go-type-identity.lo `test -f 'runtime/go-type-identity.c' || echo '$(srcdir)/'`runtime/go-type-identity.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/go-type-identity.Tpo $(DEPDIR)/go-type-identity.Plo
diff --git a/libgo/runtime/go-type-complex.c b/libgo/runtime/go-type-complex.c
new file mode 100644
index 00000000000..f923c867d99
--- /dev/null
+++ b/libgo/runtime/go-type-complex.c
@@ -0,0 +1,122 @@
+/* go-type-complex.c -- hash and equality complex functions.
+
+ Copyright 2012 The Go Authors. All rights reserved.
+ Use of this source code is governed by a BSD-style
+ license that can be found in the LICENSE file. */
+
+#include "runtime.h"
+#include "go-type.h"
+
+/* The 64-bit type. */
+
+typedef unsigned int DItype __attribute__ ((mode (DI)));
+
+/* Hash function for float types. */
+
+uintptr_t
+__go_type_hash_complex (const void *vkey, uintptr_t key_size)
+{
+ if (key_size == 8)
+ {
+ union
+ {
+ unsigned char a[8];
+ __complex float cf;
+ DItype di;
+ } ucf;
+ __complex float cf;
+ float cfr;
+ float cfi;
+
+ __builtin_memcpy (ucf.a, vkey, 8);
+ cf = ucf.cf;
+ cfr = __builtin_crealf (cf);
+ cfi = __builtin_cimagf (cf);
+ if (__builtin_isinff (cfr) || __builtin_isinff (cfi)
+ || __builtin_isnanf (cfr) || __builtin_isnanf (cfi))
+ return 0;
+
+ /* Avoid negative zero. */
+ if (cfr == 0 && cfi == 0)
+ return 0;
+ else if (cfr == 0)
+ ucf.cf = cfi * 1.0iF;
+ else if (cfi == 0)
+ ucf.cf = cfr;
+
+ return ucf.di;
+ }
+ else if (key_size == 16)
+ {
+ union
+ {
+ unsigned char a[16];
+ __complex double cd;
+ DItype adi[2];
+ } ucd;
+ __complex double cd;
+ double cdr;
+ double cdi;
+
+ __builtin_memcpy (ucd.a, vkey, 16);
+ cd = ucd.cd;
+ cdr = __builtin_crealf (cd);
+ cdi = __builtin_cimagf (cd);
+ if (__builtin_isinf (cdr) || __builtin_isinf (cdi)
+ || __builtin_isnan (cdr) || __builtin_isnan (cdi))
+ return 0;
+
+ /* Avoid negative zero. */
+ if (cdr == 0 && cdi == 0)
+ return 0;
+ else if (cdr == 0)
+ ucd.cd = cdi * 1.0i;
+ else if (cdi == 0)
+ ucd.cd = cdr;
+
+ return ucd.adi[0] ^ ucd.adi[1];
+ }
+ else
+ runtime_throw ("__go_type_hash_complex: invalid complex size");
+}
+
+/* Equality function for complex types. */
+
+_Bool
+__go_type_equal_complex (const void *vk1, const void *vk2, uintptr_t key_size)
+{
+ if (key_size == 8)
+ {
+ union
+ {
+ unsigned char a[8];
+ __complex float cf;
+ } ucf;
+ __complex float cf1;
+ __complex float cf2;
+
+ __builtin_memcpy (ucf.a, vk1, 8);
+ cf1 = ucf.cf;
+ __builtin_memcpy (ucf.a, vk2, 8);
+ cf2 = ucf.cf;
+ return cf1 == cf2;
+ }
+ else if (key_size == 16)
+ {
+ union
+ {
+ unsigned char a[16];
+ __complex double cd;
+ } ucd;
+ __complex double cd1;
+ __complex double cd2;
+
+ __builtin_memcpy (ucd.a, vk1, 16);
+ cd1 = ucd.cd;
+ __builtin_memcpy (ucd.a, vk2, 16);
+ cd2 = ucd.cd;
+ return cd1 == cd2;
+ }
+ else
+ runtime_throw ("__go_type_equal_complex: invalid complex size");
+}
diff --git a/libgo/runtime/go-type-eface.c b/libgo/runtime/go-type-eface.c
index 5bf932fc8ba..cb3424b98d3 100644
--- a/libgo/runtime/go-type-eface.c
+++ b/libgo/runtime/go-type-eface.c
@@ -10,13 +10,13 @@
/* A hash function for an empty interface. */
-size_t
+uintptr_t
__go_type_hash_empty_interface (const void *vval,
- size_t key_size __attribute__ ((unused)))
+ uintptr_t key_size __attribute__ ((unused)))
{
const struct __go_empty_interface *val;
const struct __go_type_descriptor *descriptor;
- size_t size;
+ uintptr_t size;
val = (const struct __go_empty_interface *) vval;
descriptor = val->__type_descriptor;
@@ -33,7 +33,7 @@ __go_type_hash_empty_interface (const void *vval,
_Bool
__go_type_equal_empty_interface (const void *vv1, const void *vv2,
- size_t key_size __attribute__ ((unused)))
+ uintptr_t key_size __attribute__ ((unused)))
{
const struct __go_empty_interface *v1;
const struct __go_empty_interface *v2;
diff --git a/libgo/runtime/go-type-error.c b/libgo/runtime/go-type-error.c
index ba3146e3dda..b4c609b93ec 100644
--- a/libgo/runtime/go-type-error.c
+++ b/libgo/runtime/go-type-error.c
@@ -10,9 +10,9 @@
/* A hash function used for a type which does not support hash
functions. */
-size_t
+uintptr_t
__go_type_hash_error (const void *val __attribute__ ((unused)),
- size_t key_size __attribute__ ((unused)))
+ uintptr_t key_size __attribute__ ((unused)))
{
runtime_panicstring ("hash of unhashable type");
}
@@ -22,7 +22,7 @@ __go_type_hash_error (const void *val __attribute__ ((unused)),
_Bool
__go_type_equal_error (const void *v1 __attribute__ ((unused)),
const void *v2 __attribute__ ((unused)),
- size_t key_size __attribute__ ((unused)))
+ uintptr_t key_size __attribute__ ((unused)))
{
runtime_panicstring ("comparing uncomparable types");
}
diff --git a/libgo/runtime/go-type-float.c b/libgo/runtime/go-type-float.c
new file mode 100644
index 00000000000..cc6e247e531
--- /dev/null
+++ b/libgo/runtime/go-type-float.c
@@ -0,0 +1,96 @@
+/* go-type-float.c -- hash and equality float functions.
+
+ Copyright 2012 The Go Authors. All rights reserved.
+ Use of this source code is governed by a BSD-style
+ license that can be found in the LICENSE file. */
+
+#include "runtime.h"
+#include "go-type.h"
+
+/* The 32-bit and 64-bit types. */
+
+typedef unsigned int SItype __attribute__ ((mode (SI)));
+typedef unsigned int DItype __attribute__ ((mode (DI)));
+
+/* Hash function for float types. */
+
+uintptr_t
+__go_type_hash_float (const void *vkey, uintptr_t key_size)
+{
+ if (key_size == 4)
+ {
+ union
+ {
+ unsigned char a[4];
+ float f;
+ SItype si;
+ } uf;
+ float f;
+
+ __builtin_memcpy (uf.a, vkey, 4);
+ f = uf.f;
+ if (__builtin_isinff (f) || __builtin_isnanf (f) || f == 0)
+ return 0;
+ return (uintptr_t) uf.si;
+ }
+ else if (key_size == 8)
+ {
+ union
+ {
+ unsigned char a[8];
+ double d;
+ DItype di;
+ } ud;
+ double d;
+
+ __builtin_memcpy (ud.a, vkey, 8);
+ d = ud.d;
+ if (__builtin_isinf (d) || __builtin_isnan (d) || d == 0)
+ return 0;
+ return (uintptr_t) ud.di;
+ }
+ else
+ runtime_throw ("__go_type_hash_float: invalid float size");
+}
+
+/* Equality function for float types. */
+
+_Bool
+__go_type_equal_float (const void *vk1, const void *vk2, uintptr_t key_size)
+{
+ if (key_size == 4)
+ {
+ union
+ {
+ unsigned char a[4];
+ float f;
+ } uf;
+ float f1;
+ float f2;
+
+ __builtin_memcpy (uf.a, vk1, 4);
+ f1 = uf.f;
+ __builtin_memcpy (uf.a, vk2, 4);
+ f2 = uf.f;
+ return f1 == f2;
+ }
+ else if (key_size == 8)
+ {
+ union
+ {
+ unsigned char a[8];
+ double d;
+ DItype di;
+ } ud;
+ double d1;
+ double d2;
+
+ __builtin_memcpy (ud.a, vk1, 8);
+ d1 = ud.d;
+ __builtin_memcpy (ud.a, vk2, 8);
+ d2 = ud.d;
+ return d1 == d2;
+ }
+ else
+ runtime_throw ("__go_type_equal_float: invalid float size");
+}
diff --git a/libgo/runtime/go-type-identity.c b/libgo/runtime/go-type-identity.c
index f1de3c28ad8..a0168e24836 100644
--- a/libgo/runtime/go-type-identity.c
+++ b/libgo/runtime/go-type-identity.c
@@ -8,35 +8,37 @@
#include "go-type.h"
-/* Typedefs for accesses of different sizes. */
+/* The 64-bit type. */
-typedef int QItype __attribute__ ((mode (QI)));
-typedef int HItype __attribute__ ((mode (HI)));
-typedef int SItype __attribute__ ((mode (SI)));
-typedef int DItype __attribute__ ((mode (DI)));
+typedef unsigned int DItype __attribute__ ((mode (DI)));
/* An identity hash function for a type. This is used for types where
we can simply use the type value itself as a hash code. This is
true of, e.g., integers and pointers. */
-size_t
-__go_type_hash_identity (const void *key, size_t key_size)
+uintptr_t
+__go_type_hash_identity (const void *key, uintptr_t key_size)
{
- switch (key_size)
+ uintptr_t ret;
+ uintptr_t i;
+ const unsigned char *p;
+
+ if (key_size <= 8)
{
- case 1:
- return *(const QItype *) key;
- case 2:
- return *(const HItype *) key;
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- return *(const SItype *) key;
- default:
- return *(const DItype *) key;
+ union
+ {
+ DItype v;
+ unsigned char a[8];
+ } u;
+ u.v = 0;
+ __builtin_memcpy (&u.a, key, key_size);
+ return (uintptr_t) u.v;
}
+
+ ret = 5381;
+ for (i = 0, p = (const unsigned char *) key; i < key_size; i++, p++)
+ ret = ret * 33 + *p;
+ return ret;
}
/* An identity equality function for a type. This is used for types
@@ -44,7 +46,7 @@ __go_type_hash_identity (const void *key, size_t key_size)
the same bits. */
_Bool
-__go_type_equal_identity (const void *k1, const void *k2, size_t key_size)
+__go_type_equal_identity (const void *k1, const void *k2, uintptr_t key_size)
{
return __builtin_memcmp (k1, k2, key_size) == 0;
}
diff --git a/libgo/runtime/go-type-interface.c b/libgo/runtime/go-type-interface.c
index 9750b843c49..bc3b37c4ba2 100644
--- a/libgo/runtime/go-type-interface.c
+++ b/libgo/runtime/go-type-interface.c
@@ -9,13 +9,13 @@
/* A hash function for an interface. */
-size_t
+uintptr_t
__go_type_hash_interface (const void *vval,
- size_t key_size __attribute__ ((unused)))
+ uintptr_t key_size __attribute__ ((unused)))
{
const struct __go_interface *val;
const struct __go_type_descriptor *descriptor;
- size_t size;
+ uintptr_t size;
val = (const struct __go_interface *) vval;
if (val->__methods == NULL)
@@ -32,7 +32,7 @@ __go_type_hash_interface (const void *vval,
_Bool
__go_type_equal_interface (const void *vv1, const void *vv2,
- size_t key_size __attribute__ ((unused)))
+ uintptr_t key_size __attribute__ ((unused)))
{
const struct __go_interface *v1;
const struct __go_interface *v2;
diff --git a/libgo/runtime/go-type-string.c b/libgo/runtime/go-type-string.c
index 998955d6255..719ecb0e7ea 100644
--- a/libgo/runtime/go-type-string.c
+++ b/libgo/runtime/go-type-string.c
@@ -11,14 +11,14 @@
/* A string hash function for a map. */
-size_t
+uintptr_t
__go_type_hash_string (const void *vkey,
- size_t key_size __attribute__ ((unused)))
+ uintptr_t key_size __attribute__ ((unused)))
{
- size_t ret;
+ uintptr_t ret;
const struct __go_string *key;
- size_t len;
- size_t i;
+ int len;
+ int i;
const unsigned char *p;
ret = 5381;
@@ -33,7 +33,7 @@ __go_type_hash_string (const void *vkey,
_Bool
__go_type_equal_string (const void *vk1, const void *vk2,
- size_t key_size __attribute__ ((unused)))
+ uintptr_t key_size __attribute__ ((unused)))
{
const struct __go_string *k1;
const struct __go_string *k2;
diff --git a/libgo/runtime/go-type.h b/libgo/runtime/go-type.h
index 6e2193982d6..25f096c4851 100644
--- a/libgo/runtime/go-type.h
+++ b/libgo/runtime/go-type.h
@@ -86,11 +86,11 @@ struct __go_type_descriptor
size of this type, and returns a hash code. We pass the size
explicitly becaues it means that we can share a single instance
of this function for various different types. */
- size_t (*__hashfn) (const void *, size_t);
+ uintptr_t (*__hashfn) (const void *, uintptr_t);
/* This function takes two pointers to values of this type, and the
size of this type, and returns whether the values are equal. */
- _Bool (*__equalfn) (const void *, const void *, size_t);
+ _Bool (*__equalfn) (const void *, const void *, uintptr_t);
/* A string describing this type. This is only used for
debugging. */
@@ -317,13 +317,17 @@ extern _Bool
__go_type_descriptors_equal(const struct __go_type_descriptor*,
const struct __go_type_descriptor*);
-extern size_t __go_type_hash_identity (const void *, size_t);
-extern _Bool __go_type_equal_identity (const void *, const void *, size_t);
-extern size_t __go_type_hash_string (const void *, size_t);
-extern _Bool __go_type_equal_string (const void *, const void *, size_t);
-extern size_t __go_type_hash_interface (const void *, size_t);
-extern _Bool __go_type_equal_interface (const void *, const void *, size_t);
-extern size_t __go_type_hash_error (const void *, size_t);
-extern _Bool __go_type_equal_error (const void *, const void *, size_t);
+extern uintptr_t __go_type_hash_identity (const void *, uintptr_t);
+extern _Bool __go_type_equal_identity (const void *, const void *, uintptr_t);
+extern uintptr_t __go_type_hash_string (const void *, uintptr_t);
+extern _Bool __go_type_equal_string (const void *, const void *, uintptr_t);
+extern uintptr_t __go_type_hash_float (const void *, uintptr_t);
+extern _Bool __go_type_equal_float (const void *, const void *, uintptr_t);
+extern uintptr_t __go_type_hash_complex (const void *, uintptr_t);
+extern _Bool __go_type_equal_complex (const void *, const void *, uintptr_t);
+extern uintptr_t __go_type_hash_interface (const void *, uintptr_t);
+extern _Bool __go_type_equal_interface (const void *, const void *, uintptr_t);
+extern uintptr_t __go_type_hash_error (const void *, uintptr_t);
+extern _Bool __go_type_equal_error (const void *, const void *, uintptr_t);
#endif /* !defined(LIBGO_GO_TYPE_H) */
diff --git a/libgo/testsuite/gotest b/libgo/testsuite/gotest
index 3a78afee59e..b414b160ed1 100755
--- a/libgo/testsuite/gotest
+++ b/libgo/testsuite/gotest
@@ -322,18 +322,18 @@ localname() {
pattern='Test([^a-z].*)?'
# The -p option tells GNU nm not to sort.
# The -v option tells Solaris nm to sort by value.
- tests=$($NM -p -v _gotest_.o $xofile | egrep ' T .*\.'$pattern'$' | grep -v '\..*\..*\.' | sed 's/.* //' | sed 's/.*\.\(.*\.\)/\1/')
+ tests=$($NM -p -v _gotest_.o $xofile | egrep ' T .*\.'$pattern'$' | grep -v '\..*\..*\.' | fgrep -v '$' | sed 's/.* //' | sed 's/.*\.\(.*\.\)/\1/')
if [ "x$tests" = x ]; then
echo 'gotest: warning: no tests matching '$pattern in _gotest_.o $xofile 1>&2
exit 2
fi
# benchmarks are named BenchmarkFoo.
pattern='Benchmark([^a-z].*)?'
- benchmarks=$($NM -p -v _gotest_.o $xofile | egrep ' T .*\.'$pattern'$' | grep -v '\..*\..*\.' | sed 's/.* //' | sed 's/.*\.\(.*\.\)/\1/')
+ benchmarks=$($NM -p -v _gotest_.o $xofile | egrep ' T .*\.'$pattern'$' | grep -v '\..*\..*\.' | fgrep -v '$' | sed 's/.* //' | sed 's/.*\.\(.*\.\)/\1/')
# examples are named ExampleFoo
pattern='Example([^a-z].*)?'
- examples=$($NM -p -v _gotest_.o $xofile | egrep ' T .*\.'$pattern'$' | grep -v '\..*\..*\.' | sed 's/.* //' | sed 's/.*\.\(.*\.\)/\1/')
+ examples=$($NM -p -v _gotest_.o $xofile | egrep ' T .*\.'$pattern'$' | grep -v '\..*\..*\.' | fgrep -v '$' | sed 's/.* //' | sed 's/.*\.\(.*\.\)/\1/')
# package spec
echo 'package main'
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 344f18dc7c4..8587ee2eabd 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,26 @@
+2012-01-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/6057
+ PR c++/48051
+ PR c++/50855
+ PR c++/51322
+ * cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_NULLARY and
+ DEMANGLE_COMPONENT_INITIALIZER_LIST.
+ (d_make_comp): Likewise. Allow null right arg for
+ DEMANGLE_COMPONENT_TRINARY_ARG2.
+ (cplus_demangle_operators): Adjust new/delete; add .*, :: and throw.
+ (d_template_args, d_template_arg): Handle 'J' for argument packs.
+ (d_exprlist): Add terminator parm.
+ (d_expression, d_print_comp): Handle initializer lists, nullary
+ expressions, prefix/suffix operators, and new.
+ (d_print_subexpr): Avoid parens around DEMANGLE_COMPONENT_QUAL_NAME
+ and DEMANGLE_COMPONENT_INITIALIZER_LIST.
+ * testsuite/demangle-expected: Add tests.
+
+ * cp-demangle.c (cplus_demangle_type): decltype, pack expansion
+ and vector are substitutable.
+ (cplus_demangle_operators): Sort.
+
2012-01-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* configure: Regenerate.
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 0f1166be48c..2dfd67ceb77 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -648,9 +648,15 @@ d_dump (struct demangle_component *dc, int indent)
case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
printf ("template argument list\n");
break;
+ case DEMANGLE_COMPONENT_INITIALIZER_LIST:
+ printf ("initializer list\n");
+ break;
case DEMANGLE_COMPONENT_CAST:
printf ("cast\n");
break;
+ case DEMANGLE_COMPONENT_NULLARY:
+ printf ("nullary operator\n");
+ break;
case DEMANGLE_COMPONENT_UNARY:
printf ("unary operator\n");
break;
@@ -806,7 +812,6 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
case DEMANGLE_COMPONENT_BINARY_ARGS:
case DEMANGLE_COMPONENT_TRINARY:
case DEMANGLE_COMPONENT_TRINARY_ARG1:
- case DEMANGLE_COMPONENT_TRINARY_ARG2:
case DEMANGLE_COMPONENT_LITERAL:
case DEMANGLE_COMPONENT_LITERAL_NEG:
case DEMANGLE_COMPONENT_COMPOUND_NAME:
@@ -843,6 +848,8 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
case DEMANGLE_COMPONENT_PACK_EXPANSION:
case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:
case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:
+ case DEMANGLE_COMPONENT_NULLARY:
+ case DEMANGLE_COMPONENT_TRINARY_ARG2:
if (left == NULL)
return NULL;
break;
@@ -850,6 +857,7 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
/* This needs a right parameter, but the left parameter can be
empty. */
case DEMANGLE_COMPONENT_ARRAY_TYPE:
+ case DEMANGLE_COMPONENT_INITIALIZER_LIST:
if (right == NULL)
return NULL;
break;
@@ -1554,7 +1562,8 @@ d_identifier (struct d_info *di, int len)
/* operator_name ::= many different two character encodings.
::= cv <type>
::= v <digit> <source-name>
-*/
+
+ This list is sorted for binary search. */
#define NL(s) s, (sizeof s) - 1
@@ -1566,19 +1575,23 @@ const struct demangle_operator_info cplus_demangle_operators[] =
{ "aa", NL ("&&"), 2 },
{ "ad", NL ("&"), 1 },
{ "an", NL ("&"), 2 },
+ { "at", NL ("alignof "), 1 },
+ { "az", NL ("alignof "), 1 },
{ "cl", NL ("()"), 2 },
{ "cm", NL (","), 2 },
{ "co", NL ("~"), 1 },
{ "dV", NL ("/="), 2 },
- { "da", NL ("delete[]"), 1 },
+ { "da", NL ("delete[] "), 1 },
{ "de", NL ("*"), 1 },
- { "dl", NL ("delete"), 1 },
+ { "dl", NL ("delete "), 1 },
+ { "ds", NL (".*"), 2 },
{ "dt", NL ("."), 2 },
{ "dv", NL ("/"), 2 },
{ "eO", NL ("^="), 2 },
{ "eo", NL ("^"), 2 },
{ "eq", NL ("=="), 2 },
{ "ge", NL (">="), 2 },
+ { "gs", NL ("::"), 1 },
{ "gt", NL (">"), 2 },
{ "ix", NL ("[]"), 2 },
{ "lS", NL ("<<="), 2 },
@@ -1590,11 +1603,11 @@ const struct demangle_operator_info cplus_demangle_operators[] =
{ "mi", NL ("-"), 2 },
{ "ml", NL ("*"), 2 },
{ "mm", NL ("--"), 1 },
- { "na", NL ("new[]"), 1 },
+ { "na", NL ("new[]"), 3 },
{ "ne", NL ("!="), 2 },
{ "ng", NL ("-"), 1 },
{ "nt", NL ("!"), 1 },
- { "nw", NL ("new"), 1 },
+ { "nw", NL ("new"), 3 },
{ "oR", NL ("|="), 2 },
{ "oo", NL ("||"), 2 },
{ "or", NL ("|"), 2 },
@@ -1611,8 +1624,8 @@ const struct demangle_operator_info cplus_demangle_operators[] =
{ "rs", NL (">>"), 2 },
{ "st", NL ("sizeof "), 1 },
{ "sz", NL ("sizeof "), 1 },
- { "at", NL ("alignof "), 1 },
- { "az", NL ("alignof "), 1 },
+ { "tr", NL ("throw"), 0 },
+ { "tw", NL ("throw "), 1 },
{ NULL, NULL, 0, 0 }
};
@@ -2242,12 +2255,14 @@ cplus_demangle_type (struct d_info *di)
d_expression (di), NULL);
if (ret && d_next_char (di) != 'E')
ret = NULL;
+ can_subst = 1;
break;
case 'p':
/* Pack expansion. */
ret = d_make_comp (di, DEMANGLE_COMPONENT_PACK_EXPANSION,
cplus_demangle_type (di), NULL);
+ can_subst = 1;
break;
case 'f':
@@ -2298,6 +2313,7 @@ cplus_demangle_type (struct d_info *di)
case 'v':
ret = d_vector_type (di);
+ can_subst = 1;
break;
case 'n':
@@ -2675,8 +2691,10 @@ d_template_args (struct d_info *di)
constructor or destructor. */
hold_last_name = di->last_name;
- if (! d_check_char (di, 'I'))
+ if (d_peek_char (di) != 'I'
+ && d_peek_char (di) != 'J')
return NULL;
+ d_advance (di, 1);
if (d_peek_char (di) == 'E')
{
@@ -2735,6 +2753,7 @@ d_template_arg (struct d_info *di)
return d_expr_primary (di);
case 'I':
+ case 'J':
/* An argument pack. */
return d_template_args (di);
@@ -2743,15 +2762,16 @@ d_template_arg (struct d_info *di)
}
}
-/* Subroutine of <expression> ::= cl <expression>+ E */
+/* Parse a sequence of expressions until we hit the terminator
+ character. */
static struct demangle_component *
-d_exprlist (struct d_info *di)
+d_exprlist (struct d_info *di, char terminator)
{
struct demangle_component *list = NULL;
struct demangle_component **p = &list;
- if (d_peek_char (di) == 'E')
+ if (d_peek_char (di) == terminator)
{
d_advance (di, 1);
return d_make_comp (di, DEMANGLE_COMPONENT_ARGLIST, NULL, NULL);
@@ -2768,7 +2788,7 @@ d_exprlist (struct d_info *di)
return NULL;
p = &d_right (*p);
- if (d_peek_char (di) == 'E')
+ if (d_peek_char (di) == terminator)
{
d_advance (di, 1);
break;
@@ -2859,9 +2879,21 @@ d_expression (struct d_info *di)
else
return name;
}
+ else if ((peek == 'i' || peek == 't')
+ && d_peek_next_char (di) == 'l')
+ {
+ /* Brace-enclosed initializer list, untyped or typed. */
+ struct demangle_component *type = NULL;
+ if (peek == 't')
+ type = cplus_demangle_type (di);
+ d_advance (di, 2);
+ return d_make_comp (di, DEMANGLE_COMPONENT_INITIALIZER_LIST,
+ type, d_exprlist (di, 'E'));
+ }
else
{
struct demangle_component *op;
+ const char *code = NULL;
int args;
op = d_operator_name (di);
@@ -2869,12 +2901,13 @@ d_expression (struct d_info *di)
return NULL;
if (op->type == DEMANGLE_COMPONENT_OPERATOR)
- di->expansion += op->u.s_operator.op->len - 2;
-
- if (op->type == DEMANGLE_COMPONENT_OPERATOR
- && strcmp (op->u.s_operator.op->code, "st") == 0)
- return d_make_comp (di, DEMANGLE_COMPONENT_UNARY, op,
- cplus_demangle_type (di));
+ {
+ code = op->u.s_operator.op->code;
+ di->expansion += op->u.s_operator.op->len - 2;
+ if (strcmp (code, "st") == 0)
+ return d_make_comp (di, DEMANGLE_COMPONENT_UNARY, op,
+ cplus_demangle_type (di));
+ }
switch (op->type)
{
@@ -2893,26 +2926,43 @@ d_expression (struct d_info *di)
switch (args)
{
+ case 0:
+ return d_make_comp (di, DEMANGLE_COMPONENT_NULLARY, op, NULL);
+
case 1:
{
struct demangle_component *operand;
+ int suffix = 0;
+
+ if (code && (code[0] == 'p' || code[0] == 'm')
+ && code[1] == code[0])
+ /* pp_ and mm_ are the prefix variants. */
+ suffix = !d_check_char (di, '_');
+
if (op->type == DEMANGLE_COMPONENT_CAST
&& d_check_char (di, '_'))
- operand = d_exprlist (di);
+ operand = d_exprlist (di, 'E');
else
operand = d_expression (di);
- return d_make_comp (di, DEMANGLE_COMPONENT_UNARY, op,
- operand);
+
+ if (suffix)
+ /* Indicate the suffix variant for d_print_comp. */
+ return d_make_comp (di, DEMANGLE_COMPONENT_UNARY, op,
+ d_make_comp (di,
+ DEMANGLE_COMPONENT_BINARY_ARGS,
+ operand, operand));
+ else
+ return d_make_comp (di, DEMANGLE_COMPONENT_UNARY, op,
+ operand);
}
case 2:
{
struct demangle_component *left;
struct demangle_component *right;
- const char *code = op->u.s_operator.op->code;
left = d_expression (di);
if (!strcmp (code, "cl"))
- right = d_exprlist (di);
+ right = d_exprlist (di, 'E');
else if (!strcmp (code, "dt") || !strcmp (code, "pt"))
{
right = d_unqualified_name (di);
@@ -2932,17 +2982,50 @@ d_expression (struct d_info *di)
{
struct demangle_component *first;
struct demangle_component *second;
+ struct demangle_component *third;
- first = d_expression (di);
- second = d_expression (di);
+ if (!strcmp (code, "qu"))
+ {
+ /* ?: expression. */
+ first = d_expression (di);
+ second = d_expression (di);
+ third = d_expression (di);
+ }
+ else if (code[0] == 'n')
+ {
+ /* new-expression. */
+ if (code[1] != 'w' && code[1] != 'a')
+ return NULL;
+ first = d_exprlist (di, '_');
+ second = cplus_demangle_type (di);
+ if (d_peek_char (di) == 'E')
+ {
+ d_advance (di, 1);
+ third = NULL;
+ }
+ else if (d_peek_char (di) == 'p'
+ && d_peek_next_char (di) == 'i')
+ {
+ /* Parenthesized initializer. */
+ d_advance (di, 2);
+ third = d_exprlist (di, 'E');
+ }
+ else if (d_peek_char (di) == 'i'
+ && d_peek_next_char (di) == 'l')
+ /* initializer-list. */
+ third = d_expression (di);
+ else
+ return NULL;
+ }
+ else
+ return NULL;
return d_make_comp (di, DEMANGLE_COMPONENT_TRINARY, op,
d_make_comp (di,
DEMANGLE_COMPONENT_TRINARY_ARG1,
first,
d_make_comp (di,
DEMANGLE_COMPONENT_TRINARY_ARG2,
- second,
- d_expression (di))));
+ second, third)));
}
default:
return NULL;
@@ -3662,6 +3745,8 @@ d_print_subexpr (struct d_print_info *dpi, int options,
{
int simple = 0;
if (dc->type == DEMANGLE_COMPONENT_NAME
+ || dc->type == DEMANGLE_COMPONENT_QUAL_NAME
+ || dc->type == DEMANGLE_COMPONENT_INITIALIZER_LIST
|| dc->type == DEMANGLE_COMPONENT_FUNCTION_PARAM)
simple = 1;
if (!simple)
@@ -4257,6 +4342,19 @@ d_print_comp (struct d_print_info *dpi, int options,
}
return;
+ case DEMANGLE_COMPONENT_INITIALIZER_LIST:
+ {
+ struct demangle_component *type = d_left (dc);
+ struct demangle_component *list = d_right (dc);
+
+ if (type)
+ d_print_comp (dpi, options, type);
+ d_append_char (dpi, '{');
+ d_print_comp (dpi, options, list);
+ d_append_char (dpi, '}');
+ }
+ return;
+
case DEMANGLE_COMPONENT_OPERATOR:
{
char c;
@@ -4280,55 +4378,59 @@ d_print_comp (struct d_print_info *dpi, int options,
d_print_cast (dpi, options, dc);
return;
+ case DEMANGLE_COMPONENT_NULLARY:
+ d_print_expr_op (dpi, options, d_left (dc));
+ return;
+
case DEMANGLE_COMPONENT_UNARY:
- if (d_left (dc)->type == DEMANGLE_COMPONENT_OPERATOR
- && d_left (dc)->u.s_operator.op->len == 1
- && d_left (dc)->u.s_operator.op->name[0] == '&'
- && d_right (dc)->type == DEMANGLE_COMPONENT_TYPED_NAME
- && d_left (d_right (dc))->type == DEMANGLE_COMPONENT_QUAL_NAME
- && d_right (d_right (dc))->type == DEMANGLE_COMPONENT_FUNCTION_TYPE)
- {
- /* Address of a function (therefore in an expression context) must
- have its argument list suppressed.
-
- unary operator ... dc
- operator & ... d_left (dc)
- typed name ... d_right (dc)
- qualified name ... d_left (d_right (dc))
- <names>
- function type ... d_right (d_right (dc))
- argument list
- <arguments> */
-
- d_print_expr_op (dpi, options, d_left (dc));
- d_print_comp (dpi, options, d_left (d_right (dc)));
- return;
- }
- else if (d_left (dc)->type == DEMANGLE_COMPONENT_OPERATOR
- && d_left (dc)->u.s_operator.op->len == 1
- && d_left (dc)->u.s_operator.op->name[0] == '&'
- && d_right (dc)->type == DEMANGLE_COMPONENT_QUAL_NAME)
- {
- /* Keep also already processed variant without the argument list.
+ {
+ struct demangle_component *op = d_left (dc);
+ struct demangle_component *operand = d_right (dc);
+ const char *code = NULL;
- unary operator ... dc
- operator & ... d_left (dc)
- qualified name ... d_right (dc)
- <names> */
+ if (op->type == DEMANGLE_COMPONENT_OPERATOR)
+ {
+ code = op->u.s_operator.op->code;
+ if (!strcmp (code, "ad"))
+ {
+ /* Don't print the argument list for the address of a
+ function. */
+ if (operand->type == DEMANGLE_COMPONENT_TYPED_NAME
+ && d_left (operand)->type == DEMANGLE_COMPONENT_QUAL_NAME
+ && d_right (operand)->type == DEMANGLE_COMPONENT_FUNCTION_TYPE)
+ operand = d_left (operand);
+ }
+ if (operand->type == DEMANGLE_COMPONENT_BINARY_ARGS)
+ {
+ /* This indicates a suffix operator. */
+ operand = d_left (operand);
+ d_print_subexpr (dpi, options, operand);
+ d_print_expr_op (dpi, options, op);
+ return;
+ }
+ }
- d_print_expr_op (dpi, options, d_left (dc));
- d_print_comp (dpi, options, d_right (dc));
- return;
- }
- else if (d_left (dc)->type != DEMANGLE_COMPONENT_CAST)
- d_print_expr_op (dpi, options, d_left (dc));
- else
- {
- d_append_char (dpi, '(');
- d_print_cast (dpi, options, d_left (dc));
- d_append_char (dpi, ')');
- }
- d_print_subexpr (dpi, options, d_right (dc));
+ if (op->type != DEMANGLE_COMPONENT_CAST)
+ d_print_expr_op (dpi, options, op);
+ else
+ {
+ d_append_char (dpi, '(');
+ d_print_cast (dpi, options, op);
+ d_append_char (dpi, ')');
+ }
+ if (code && !strcmp (code, "gs"))
+ /* Avoid parens after '::'. */
+ d_print_comp (dpi, options, operand);
+ else if (code && !strcmp (code, "st"))
+ /* Always print parens for sizeof (type). */
+ {
+ d_append_char (dpi, '(');
+ d_print_comp (dpi, options, operand);
+ d_append_char (dpi, ')');
+ }
+ else
+ d_print_subexpr (dpi, options, operand);
+ }
return;
case DEMANGLE_COMPONENT_BINARY:
@@ -4393,11 +4495,33 @@ d_print_comp (struct d_print_info *dpi, int options,
d_print_error (dpi);
return;
}
- d_print_subexpr (dpi, options, d_left (d_right (dc)));
- d_print_expr_op (dpi, options, d_left (dc));
- d_print_subexpr (dpi, options, d_left (d_right (d_right (dc))));
- d_append_string (dpi, " : ");
- d_print_subexpr (dpi, options, d_right (d_right (d_right (dc))));
+ {
+ struct demangle_component *op = d_left (dc);
+ struct demangle_component *first = d_left (d_right (dc));
+ struct demangle_component *second = d_left (d_right (d_right (dc)));
+ struct demangle_component *third = d_right (d_right (d_right (dc)));
+
+ if (!strcmp (op->u.s_operator.op->code, "qu"))
+ {
+ d_print_subexpr (dpi, options, first);
+ d_print_expr_op (dpi, options, op);
+ d_print_subexpr (dpi, options, second);
+ d_append_string (dpi, " : ");
+ d_print_subexpr (dpi, options, third);
+ }
+ else
+ {
+ d_append_string (dpi, "new ");
+ if (d_left (first) != NULL)
+ {
+ d_print_subexpr (dpi, options, first);
+ d_append_char (dpi, ' ');
+ }
+ d_print_comp (dpi, options, second);
+ if (third)
+ d_print_subexpr (dpi, options, third);
+ }
+ }
return;
case DEMANGLE_COMPONENT_TRINARY_ARG1:
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index 70abf681ae8..3f3960a4093 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -3935,7 +3935,7 @@ _Z1tIlEDTplcvT_Li5EclL_Z1qsELi6EEEv
decltype (((long)(5))+(q(6))) t<long>()
# test for expansion of function parameter pack
--format=gnu-v3
-_Z1gIIidEEDTclL_Z1fEspplfp_Li1EEEDpT_
+_Z1gIJidEEDTclL_Z1fEspplfp_Li1EEEDpT_
decltype (f(({parm#1}+(1))...)) g<int, double>(int, double)
# lambda tests
--format=gnu-v3
@@ -4018,6 +4018,57 @@ K<1, &S::m>::f()
--format=gnu-v3
_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
+# A pack expansion is substitutable.
+--format=gnu-v3
+_Z1fIJiEiEv1AIJDpT_EET0_S4_
+void f<int, int>(A<int>, int, int)
+# So is decltype.
+--format=gnu-v3
+_Z1fIiiEDTcvT__EET0_S2_
+decltype ((int)()) f<int, int>(int, int)
+# And vector.
+--format=gnu-v3
+_Z1fDv4_iS_
+f(int __vector(4), int __vector(4))
+--format=gnu-v3
+_Z2f1Ii1AEDTdsfp_fp0_ET0_MS2_T_
+decltype ({parm#1}.*{parm#2}) f1<int, A>(A, int A::*)
+--format=gnu-v3
+_Z2f2IiEDTquL_Z1bEfp_trET_
+decltype (b?{parm#1} : (throw)) f2<int>(int)
+--format=gnu-v3
+_Z6check1IiEvP6helperIXsznw_T_EEE
+void check1<int>(helper<sizeof (new int)>*)
+--format=gnu-v3
+_Z6check2IiEvP6helperIXszgsnw_T_piEEE
+void check2<int>(helper<sizeof (::new int())>*)
+--format=gnu-v3
+_Z6check3IiEvP6helperIXsznwadL_Z1iE_T_piLi1EEEE
+void check3<int>(helper<sizeof (new (&i) int(1))>*)
+--format=gnu-v3
+_Z6check4IiEvP6helperIXszna_A1_T_EEE
+void check4<int>(helper<sizeof (new int [1])>*)
+--format=gnu-v3
+_Z6check5IiEvP6helperIXszna_A1_T_piEEE
+void check5<int>(helper<sizeof (new int [1]())>*)
+--format=gnu-v3
+_Z1fIiEDTcmgsdlfp_psfp_EPT_
+decltype ((::delete {parm#1}),(+{parm#1})) f<int>(int*)
+--format=gnu-v3
+_Z1fIiEDTcmdafp_psfp_EPT_
+decltype ((delete[] {parm#1}),(+{parm#1})) f<int>(int*)
+--format=gnu-v3
+_Z2f1IiEDTppfp_ET_
+decltype ({parm#1}++) f1<int>(int)
+--format=gnu-v3
+_Z2f1IiEDTpp_fp_ET_
+decltype (++{parm#1}) f1<int>(int)
+--format=gnu-v3
+_Z2f1IiEDTcl1gfp_ilEEET_
+decltype (g({parm#1}, {})) f1<int>(int)
+--format=gnu-v3
+_Z2f1IiEDTnw_T_ilEES0_
+decltype (new int{}) f1<int>(int)
#
# Ada (GNAT) tests.
#
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index d2f0fd752f0..0931fcda5c8 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,39 @@
+2012-01-08 Torvald Riegel <triegel@redhat.com>
+
+ * local.cc (GTM_LB): Use GTM::gtm_undolog.
+ (GTM::gtm_thread::drop_references_undolog): Remove.
+ (GTM::gtm_thread::commit_undolog,
+ GTM::gtm_thread::rollback_undolog): Move to ...
+ * libitm_i.h (GTM::gtm_undolog): ...here. New.
+ (GTM::gtm_undolog_entry): Remove.
+ (GTM::gtm_thread): Adapt.
+ * beginend.cc (GTM::gtm_thread::rollback): Adapt.
+ (GTM::gtm_thread::trycommit): Adapt.
+ * method-serial.cc (serial_dispatch::log): Adapt.
+ * method-gl.cc (gl_wt_dispatch::pre_write): Adapt.
+ (gl_wt_dispatch::store): Fix likely/unlikely.
+ * containers.h (GTM::vector::resize): Add additional_capacity
+ parameter and handle it.
+ (GTM::vector::resize_noinline): New/adapt.
+ (GTM::vector::push): New.
+
+2012-01-06 Richard Henderson <rth@redhat.com>
+
+ * configure.tgt: Support powerpc-linux and powerpc-darwin.
+ * config/linux/powerpc/futex_bits.h: New file.
+ * config/powerpc/cacheline.h: New file.
+ * config/powerpc/sjlj.S: New file.
+ * config/powerpc/target.h: New file.
+ * config/generic/asmcfi.h (cfi_offset): New.
+ (cfi_restore, cfi_undefined): New.
+
+2012-01-05 Aldy Hernandez <aldyh@redhat.com>
+
+ PR other/51171
+ * testsuite/libitm.c/reentrant.c: Remove xfail.
+ (thread): Pass x to pure().
+ From Patrik Marlier <patrick.marlier@gmail.com>.
+
2011-12-24 Torvald Riegel <triegel@redhat.com>
* beginend.cc (GTM::gtm_thread::trycommit): Don't enforce
diff --git a/libitm/beginend.cc b/libitm/beginend.cc
index 797548192eb..fe14f32d110 100644
--- a/libitm/beginend.cc
+++ b/libitm/beginend.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008, 2009, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth@redhat.com>.
This file is part of the GNU Transactional Memory Library (libitm).
@@ -327,7 +327,7 @@ GTM::gtm_thread::rollback (gtm_transaction_cp *cp, bool aborting)
// data. Because of the latter, we have to roll it back before any
// dispatch-specific rollback (which handles synchronization with other
// transactions).
- rollback_undolog (cp ? cp->undolog_size : 0);
+ undolog.rollback (cp ? cp->undolog_size : 0);
// Perform dispatch-specific rollback.
abi_disp()->rollback (cp);
@@ -470,7 +470,7 @@ GTM::gtm_thread::trycommit ()
// We can commit the undo log after dispatch-specific commit and after
// making the transaction inactive because we only have to reset
// gtm_thread state.
- commit_undolog ();
+ undolog.commit ();
// Reset further transaction state.
cxa_catch_count = 0;
cxa_unthrown = NULL;
diff --git a/libitm/config/generic/asmcfi.h b/libitm/config/generic/asmcfi.h
index c9d4edf6e69..3a5634b37e6 100644
--- a/libitm/config/generic/asmcfi.h
+++ b/libitm/config/generic/asmcfi.h
@@ -1,5 +1,4 @@
-
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth@redhat.com>.
This file is part of the GNU Transactional Memory Library (libitm).
@@ -34,6 +33,9 @@
#define cfi_def_cfa(r,n) .cfi_def_cfa r, n
#define cfi_rel_offset(r,o) .cfi_rel_offset r, o
#define cfi_register(o,n) .cfi_register o, n
+#define cfi_offset(r,o) .cfi_offset r, o
+#define cfi_restore(r) .cfi_restore r
+#define cfi_undefined(r) .cfi_undefined r
#else
@@ -44,5 +46,8 @@
#define cfi_def_cfa(r,n)
#define cfi_rel_offset(r,o)
#define cfi_register(o,n)
+#define cfi_offset(r,o)
+#define cfi_restore(r)
+#define cfi_undefined(r)
#endif /* HAVE_AS_CFI_PSEUDO_OP */
diff --git a/libitm/config/linux/powerpc/futex_bits.h b/libitm/config/linux/powerpc/futex_bits.h
new file mode 100644
index 00000000000..daf5c6fe27d
--- /dev/null
+++ b/libitm/config/linux/powerpc/futex_bits.h
@@ -0,0 +1,54 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+ Contributed by Richard Henderson <rth@redhat.com>.
+
+ This file is part of the GNU Transactional Memory Library (libitm).
+
+ Libitm 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 of the License, or
+ (at your option) any later version.
+
+ Libitm is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <sys/syscall.h>
+
+static inline long
+sys_futex0 (std::atomic<int> *addr, int op, int val)
+{
+ register long int r0 __asm__ ("r0");
+ register long int r3 __asm__ ("r3");
+ register long int r4 __asm__ ("r4");
+ register long int r5 __asm__ ("r5");
+ register long int r6 __asm__ ("r6");
+
+ r0 = SYS_futex;
+ r3 = (long) addr;
+ r4 = op;
+ r5 = val;
+ r6 = 0;
+
+ /* ??? The powerpc64 sysdep.h file clobbers ctr; the powerpc32 sysdep.h
+ doesn't. It doesn't much matter for us. In the interest of unity,
+ go ahead and clobber it always. */
+
+ __asm volatile ("sc; mfcr %0"
+ : "=r"(r0), "=r"(r3), "=r"(r4), "=r"(r5), "=r"(r6)
+ : "r"(r0), "r"(r3), "r"(r4), "r"(r5), "r"(r6)
+ : "r7", "r8", "r9", "r10", "r11", "r12",
+ "cr0", "ctr", "memory");
+ if (__builtin_expect (r0 & (1 << 28), 0))
+ return r3;
+ return 0;
+}
diff --git a/libitm/config/powerpc/cacheline.h b/libitm/config/powerpc/cacheline.h
new file mode 100644
index 00000000000..8819569ff61
--- /dev/null
+++ b/libitm/config/powerpc/cacheline.h
@@ -0,0 +1,42 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+ Contributed by Richard Henderson <rth@redhat.com>.
+
+ This file is part of the GNU Transactional Memory Library (libitm).
+
+ Libitm 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 of the License, or
+ (at your option) any later version.
+
+ Libitm is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef LIBITM_POWERPC_CACHELINE_H
+#define LIBITM_POWERPC_CACHELINE_H 1
+
+// A cacheline is the smallest unit with which locks are associated.
+// The current implementation of the _ITM_[RW] barriers assumes that
+// all data types can fit (aligned) within a cachline, which means
+// in practice sizeof(complex long double) is the smallest cacheline size.
+// It ought to be small enough for efficient manipulation of the
+// modification mask, below.
+#if defined (__powerpc64__) || defined (__ppc64__)
+# define CACHELINE_SIZE 64
+#else
+# define CACHELINE_SIZE 32
+#endif
+
+#include "config/generic/cacheline.h"
+
+#endif // LIBITM_POWERPC_CACHELINE_H
diff --git a/libitm/config/powerpc/sjlj.S b/libitm/config/powerpc/sjlj.S
new file mode 100644
index 00000000000..83dfdc8bc79
--- /dev/null
+++ b/libitm/config/powerpc/sjlj.S
@@ -0,0 +1,411 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+ Contributed by Richard Henderson <rth@redhat.com>.
+
+ This file is part of the GNU Transactional Memory Library (libitm).
+
+ Libitm 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 of the License, or
+ (at your option) any later version.
+
+ Libitm is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+ .text
+
+#include "asmcfi.h"
+
+#if defined(__powerpc64__) && defined(__ELF__)
+.macro FUNC name
+ .globl \name, .\name
+ .section ".opd","aw"
+ .align 3
+\name:
+ .quad .\name, .TOC.@tocbase, 0
+ .size \name, 24
+ .type .\name, @function
+ .text
+.\name:
+.endm
+.macro END name
+ .size .\name, . - .\name
+.endm
+.macro HIDDEN name
+ .hidden \name, .\name
+.endm
+.macro CALL name
+ bl \name
+ nop
+.endm
+#elif defined(__ELF__)
+.macro FUNC name
+ .globl \name
+ .type \name, @function
+\name:
+.endm
+.macro END name
+ .size \name, . - \name
+.endm
+.macro HIDDEN name
+ .hidden \name
+.endm
+.macro CALL name
+ bl \name
+.endm
+#elif defined(_CALL_DARWIN)
+.macro FUNC name
+ .globl _$0
+_$0:
+.endmacro
+.macro END name
+.endmacro
+.macro HIDDEN name
+ .private_extern _$0
+.endmacro
+.macro CALL name
+ bl _$0
+.endmacro
+# ifdef __ppc64__
+ .machine ppc64
+# else
+ .machine ppc7400
+# endif
+#else
+#error "unsupported system"
+#endif
+
+/* Parameterize the naming of registers. */
+#if defined(__ELF__)
+# define r(N) %r##N
+# define f(N) %f##N
+# define v(N) %v##N
+#elif defined(__MACH__)
+# define r(N) r##N
+# define f(N) f##N
+# define v(N) v##N
+#else
+# define r(N) N
+# define f(N) N
+# define v(N) N
+#endif
+
+/* Parameterize the code for 32-bit vs 64-bit. */
+#if defined(__powerpc64__) || defined(__ppc64__)
+#define ldreg ld
+#define streg std
+#define stregu stdu
+#define WS 8
+#else
+#define ldreg lwz
+#define streg stw
+#define stregu stwu
+#define WS 4
+#endif
+
+/* Parameterize the code for call frame constants. */
+#if defined(_CALL_AIXDESC)
+# define BASE 6*WS
+# define LR_SAVE 2*WS
+#elif defined(_CALL_SYSV)
+# define BASE 2*WS
+# define LR_SAVE 1*WS
+#elif defined(_CALL_DARWIN)
+# define BASE (6*WS + 2*WS)
+# define LR_SAVE 2*WS
+#else
+# error "unsupported system"
+#endif
+
+#if defined(__ALTIVEC__) || defined(__VSX__)
+# define OFS_VR 0
+# define OFS_VSCR 12*16
+# define OFS_VR_END OFS_VSCR + 8
+#else
+# define OFS_VR_END 0
+#endif
+#ifndef _SOFT_FLOAT
+# define OFS_FR OFS_VR_END
+# define OFS_FPSCR OFS_FR + 18*8
+# define OFS_FR_END OFS_FPSCR + 8
+#else
+# define OFS_FR_END OFS_VR_END
+#endif
+#define OFS_GR OFS_FR_END
+#define OFS_CFA OFS_GR + 18*WS
+#define OFS_LR OFS_CFA + WS
+#define OFS_TOC OFS_LR + WS
+#define OFS_CR OFS_TOC + WS
+#define OFS_END (((OFS_CR + WS + 15) / 16) * 16)
+
+#define FRAME (((BASE + OFS_END + 15) / 16) * 16)
+#define VRSAVE 256
+
+ .align 4
+FUNC _ITM_beginTransaction
+ cfi_startproc
+ mflr r(0)
+ mfcr r(5)
+ addi r(4), r(1), -OFS_END
+ mr r(6), r(1)
+ streg r(0), LR_SAVE(r(1))
+ stregu r(1), -FRAME(r(1))
+ cfi_def_cfa_offset(FRAME)
+ cfi_offset(65, LR_SAVE)
+ streg r(6), OFS_CFA(r(4))
+ streg r(0), OFS_LR(r(4))
+#ifdef _CALL_DARWIN
+ streg r(13), OFS_TOC(r(4))
+#else
+ streg r(2), OFS_TOC(r(4))
+#endif
+ streg r(5), OFS_CR(r(4))
+ streg r(14), 0*WS+OFS_GR(r(4))
+ streg r(15), 1*WS+OFS_GR(r(4))
+ streg r(16), 2*WS+OFS_GR(r(4))
+ streg r(17), 3*WS+OFS_GR(r(4))
+ streg r(18), 4*WS+OFS_GR(r(4))
+ streg r(19), 5*WS+OFS_GR(r(4))
+ streg r(20), 6*WS+OFS_GR(r(4))
+ streg r(21), 7*WS+OFS_GR(r(4))
+ streg r(22), 8*WS+OFS_GR(r(4))
+ streg r(23), 9*WS+OFS_GR(r(4))
+ streg r(24), 10*WS+OFS_GR(r(4))
+ streg r(25), 11*WS+OFS_GR(r(4))
+ streg r(26), 12*WS+OFS_GR(r(4))
+ streg r(27), 13*WS+OFS_GR(r(4))
+ streg r(28), 14*WS+OFS_GR(r(4))
+ streg r(29), 15*WS+OFS_GR(r(4))
+ streg r(30), 16*WS+OFS_GR(r(4))
+ streg r(31), 17*WS+OFS_GR(r(4))
+
+#ifndef _SOFT_FLOAT
+ /* ??? Determine when FPRs not present. */
+ /* ??? Test r(3) for pr_hasNoFloatUpdate and skip the fp save.
+ This is not yet set by the compiler. */
+ mffs f(0)
+ stfd f(14), 0+OFS_FR(r(4))
+ stfd f(15), 8+OFS_FR(r(4))
+ stfd f(16), 16+OFS_FR(r(4))
+ stfd f(17), 24+OFS_FR(r(4))
+ stfd f(18), 32+OFS_FR(r(4))
+ stfd f(19), 40+OFS_FR(r(4))
+ stfd f(20), 48+OFS_FR(r(4))
+ stfd f(21), 56+OFS_FR(r(4))
+ stfd f(22), 64+OFS_FR(r(4))
+ stfd f(23), 72+OFS_FR(r(4))
+ stfd f(24), 80+OFS_FR(r(4))
+ stfd f(25), 88+OFS_FR(r(4))
+ stfd f(26), 96+OFS_FR(r(4))
+ stfd f(27),104+OFS_FR(r(4))
+ stfd f(28),112+OFS_FR(r(4))
+ stfd f(29),120+OFS_FR(r(4))
+ stfd f(30),128+OFS_FR(r(4))
+ stfd f(31),136+OFS_FR(r(4))
+ stfd f(0), OFS_FPSCR(r(4))
+#endif
+
+#if defined(__ALTIVEC__)
+ /* ??? Determine when VRs not present. */
+ /* ??? Test r(3) for pr_hasNoVectorUpdate and skip the vr save.
+ This is not yet set by the compiler. */
+ addi r(5), r(4), OFS_VR
+ addi r(6), r(4), OFS_VR+16
+ mfspr r(0), VRSAVE
+ stvx v(20), 0, r(5)
+ addi r(5), r(5), 32
+ stvx v(21), 0, r(6)
+ addi r(6), r(6), 32
+ stvx v(22), 0, r(5)
+ addi r(5), r(5), 32
+ stvx v(23), 0, r(6)
+ addi r(6), r(6), 32
+ stvx v(25), 0, r(5)
+ addi r(5), r(5), 32
+ stvx v(26), 0, r(6)
+ addi r(6), r(6), 32
+ stvx v(26), 0, r(5)
+ addi r(5), r(5), 32
+ stvx v(27), 0, r(6)
+ addi r(6), r(6), 32
+ stvx v(28), 0, r(5)
+ addi r(5), r(5), 32
+ stvx v(29), 0, r(6)
+ addi r(6), r(6), 32
+ stvx v(30), 0, r(5)
+ stvx v(31), 0, r(6)
+ streg r(0), OFS_VSCR(r(4))
+#endif
+
+ CALL GTM_begin_transaction
+
+ ldreg r(0), LR_SAVE+FRAME(r(1))
+ mtlr r(0)
+ addi r(1), r(1), FRAME
+ cfi_def_cfa_offset(0)
+ cfi_restore(65)
+ blr
+ cfi_endproc
+END _ITM_beginTransaction
+
+ .align 4
+ HIDDEN GTM_longjmp
+FUNC GTM_longjmp
+ cfi_startproc
+#if defined(__ALTIVEC__) || defined(__VSX__)
+ /* ??? Determine when VRs not present. */
+ /* ??? Test r(5) for pr_hasNoVectorUpdate and skip the vr restore.
+ This is not yet set by the compiler. */
+ addi r(6), r(4), OFS_VR
+ addi r(7), r(4), OFS_VR+16
+ ldreg r(0), OFS_VSCR(r(4))
+ cfi_undefined(v(20))
+ cfi_undefined(v(21))
+ cfi_undefined(v(22))
+ cfi_undefined(v(23))
+ cfi_undefined(v(24))
+ cfi_undefined(v(25))
+ cfi_undefined(v(26))
+ cfi_undefined(v(27))
+ cfi_undefined(v(28))
+ cfi_undefined(v(29))
+ cfi_undefined(v(30))
+ cfi_undefined(v(31))
+ lvx v(20), 0, r(6)
+ addi r(6), r(6), 32
+ lvx v(21), 0, r(7)
+ addi r(7), r(7), 32
+ lvx v(22), 0, r(6)
+ addi r(6), r(6), 32
+ lvx v(23), 0, r(7)
+ addi r(7), r(7), 32
+ lvx v(24), 0, r(6)
+ addi r(6), r(6), 32
+ lvx v(25), 0, r(7)
+ addi r(7), r(7), 32
+ lvx v(26), 0, r(6)
+ addi r(6), r(6), 32
+ lvx v(27), 0, r(7)
+ addi r(7), r(7), 32
+ lvx v(28), 0, r(6)
+ addi r(6), r(6), 32
+ lvx v(29), 0, r(7)
+ addi r(7), r(7), 32
+ lvx v(30), 0, r(6)
+ lvx v(31), 0, r(7)
+ mtspr VRSAVE, r(0)
+#endif
+
+#ifndef _SOFT_FLOAT
+ /* ??? Determine when FPRs not present. */
+ /* ??? Test r(5) for pr_hasNoFloatUpdate and skip the fp load.
+ This is not yet set by the compiler. */
+ lfd f(0), OFS_FPSCR(r(4))
+ cfi_undefined(f(14))
+ cfi_undefined(f(15))
+ cfi_undefined(f(16))
+ cfi_undefined(f(17))
+ cfi_undefined(f(18))
+ cfi_undefined(f(19))
+ cfi_undefined(f(20))
+ cfi_undefined(f(21))
+ cfi_undefined(f(22))
+ cfi_undefined(f(23))
+ cfi_undefined(f(24))
+ cfi_undefined(f(25))
+ cfi_undefined(f(26))
+ cfi_undefined(f(27))
+ cfi_undefined(f(28))
+ cfi_undefined(f(29))
+ cfi_undefined(f(30))
+ cfi_undefined(f(31))
+ lfd f(14), 0+OFS_FR(r(4))
+ lfd f(15), 8+OFS_FR(r(4))
+ lfd f(16), 16+OFS_FR(r(4))
+ lfd f(17), 24+OFS_FR(r(4))
+ lfd f(18), 32+OFS_FR(r(4))
+ lfd f(19), 40+OFS_FR(r(4))
+ lfd f(20), 48+OFS_FR(r(4))
+ lfd f(21), 56+OFS_FR(r(4))
+ lfd f(22), 64+OFS_FR(r(4))
+ lfd f(23), 72+OFS_FR(r(4))
+ lfd f(24), 80+OFS_FR(r(4))
+ lfd f(25), 88+OFS_FR(r(4))
+ lfd f(26), 96+OFS_FR(r(4))
+ lfd f(27),104+OFS_FR(r(4))
+ lfd f(28),112+OFS_FR(r(4))
+ lfd f(29),120+OFS_FR(r(4))
+ lfd f(30),128+OFS_FR(r(4))
+ lfd f(31),136+OFS_FR(r(4))
+ mtfsf 0xff, f(0)
+#endif
+
+ ldreg r(6), OFS_CFA(r(4))
+ ldreg r(0), OFS_LR(r(4))
+#ifdef _CALL_DARWIN
+ ldreg r(13), OFS_TOC(r(4))
+#else
+ ldreg r(2), OFS_TOC(r(4))
+#endif
+ ldreg r(7), OFS_CR(r(4))
+ /* At the instant we restore the LR, the only coherent view of
+ the world we have is into the new stack frame. Define the
+ CFA in terms of the not-yet-restored stack pointer. This will
+ last until the end of the function. */
+ mtlr r(0)
+ cfi_def_cfa(r(6), 0)
+ cfi_undefined(r(14))
+ cfi_undefined(r(15))
+ cfi_undefined(r(16))
+ cfi_undefined(r(17))
+ cfi_undefined(r(18))
+ cfi_undefined(r(19))
+ cfi_undefined(r(20))
+ cfi_undefined(r(21))
+ cfi_undefined(r(22))
+ cfi_undefined(r(23))
+ cfi_undefined(r(24))
+ cfi_undefined(r(25))
+ cfi_undefined(r(26))
+ cfi_undefined(r(27))
+ cfi_undefined(r(28))
+ cfi_undefined(r(29))
+ cfi_undefined(r(30))
+ cfi_undefined(r(31))
+ mtcr r(7)
+ ldreg r(14), 0*WS+OFS_GR(r(4))
+ ldreg r(15), 1*WS+OFS_GR(r(4))
+ ldreg r(16), 2*WS+OFS_GR(r(4))
+ ldreg r(17), 3*WS+OFS_GR(r(4))
+ ldreg r(18), 4*WS+OFS_GR(r(4))
+ ldreg r(19), 5*WS+OFS_GR(r(4))
+ ldreg r(20), 6*WS+OFS_GR(r(4))
+ ldreg r(21), 7*WS+OFS_GR(r(4))
+ ldreg r(22), 8*WS+OFS_GR(r(4))
+ ldreg r(23), 9*WS+OFS_GR(r(4))
+ ldreg r(24), 10*WS+OFS_GR(r(4))
+ ldreg r(25), 11*WS+OFS_GR(r(4))
+ ldreg r(26), 12*WS+OFS_GR(r(4))
+ ldreg r(27), 13*WS+OFS_GR(r(4))
+ ldreg r(28), 14*WS+OFS_GR(r(4))
+ ldreg r(29), 15*WS+OFS_GR(r(4))
+ ldreg r(30), 16*WS+OFS_GR(r(4))
+ ldreg r(31), 17*WS+OFS_GR(r(4))
+ mr r(1), r(6)
+ blr
+ cfi_endproc
+END GTM_longjmp
+
+#ifdef __linux__
+.section .note.GNU-stack, "", @progbits
+#endif
diff --git a/libitm/config/powerpc/target.h b/libitm/config/powerpc/target.h
new file mode 100644
index 00000000000..4ffd3d1fe49
--- /dev/null
+++ b/libitm/config/powerpc/target.h
@@ -0,0 +1,58 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+ Contributed by Richard Henderson <rth@redhat.com>.
+
+ This file is part of the GNU Transactional Memory Library (libitm).
+
+ Libitm 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 of the License, or
+ (at your option) any later version.
+
+ Libitm is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+namespace GTM HIDDEN {
+
+typedef int v128 __attribute__((vector_size(16), may_alias, aligned(16)));
+typedef struct gtm_jmpbuf
+{
+#if defined(__ALTIVEC__) || defined(__VSX__)
+ v128 vr[12]; /* vr20-vr31 */
+ unsigned long long vscr; /* long long for padding only */
+#endif
+#ifndef _SOFT_FLOAT
+ double fr[18]; /* f14-f31 */
+ double fpscr;
+#endif
+ unsigned long gr[18]; /* r14-r31 */
+ void *cfa;
+ unsigned long pc;
+ unsigned long toc; /* r2 on aix, r13 on darwin */
+ unsigned long cr;
+} gtm_jmpbuf;
+
+/* The size of one line in hardware caches (in bytes). */
+#if defined (__powerpc64__) || defined (__ppc64__)
+# define HW_CACHELINE_SIZE 128
+#else
+# define HW_CACHELINE_SIZE 32
+#endif
+
+static inline void
+cpu_relax (void)
+{
+ __asm volatile ("" : : : "memory");
+}
+
+} // namespace GTM
diff --git a/libitm/configure.tgt b/libitm/configure.tgt
index 8d43cd410d4..e20349a1f84 100644
--- a/libitm/configure.tgt
+++ b/libitm/configure.tgt
@@ -1,5 +1,5 @@
# -*- shell-script -*-
-# Copyright (C) 2011 Free Software Foundation, Inc.
+# Copyright (C) 2011, 2012 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -46,7 +46,8 @@ fi
# Map the target cpu to an ARCH sub-directory. At the same time,
# work out any special compilation flags as necessary.
case "${target_cpu}" in
- alpha*) ARCH=alpha ;;
+ alpha*) ARCH=alpha ;;
+ rs6000 | powerpc*) ARCH=powerpc ;;
arm*) ARCH=arm ;;
@@ -94,6 +95,11 @@ case "${target}" in
fi
;;
+ powerpc*-*-aix* | rs6000-*-aix*)
+ # The system ought to be supported, but sjlj.S has not been ported.
+ UNSUPPORTED=1
+ ;;
+
*-*-gnu* | *-*-k*bsd*-gnu \
| *-*-netbsd* | *-*-freebsd* | *-*-openbsd* \
| *-*-solaris2* | *-*-sysv4* | *-*-irix6* | *-*-osf* | *-*-hpux11* \
diff --git a/libitm/containers.h b/libitm/containers.h
index e8aa94bb4f4..394b6f2508e 100644
--- a/libitm/containers.h
+++ b/libitm/containers.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
Contributed by Torvald Riegel <triegel@redhat.com>.
This file is part of the GNU Transactional Memory Library (libitm).
@@ -70,17 +70,24 @@ class vector
}
~vector<T, alloc_separate_cl>() { if (m_capacity) free(entries); }
- void resize()
+ void resize(size_t additional_capacity)
{
- if (m_capacity >= default_resize_max)
- m_capacity = m_capacity + default_resize_max;
+ size_t target = m_capacity + additional_capacity;
+ if (target > default_resize_max)
+ m_capacity = ((target - 1 + default_resize_max) / default_resize_max)
+ * default_resize_max;
else
- m_capacity = m_capacity * 2;
+ while (m_capacity < target)
+ m_capacity = m_capacity * 2;
if (m_capacity < default_resize_min)
m_capacity = default_resize_min;
entries = (T*) xrealloc(entries, sizeof(T) * m_capacity, alloc_separate_cl);
}
- void resize_noinline() __attribute__((noinline)) { resize(); }
+ void resize_noinline() __attribute__((noinline)) { resize(1); }
+ void resize_noinline(size_t elements) __attribute__((noinline))
+ {
+ resize(elements);
+ }
size_t size() const { return m_size; }
size_t capacity() const { return this->capacity; }
@@ -93,6 +100,15 @@ class vector
return &entries[m_size++];
}
+ iterator push(size_t elements)
+ {
+ // We don't want inlining here since push() is often on the fast path.
+ if (unlikely(m_size + elements > m_capacity)) resize_noinline(elements);
+ iterator it = &entries[m_size];
+ m_size += elements;
+ return it;
+ }
+
iterator pop() {
if (likely(m_size > 0))
{
diff --git a/libitm/libitm_i.h b/libitm/libitm_i.h
index b53792a3781..f922d22d89f 100644
--- a/libitm/libitm_i.h
+++ b/libitm/libitm_i.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008, 2009, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth@redhat.com>.
This file is part of the GNU Transactional Memory Library (libitm).
@@ -93,9 +93,6 @@ struct gtm_alloc_action
bool allocated;
};
-// This type is private to local.c.
-struct gtm_undolog_entry;
-
struct gtm_thread;
// A transaction checkpoint: data that has to saved and restored when doing
@@ -121,6 +118,29 @@ struct gtm_transaction_cp
void commit(gtm_thread* tx);
};
+// An undo log for writes.
+struct gtm_undolog
+{
+ vector<gtm_word> undolog;
+
+ // Log the previous value at a certain address.
+ // The easiest way to inline this is to just define this here.
+ void log(const void *ptr, size_t len)
+ {
+ size_t words = (len + sizeof(gtm_word) - 1) / sizeof(gtm_word);
+ gtm_word *undo = undolog.push(words + 2);
+ memcpy(undo, ptr, len);
+ undo[words] = len;
+ undo[words + 1] = (gtm_word) ptr;
+ }
+
+ void commit () { undolog.clear(); }
+ size_t size() const { return undolog.size(); }
+
+ // In local.cc
+ void rollback (size_t until_size = 0);
+};
+
// Contains all thread-specific data required by the entire library.
// This includes all data relevant to a single transaction. Because most
// thread-specific data is about the current transaction, we also refer to
@@ -148,7 +168,7 @@ struct gtm_thread
gtm_jmpbuf jb;
// Data used by local.c for the undo log for both local and shared memory.
- vector<gtm_undolog_entry*> undolog;
+ gtm_undolog undolog;
// Data used by alloc.c for the malloc/free undo log.
aa_tree<uintptr_t, gtm_alloc_action> alloc_actions;
@@ -254,11 +274,6 @@ struct gtm_thread
// In eh_cpp.cc
void revert_cpp_exceptions (gtm_transaction_cp *cp = 0);
- // In local.cc
- void commit_undolog (void);
- void rollback_undolog (size_t until_size = 0);
- void drop_references_undolog (const void *, size_t);
-
// In retry.cc
// Must be called outside of transactions (i.e., after rollback).
void decide_retry_strategy (gtm_restart_reason);
diff --git a/libitm/local.cc b/libitm/local.cc
index 4f47ff2e5f6..39b6da3a5d2 100644
--- a/libitm/local.cc
+++ b/libitm/local.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008, 2009, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth@redhat.com>.
This file is part of the GNU Transactional Memory Library (libitm).
@@ -26,29 +26,9 @@
namespace GTM HIDDEN {
-struct gtm_undolog_entry
-{
- void *addr;
- size_t len;
- char saved[];
-};
-
void
-gtm_thread::commit_undolog ()
-{
- size_t i, n = undolog.size();
-
- if (n > 0)
- {
- for (i = 0; i < n; ++i)
- free (undolog[i]);
- this->undolog.clear();
- }
-}
-
-void
-gtm_thread::rollback_undolog (size_t until_size)
+gtm_undolog::rollback (size_t until_size)
{
size_t i, n = undolog.size();
@@ -56,36 +36,11 @@ gtm_thread::rollback_undolog (size_t until_size)
{
for (i = n; i-- > until_size; )
{
- gtm_undolog_entry *u = *undolog.pop();
- if (u)
- {
- memcpy (u->addr, u->saved, u->len);
- free (u);
- }
- }
- }
-}
-
-/* Forget any references to PTR in the local log. */
-
-void
-gtm_thread::drop_references_undolog (const void *ptr, size_t len)
-{
- size_t i, n = undolog.size();
-
- if (n > 0)
- {
- for (i = n; i > 0; i--)
- {
- gtm_undolog_entry *u = undolog[i];
- /* ?? Do we need such granularity, or can we get away with
- just comparing PTR and LEN. ?? */
- if ((const char *)u->addr >= (const char *)ptr
- && ((const char *)u->addr + u->len <= (const char *)ptr + len))
- {
- free (u);
- undolog[i] = NULL;
- }
+ void *ptr = (void *) undolog[i--];
+ size_t len = undolog[i];
+ size_t words = (len + sizeof(gtm_word) - 1) / sizeof(gtm_word);
+ i -= words;
+ __builtin_memcpy (ptr, &undolog[i], len);
}
}
}
@@ -94,16 +49,7 @@ void ITM_REGPARM
GTM_LB (const void *ptr, size_t len)
{
gtm_thread *tx = gtm_thr();
- gtm_undolog_entry *undo;
-
- undo = (gtm_undolog_entry *)
- xmalloc (sizeof (struct gtm_undolog_entry) + len);
- undo->addr = (void *) ptr;
- undo->len = len;
-
- tx->undolog.push()[0] = undo;
-
- memcpy (undo->saved, ptr, len);
+ tx->undolog.log(ptr, len);
}
} // namespace GTM
diff --git a/libitm/method-gl.cc b/libitm/method-gl.cc
index e678da76b34..d6d050de3a8 100644
--- a/libitm/method-gl.cc
+++ b/libitm/method-gl.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
Contributed by Torvald Riegel <triegel@redhat.com>.
This file is part of the GNU Transactional Memory Library (libitm).
@@ -120,8 +120,7 @@ protected:
tx->shared_state.store(gl_mg::set_locked(now), memory_order_release);
}
- // TODO Ensure that this gets inlined: Use internal log interface and LTO.
- GTM_LB(addr, len);
+ tx->undolog.log(addr, len);
}
static void validate()
@@ -181,7 +180,7 @@ protected:
template <typename V> static void store(V* addr, const V value,
ls_modifier mod)
{
- if (unlikely(mod != WaW))
+ if (likely(mod != WaW))
pre_write(addr, sizeof(V));
// FIXME We would need an atomic store here but we can't just forge an
// atomic load for nonatomic data because this might not work on all
diff --git a/libitm/method-serial.cc b/libitm/method-serial.cc
index bf7982650ff..bdecd7b87b3 100644
--- a/libitm/method-serial.cc
+++ b/libitm/method-serial.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008, 2009, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth@redhat.com>.
This file is part of the GNU Transactional Memory Library (libitm).
@@ -107,8 +107,8 @@ class serial_dispatch : public abi_dispatch
protected:
static void log(const void *addr, size_t len)
{
- // TODO Ensure that this gets inlined: Use internal log interface and LTO.
- GTM_LB(addr, len);
+ gtm_thread *tx = gtm_thr();
+ tx->undolog.log(addr, len);
}
template <typename V> static V load(const V* addr, ls_modifier mod)
diff --git a/libitm/testsuite/libitm.c/reentrant.c b/libitm/testsuite/libitm.c/reentrant.c
index 451530a55ab..e8f49ba3e13 100644
--- a/libitm/testsuite/libitm.c/reentrant.c
+++ b/libitm/testsuite/libitm.c/reentrant.c
@@ -1,4 +1,4 @@
-/* { dg-do run { xfail *-*-* } }
+/* { dg-do run } */
/* { dg-options "-pthread" } */
/* Tests that new transactions can be started from both transaction_pure and
@@ -36,7 +36,7 @@ int __attribute__((transaction_unsafe)) unsafe(int i)
static void *thread (void *dummy __attribute__((unused)))
{
__transaction_atomic {
- pure(1);
+ pure(x);
}
__transaction_relaxed {
unsafe(1);
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 1e8f64bb72b..a2d2107a05a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,6376 +1,36 @@
-2012-01-03 François Dumont <fdumont@gcc.gnu.org>
+2012-01-08 Jonathan Wakely <jwakely.gcc@gmail.com>
- * include/bits/hashtable_policy.h (_Ebo_helper<>): Rename to the more
- specific _Hashtable_ebo_helper. Hide this implementation detail thanks
- to private inheritance.
-
-2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/51738
- * testsuite/23_containers/map/element_access/39901.cc: New.
-
-2011-12-30 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/extensions.xml: Improve markup and note that some
- extensions are included in C++11.
- * doc/xml/manual/concurrency_extensions.xml: Likewise.
-
-2011-12-30 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/51711
- * include/bits/regex.h (regex_replace): Fix thinko.
- * testsuite/28_regex/algorithms/regex_replace/char/51711.cc: New.
- * testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc:
- Likewise.
-
-2011-12-29 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/hashtable_policy.h (struct _Ebo_helper<>): Don't use
- _N, badname on Solaris; minor stylistic changes.
-
-2011-12-29 François Dumont <fdumont@gcc.gnu.org>
-
- PR libstdc++/51608
- * include/bits/hashtable_policy.h (_Equal_helper<>): New, change the
- way the _Equal functor is used depending on whether hash code is
- cached or not.
- (_Ebo_helper<>): New helper type to introduce EBO when possible.
- (_Hash_code_base): Use _Ebo_helper to limit memory footprint. Move
- _Equal functor management...
- (_Hashtable_base): ...here, new, use _Equal_helper.
- (_Local_iterator_base<>, _Local_iterator<>, _Local_const_iterator<>):
- New, use _Hash_code_base, implementation of...
- * include/bits/hashtable.h (_Hashtable<>::local_iterator,
- _Hashtable<>::const_local_iterator): ...those. Add static assertions
- checking that some functors are empty depending on whether hash code
- is cache or not.
- (_Hashtable<>::_M_bucket_index): New overloads using current bucket
- count, use through out the _Hastable<> implementation.
- * include/bits/unordered_set.h (__unordered_set<>,
- __unordered_multiset<>): Cache hash code iff hash functor is not
- empty and not final.
- * include/bits/unordered_map.h (__unordered_map<>,
- __unordered_multimap<>): Likewise.
- * include/debug/unordered_map
- (unordered_map<>::_S_to_local, unordered_multimap<>::_S_to_local):
- Adapt to match new local iterator implementation.
- * include/debug/unordered_set (unordered_set<>::_S_to_local,
- unordered_multiset<>::_S_to_local): Likewise.
- * include/profile/unordered_map (unordered_map<>::_M_profile_destruct,
- unordered_multimap<>::_M_profile_destruct): Enhance thanks to usage of
- local iterators.
- * include/profile/unordered_set (unordered_set<>::_M_profile_destruct,
- unordered_multiset<>::_M_profile_destruct): Likewise.
- * testsuite_files/23_containers/unordered_set/instantiation_neg.cc:
- Fix error line.
- * testsuite_files/23_containers/unordered_set/final_hash.cc: New.
- * testsuite_files/23_containers/unordered_multiset/final_hash.cc: New.
- * testsuite_files/23_containers/unordered_map/final_hash.cc: New.
- * testsuite_files/23_containers/unordered_multimap/final_hash.cc: New.
-
-2011-12-29 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/51701
- * doc/xml/manual/extensions.xml (Input and Output): Remove reference
- to RWLock class.
-
-2011-12-23 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/tr1/2_general_utilities/shared_ptr/cons/
- weak_ptr_expired.cc: Modify to PASS instead of XFAIL.
-
-2011-12-23 Kai Tietz <ktietz@redhat.com>
-
- * config/os/mingw32-w64/os_defines.h (__USE_MINGW_ANSI_STDIO): Define.
-
-2011-12-23 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/c_global/cinttypes: Update comments that refer to TR1.
-
-2011-12-23 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/49204
- * include/std/future (future_errc): Implement LWG 2056.
-
-2011-12-23 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/regex.h (match_results::size_type): Use
- allocator_traits.
-
-2011-12-22 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/48362
- * testsuite/libstdc++-prettyprinters/48362.cc: New.
-
-2011-12-22 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/48362
- * python/libstdcxx/v6/printers.py (StdTuplePrinter): Handle empty
- tuples.
-
-2011-12-20 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/51365
- * include/std/tuple (_Tuple_impl): Check __is_final as well as
- is_empty.
- * testsuite/20_util/tuple/51365.cc: New.
-
-2011-12-19 Benjamin Kosnik <bkoz@redhat.com>
-
- * libsupc++/eh_tm.cc (free_any_cxa_exception): Use
- __GCC_ATOMIC_INT_LOCK_FREE, not _GLIBCXX_ATOMIC_BUILTINS_4.
-
-2011-12-19 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/performance/25_algorithms/search_n.cc: Disambiguate
- local variable.
-
-2011-12-18 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/iterators.xml: Replace "sect1" with "section".
- * doc/xml/manual/algorithms.xml: Likewise.
- * doc/html/manual/iterators.html: Likewise.
- * doc/html/manual/algorithms.html: Likewise.
-
-2011-12-15 Paolo Carlini <paolo.carlini@oracle.com>
- Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/51558
- * include/bits/functional_hash.h (struct hash): Add static_assert.
- * src/compatibility-c++0x.cc: Adjust compatibility definitions.
- * testsuite/23_containers/unordered_map/erase/51142.cc: Adjust.
- * testsuite/23_containers/unordered_set/erase/51142.cc: Likewise.
- * testsuite/23_containers/unordered_multimap/erase/51142.cc: Likewise.
- * testsuite/23_containers/unordered_multiset/erase/51142.cc: Likewise.
-
-2011-12-15 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/22_locale/num_put/put/char/9780-2.cc: Add test for "C"
- locale, add sanity checks in case of grouping.
-
-2011-12-15 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/51540
- * include/bits/stl_numeric.h (partial_sum): Adjust doxygen comments.
-
-2011-12-12 Paolo Carlini <paolo.carlini@oracle.com>
-
- Revert:
- 2011-12-12 Kai Tietz <ktietz@redhat.com>
-
- PR libstdc++/51135
- * libsupc++/cxxabi.h (__cxa_dtor_type): New type.
- (__cxa_throw): Use it for destructor-argument.
- * libsupc++/eh_throw.cc (__cxa_throw): Likewise.
- * libsupc++/unwind-cxx.h (__cxa_exception): Change type of member
- exceptionDestructor to __cxa_dtor_type.
- * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_THISCALL_ON_DTOR):
- Define.
- (__cxa_dtor_type): Declare target secific type variant.
- * config/os/mingw32/os_defines.h: Likewise.
-
-2011-12-12 Kai Tietz <ktietz@redhat.com>
-
- PR libstdc++/51135
- * libsupc++/cxxabi.h (__cxa_dtor_type): New type.
- (__cxa_throw): Use it for destructor-argument.
- * libsupc++/eh_throw.cc (__cxa_throw): Likewise.
- * libsupc++/unwind-cxx.h (__cxa_exception): Change type of member
- exceptionDestructor to __cxa_dtor_type.
- * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_THISCALL_ON_DTOR):
- Define.
- (__cxa_dtor_type): Declare target secific type variant.
- * config/os/mingw32/os_defines.h: Likewise.
-
-2011-12-11 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/abi.xml: Replace gcc-x.y.z with GCC x.y.z or x.y,
- remove excessive duplication of version information.
- * doc/html/*: Regenerate.
-
-2011-12-10 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/doxygen/user.cfg.in: Add macros, directories.
- * include/bits/locale_classes.h: Remove doxygen warnings, fix markup.
- * include/bits/locale_classes.tcc: Same.
- * include/bits/shared_ptr.h: Same.
- * include/bits/stl_algo.h: Same.
- * include/bits/stl_list.h: Same.
- * include/bits/stl_numeric.h: Same.
- * include/debug/safe_base.h: Same.
- * include/parallel/equally_split.h: Same.
- * include/std/bitset: Same.
- * include/std/complex: Same.
- * include/std/fstream: Same.
- * include/std/istream: Same.
- * include/std/ostream: Same.
- * include/tr2/dynamic_bitset: Same.
- * scripts/run_doxygen: Remove munging for names that no longer exist.
-
- * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
- Adjust line numbers.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_1_neg.cc: Same.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_2_neg.cc: Same.
- * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
-
-2011-12-10 François Dumont <fdumont@gcc.gnu.org>
-
- * include/profile/unordered_set: Minor formatting changes.
- (unordered_set<>::_M_profile_destruct,
- unordered_multiset<>::_M_profile_destruct): Fix implementation to not
- rely on normal implementation details anymore.
- (unordered_set<>::_M_profile_resize,
- unordered_multiset<>::_M_profile_resize): Implement consistently
- accross all unordered containers.
- (unordered_set<>::emplace, unordered_set<>::emplace_hint,
- unordered_multiset<>::emplace, unordered_multset<>::emplace_hint): Add
- to signal rehash to profiling system.
- * include/profile/unordered_map: Likewise for unordered_map<> and
- unordered_multimap<>.
-
-2011-12-09 François Dumont <fdumont@gcc.gnu.org>
-
- PR libstdc++/44436 (unordered containers emplace, emplace_hint bits)
- * include/bits/hashtable.h (_Hashtable<>::emplace,
- _Hashtable<>::emplace_hint): Add.
- * include/debug/unordered_set (unordered_set<>::emplace,
- unordered_set<>::emplace_hint, unordered_multiset<>::emplace,
- unordered_multiset<>::emplace_hint): Add.
- * include/profile/unordered_set: Likewise.
- * include/debug/unordered_map (unordered_map<>::emplace,
- unordered_map<>::emplace_hint, unordered_multimap<>::emplace,
- unordered_multimap<>::emplace_hint): Add.
- * include/profile/unordered_map: Likewise.
- * testsuite/23_containers/unordered_map/modifiers/emplace.cc: New.
- * testsuite/23_containers/unordered_multimap/modifiers/emplace.cc:
- New.
- * testsuite/23_containers/unordered_set/modifiers/emplace.cc: New.
- * testsuite/23_containers/unordered_multiset/modifiers/emplace.cc:
- New.
- * testsuite/util/testsuite_container_traits.h
- (traits_base::has_emplace): Add and defined as std::true_type for
- unordered containers.
- * testsuite/util/exception/safety.h (emplace, emplace_hint): Add and
- use them in basic_safety exception test case.
- * doc/xml/manual/status_cxx2011.xml: Update unordered containers
- status.
-
-2011-12-08 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/atomic_base.h (__calculate_memory_order): Rename to...
- (__cmpexch_failure_order): This, and rewrite as constexpr function.
- (compare_exchange_strong, compare_exchange_weak): Use it.
- * include/std/atomic (compare_exchange_strong, compare_exchange_weak):
- Likewise.
-
-2011-12-07 François Dumont <fdumont@gcc.gnu.org>
-
- PR libstdc++/51386
- * include/bits/hashtable_policy.h (_Prime_rehash_policy::_M_next_bkt):
- Fix computation of _M_prev_resize so that hashtable do not keep on
- being rehashed when _M_max_load_factor is lower than 1.
-
-2011-12-06 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/51438
- * libsupc++/nested_exception.h (nested_exception::~nested_exception):
- Declare noexcept.
- * libsupc++/nested_exception.cc: Adjust.
- * testsuite/18_support/nested_exception/51438.cc: New.
- * testsuite/18_support/nested_exception/throw_with_nested.cc: Adjust.
- * testsuite/18_support/nested_exception/rethrow_if_nested.cc:
- Likewise.
-
- * src/shared_ptr.cc: Use noexcept where appropriate.
- * include/std/system_error: Likewise.
- * include/std/functional: Likewise.
- * include/bits/shared_ptr_base.h: Likewise.
- * src/stdexcept.cc: Use _GLIBCXX_USE_NOEXCEPT where appropriate.
- * include/std/stdexcept: Likewise.
- * libsupc++/bad_cast.cc: Likewise.
- * libsupc++/bad_typeid.cc: Likewise.
- * libsupc++/eh_exception.cc: Likewise.
- * libsupc++/typeinfo: Likewise.
- * libsupc++/exception: Likewise.
- * libsupc++/eh_ptr.cc: Likewise.
- * libsupc++/bad_alloc.cc: Likewise.
- * libsupc++/exception_ptr.h: Likewise.
-
- * include/std/chrono: Use noexcept where appropriate.
- * src/chrono.cc: Likewise.
-
-2011-12-06 Jonathan Wakely <jwakely.gcc@gmail.com>
- Chris Jefferson <chris@bubblescope.net>
-
- PR libstdc++/51183
- * include/std/stl_pair.h (pair<>::__cons, pair<>::__do_cons): Remove.
- (pair<>::pair(piecewise_construct_t, tuple<>, tuple<>): Only declare.
- (pair<>::pair(tuple<>&, tuple<>&, _Index_tuple<>, _Index_tuple<>)):
- Declare.
- * include/std/tuple (pair<>::__cons, pair<>::__do_cons): Remove.
- (pair<>::pair(tuple<>&, tuple<>&, _Index_tuple<>, _Index_tuple<>)):
- Define.
- (pair<>::pair(piecewise_construct_t, tuple<>, tuple<>): Define,
- delegating to the latter.
- * testsuite/20_util/pair/piecewise2.cc: New.
-
-2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
-
- * libsupc++/initializer_list: Do not declare anything if
- __GXX_EXPERIMENTAL_CXX0X__ is not defined.
-
-2011-12-04 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/type_traits: Doxygen improvements.
- * include/bits/move.h: Likewise.
- * include/tr1/type_traits: Likewise.
- * include/tr2/type_traits: Likewise.
- * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
- line numbers
- * testsuite/20_util/forward/c_neg.cc: Likewise.
- * testsuite/20_util/forward/f_neg.cc: Likewise.
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
- Likewise.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
- Likewise.
-
-2011-12-04 Markus Trippelsdorf <markus@trippelsdorf.de>
- Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/stl_heap.h (pop_heap): Check for non-empty range in
- overload taking a predicate.
- * testsuite/25_algorithms/pop_heap/empty2_neg.cc: New.
-
-2011-12-03 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/debug/macros.h (__glibcxx_check_non_empty_range): Define.
- * include/debug/debug.h (__glibcxx_requires_non_empty_range): Define.
- * include/debug/formatter.h (__msg_non_empty_range): Add.
- * src/debug.cc: Message text for __msg_non_empty_range.
- * include/bits/stl_heap.h (pop_heap): Check for non-empty range.
- * testsuite/25_algorithms/pop_heap/empty_neg.cc: New.
-
-2011-12-03 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/utilities.xml: Remove outdated text.
-
-2011-12-02 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/iomanip (put_money): Fix thinko, use __err local,
- like in, eg, basic_ostream::_M_insert.
-
-2011-11-30 Benjamin Kosnik <bkoz@redhat.com>
-
- * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Remove
- size-specific macros. _GLIBCXX_ATOMIC_BUILTINS_1,
- _GLIBCXX_ATOMIC_BUILTINS_2, _GLIBCXX_ATOMIC_BUILTINS_4,
- _GLIBCXX_ATOMIC_BUILTINS_8. Use _GLIBCXX_ATOMIC_BUILTINS to
- indicate use of C++11 atomic builtins.
- * config.h.in: Regenerate.
- * configure: Regenerate.
- * include/Makefile.am (bits_sup_headers): Add atomic_lockfree_defines.h.
- * include/Makefile.in: Regenerate.
- * libsupc++/Makefile.am: Compile C++11 support with -std=gnu++0x.
- * libsupc++/Makefile.in: Regenerate.
-
- * include/bits/atomic_base.h: Move lock-free property macros...
- * libsupc++/atomic_lockfree_defines.h: ...here.
- * include/std/future: Use C++11 macros.
- * libsupc++/eh_ptr.cc: Same.
- * libsupc++/eh_throw.cc: Same.
- * libsupc++/exception: Same.
- * libsupc++/exception_ptr.h: Same.
- * libsupc++/guard.cc: Same.
- * libsupc++/nested_exception.cc: Same.
- * libsupc++/nested_exception.h: Same.
- * src/future.cc: Same.
-
- * include/ext/atomicity.h: Use _GLIBCXX_ATOMIC_BUILTINS.
-
- * doc/doxygen/user.cfg.in: Adjust.
- * doc/xml/manual/concurrency_extensions.xml: Add note.
-
- * testsuite/18_support/exception_ptr/lifespan.cc: Tweak.
- * testsuite/lib/libstdc++.exp: Same.
-
-2011-11-29 François Dumont <fdumont@gcc.gnu.org>
-
- * include/bits/hashtable.h (_Hashtable<>::_M_rehash): Remove code
- useless now that the hashtable implementation put the hash code in
- cache if the hash functor throws.
- * testsuite/23_containers/unordered_set/erase/1.cc: Enhance test by
- checking also distance between begin and end iterators to validate
- underlying data model.
- * testsuite/23_containers/unordered_multiset/erase/1.cc: Likewise.
- * testsuire/23_containers/unordered_map/erase/1.cc: Likewise.
- * testsuite/23_containers/unordered_multimap/erase/1.cc: Likewise.
- * testsuite/23_containers/unordered_multiset/erase/2.cc: New.
- * testsuite/23_containers/unordered_multimap/erase/2.cc: New.
-
-2011-11-28 Andrew MacLeod <amacleod@redhat.com>
-
- * include/bits/atomic_base.h (ATOMIC_*_LOCK_FREE): Use new cpp
- predefined macros.
- * testsuite/29_atomics/headers/atomic/macros.cc: Add BOOL and POINTER
- macro checks. Check for expected compile time values.
-
-2011-11-28 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/51288
- * include/std/iomanip (get_money, put_money): Use sentry.
- * testsuite/27_io/manipulators/extended/get_money/char/51288.cc: New.
- * testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc:
- Likewise.
- * testsuite/27_io/manipulators/extended/put_money/char/51288.cc:
- Likewise.
- * testsuite/27_io/manipulators/extended/put_money/wchar_t/51288.cc:
- Likewise.
-
-2011-11-27 Gerald Pfeifer <gerald@pfeifer.com>
-
- * doc/xml/manual/using.xml (Prerequisites): Refer to x86 instead
- of i386.
-
-2011-11-27 Gerald Pfeifer <gerald@pfeifer.com>
-
- * scripts/run_doxygen (problematic): Change Linux reference to
- GNU/Linux.
-
-2011-11-26 Gerald Pfeifer <gerald@pfeifer.com>
-
- * doc/xml/manual/abi.xml (Prerequisites): Refer to GNU/Linux.
- Fix reference to GCC.
-
-2011-11-26 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/51296
- * testsuite/30_threads/thread/native_handle/typesizes.cc: Do not run
- on alpha*-*-osf*.
- * testsuite/30_threads/future/cons/constexpr.cc: Disable debug
- symbols.
- * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
-
-2011-11-23 François Dumont <fdumont@gcc.gnu.org>
-
- PR libstdc++/41975
- * include/bits/hashtable.h (_Hashtable<>): Major data model
- modification to limit performance impact of empty buckets in
- erase(iterator) implementation.
- * include/bits/hashtable_policy.h (_Hashtable_iterator,
- _Hashtable_const_iterator): Remove not used anymore.
- * include/bits/hashtable_policy.h (_Prime_rehash_policy): Remove
- _M_grow_factor, just use natural evolution of prime numbers. Add
- _M_prev_size to know when the number of buckets can be reduced.
- * include/bits/unordered_set.h (__unordered_set<>,
- __unordered_multiset<>), unordered_map.h (__unordered_map<>,
- __unordered_multimap<>): Change default value of cache hash code
- template parameter, false for integral types with noexcept hash
- functor, true otherwise.
- * include/debug/unordered_map, unordered_set: Adapt transformation
- from iterator/const_iterator to respectively
- local_iterator/const_local_iterator.
- * testsuite/performance/23_containers/copy_construct/unordered_set.cc:
- New.
- * testsuite/23_containers/unordered_set/instantiation_neg.cc: New.
- * testsuite/23_containers/unordered_set/hash_policy/rehash.cc: New.
- * testsuite/23_containers/unordered_multiset/cons/copy.cc: New.
- * testsuite/23_containers/unordered_multiset/erase/1.cc,
- 24061-multiset.cc: Add checks on the number of bucket elements.
- * testsuite/23_containers/unordered_multiset/insert/multiset_range.cc,
- multiset_single.cc, multiset_single_move.cc: Likewise.
-
-2011-11-21 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/functional (is_placeholder, is_bind_expression): Add
- partial specializations for cv-qualified types.
- * include/tr1/functional (is_placeholder, is_bind_expression): Add
- partial specializations for std::bind and std::placeholders and for
- cv-qualified types.
- * testsuite/20_util/bind/cv_quals_3.cc: New.
- * testsuite/tr1/3_function_objects/bind/cv_quals.cc: New.
- * testsuite/tr1/3_function_objects/bind/mixed.cc: New.
-
-2011-11-21 Andreas Tobler <andreast@fgznet.ch>
-
- * configure: Regenerate.
-
-2011-11-21 Daniel Krugler <daniel.kruegler@googlemail.com>
-
- PR libstdc++/51185
- * include/std/type_traits (__is_base_to_derived_ref,
- __is_lvalue_to_rvalue_ref): Fix.
- * testsuite/20_util/is_constructible/51185.cc: New.
- * testsuite/20_util/is_constructible/value-2.cc: Extend.
- * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
- line number.
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
- Likewise.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
- Likewise.
-
-2011-11-21 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/tuple (__conv_types, __one_by_one_convertible,
- __all_convertible): Remove.
- (tuple<>::tuple(_UElements&&...),
- tuple<>::tuple(const tuple<_UElements...>&),
- tuple<>::tuple(tuple<_UElements...>&&)): Remove wa for c++/48322.
- * testsuite/20_util/uses_allocator/cons_neg.cc: Adjust dg-error
- line number.
-
-2011-11-20 Jason Merrill <jason@redhat.com>
-
- PR c++/48322
- * include/std/tuple (tuple(_UElements&&...)): Fix SFINAE.
-
- * testsuite/20_util/bind/ref_neg.cc: Adjust error markings.
-
-2011-11-20 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/backward/binders.h: Fix examples in doxygen comments and
- suggest using std::bind instead.
-
-2011-11-20 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/status_cxx2011.xml: Fix docbook markup.
-
-2011-11-20 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/appendix_contributing.xml: Do not use "here" as link
- text.
- * doc/xml/faq.xml: Likewise. Do not request standard library issues
- to be reported to the libstdc++ mailing list.
- * doc/xml/manual/status_cxx2011.xml: Document implementation-defined
- behaviour.
- * doc/xml/manual/status_cxxtr1.xml: Likewise.
- * doc/xml/manual/utilities.xml: Fix grammar, probably caused by a
- global search and replace of "part" by "chapter".
- * doc/xml/manual/shared_ptr.xml: Remove outdated information.
- * doc/xml/manual/messages.xml: Be more specific about systems where
- using 'int' for catalog handle is not a problem, mention LWG issue.
-
-2011-11-19 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/debug/bitset (operator[](size_t) const): Declare constexpr.
- * include/profile/bitset: Likewise.
- * testsuite/23_containers/bitset/operations/constexpr.cc: Split out
- non portable bits to...
- * testsuite/23_containers/bitset/operations/constexpr-2.cc: ... here.
-
-2011-11-18 Harti Brandt <hartmut.brandt@dlr.de>
-
- PR libstdc++/51209
- * include/bits/hashtable.h (_Hashtable<>::_M_find_node): Return
- nullptr when no node is found.
- * include/tr1/hashtable.h (_Hashtable<>::_M_find_node): Return
- zero when no node is found.
-
-2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
-
- * src/hash-long-double-aux.cc: Rename to...
- * src/hash-long-double-tr1-aux.cc: ... this.
- * src/compatibility-ldbl.cc: Adjust.
- * src/hash_tr1.cc: Likewise.
- * src/hash_c++0x.cc: Don't use src/hash-long-double-aux.cc.
- * include/bits/functional_hash.h (hash<_Tp*>::operator(), specs
- for integer types, hash<float>::operator(), hash<double>::operator(),
- hash<long double>::operator()): Declare noexcept.
- * include/debug/bitset (hash<__debug::bitset>::operator()): Likewise.
- * include/debug/vector (hash<__debug::vector>::operator()): Likewise.
- * include/std/system_error (hash<error_code>::operator()): Likewise.
- * include/std/thread (hash<thread::id>::operator()): Likewise.
- * include/std/bitset (hash<bitset>::operator()): Likewise.
- * include/std/typeindex (hash<type_index>::operator()): Likewise.
- * include/profile/bitset (hash<__profile::vector>::operator()):
- Likewise.
- * include/profile/vector (hash<__profile::vector>::operator()):
- Likewise.
- * include/ext/vstring.h (hash<__vstring>::operator(),
- hash<__wvstring>::operator(), hash<__u16vstring>::operator(),
- hash<__u32vstring>::operator()): Likewise.
- * include/bits/shared_ptr.h (hash<shared_ptr>::operator()): Likewise.
- * include/bits/shared_ptr_base.h (hash<__shared_ptr>::operator()):
- Likewise.
- * include/bits/unique_ptr.h (hash<unique_ptr>::operator()): Likewise.
- * include/bits/basic_string.h (hash<string>::operator(),
- hash<wstring>::operator(), hash<u16string>::operator(),
- hash<u32string>::operator()): Likewise.
- * include/bits/vector.tcc (hash<vector>::operator()): Likewise.
- * include/bits/stl_bvector.h (hash<vector>::operator()): Likewise.
- * libsupc++/typeinfo (type_info::hash_code): Use noexcept instead of
- throw().
-
-2011-11-17 Richard Henderson <rth@redhat.com>
-
- PR libstdc++/51181
- * libsupc++/eh_tm.cc (free_any_cxa_exception): Protect the use
- of __sync_sub_and_fetch with _GLIBCXX_ATOMIC_BUILTINS_4.
-
-2011-11-18 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/30_threads/thread/native_handle/typesizes.cc: Do not run
- on darwin.
-
-2011-11-17 Jason Merrill <jason@redhat.com>
-
- * testsuite/21_strings/basic_string/cons/char/moveable2.cc
- (tstring): Add defaulted move assignment.
- * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
- (tstring): Add defaulted move assignment.
- * testsuite/util/testsuite_tr1.h (NoexceptMoveConsClass): Add
- defaulted move assignment operator.
- (NoexceptMoveAssignClass): Add defaulted move constructor.
-
-2011-11-17 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/status_cxx2011.xml: Status of piecewise construction
- and ios_base::failure.
- * doc/xml/manual/backwards_compatibility.xml: List headers in
- alphabetical order.
-
-2011-11-16 Andrew MacLeod <amacleod@redhat.com>
-
- PR libstdc++/51102
- * include/bits/atomic_base.h (ATOMIC_BOOL_LOCK_FREE,
- ATOMIC_POINTER_LOCK_FREE): New. Add missing macros.
-
-2011-11-15 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/51142
- * include/debug/unordered_map (unordered_map<>::erase(iterator),
- unordered_multimap<>::erase(iterator)): Add, consistently with
- LWG 2059.
- * include/debug/unordered_set (unordered_set<>::erase(iterator),
- unordered_multiset<>::erase(iterator)): Likewise.
- * include/debug/map.h (map<>::erase(iterator)): Likewise.
- * include/debug/multimap.h (multimap<>::erase(iterator)): Likewise.
- * include/profile/map.h (map<>::erase(iterator)): Likewise.
- * include/profile/multimap.h (multimap<>::erase(iterator)): Likewise.
- * include/bits/hashtable.h (_Hashtable<>::erase(iterator)): Likewise.
- * include/bits/stl_map.h (map<>::erase(iterator)): Likewise.
- * include/bits/stl_multimap.h (multimap<>::erase(iterator)): Likewise.
- * include/bits/stl_tree.h (_Rb_tree<>::erase(iterator)): Likewise.
- * testsuite/23_containers/unordered_map/erase/51142.cc: New.
- * testsuite/23_containers/multimap/modifiers/erase/51142.cc: Likewise.
- * testsuite/23_containers/set/modifiers/erase/51142.cc: Likewise.
- * testsuite/23_containers/unordered_multimap/erase/51142.cc: Likewise.
- * testsuite/23_containers/unordered_set/erase/51142.cc: Likewise.
- * testsuite/23_containers/multiset/modifiers/erase/51142.cc: Likewise.
- * testsuite/23_containers/unordered_multiset/erase/51142.cc: Likewise.
- * testsuite/23_containers/map/modifiers/erase/51142.cc: Likewise.
-
-2011-11-15 Jason Dick <dickphd@gmail.com>
-
- PR libstdc++/51133
- * include/tr1/poly_hermite.tcc (__poly_hermite_recursion): Fix
- wrong sign in recursion relation.
-
-2011-11-14 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/c_global/cmath (frexp, modf, remquo): Do not mark constexpr,
- not viable anyway due to the pointer parameter.
-
-2011-11-13 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/c_global/cmath (atan2, fmod, pow, copysign, fdim,
- fma, fmax, fmin, hypot, nextafter, remainder, remquo): Simplify
- constraining on the return type.
- * include/tr1/cmath (copysign, fdim, fma, fmax, fmin, hypot,
- nextafter, remainder, remquo): Likewise.
-
-2011-11-13 Gerald Pfeifer <gerald@pfeifer.com>
-
- * using.xml: Use GNU/Linux.
-
-2011-11-12 Jason Merrill <jason@redhat.com>
-
- PR c++/51060
- * testsuite/25_algorithms/max/1.cc (test01): Drop references.
- * testsuite/25_algorithms/min/1.cc (test01): Drop references.
- * testsuite/25_algorithms/minmax/1.cc (test01): Drop references.
-
-2011-11-12 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/51083
- * include/ext/type_traits.h (__promote): Only define __type member
- for integral and floating point types, to prevent math functions
- participating in overload resolution for other types.
- (__promote_2, __promote_3, __promote_4): Use __promote in default
- template argument values, so deduction only succeeds for integral and
- floating point types.
- * testsuite/26_numerics/cmath/51083.cc: New.
- * testsuite/26_numerics/complex/51083.cc: New.
- * testsuite/tr1/8_c_compatibility/cmath/51083.cc: New.
- * testsuite/tr1/8_c_compatibility/complex/51083.cc: New.
-
-2011-11-10 Andrew MacLeod <amacleod@redhat.com>
-
- PR middle-end/51038
- * include/bits/atomic_base.h (atomic_thread_fence): Call built-in.
- (atomic_signal_fence): Call built-in.
- (test_and_set, clear): Call new atomic built-ins.
-
-2011-11-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/allocator.h (__shrink_to_fit_aux::_S_do_it): Create
- the new object with the same allocator.
- * testsuite/23_containers/vector/capacity/shrink_to_fit2.cc: New.
-
-2011-11-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/profile/unordered_map: Add missing copy constructors.
- * include/profile/unordered_set: Likewise.
-
-2011-11-09 Dodji Seketeli <dodji@redhat.com>
-
- PR c++/51027
- * include/ext/pointer.h (rebind): Append missing ';'.
-
-2011-11-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/stl_vector.h (vector::_Alloc_traits): Make private.
- * include/debug/vector: Add allocator-extended constructors, ensure
- move assignment and swap have same allocator propagation semantics
- and exceptions specification as base class.
- * include/profile/vector: Likewise.
- (vector::push_back(_Tp&&)): Forward argument as rvalue.
- * testsuite/23_containers/vector/debug/alloc_prop.cc: New.
- * doc/xml/manual/status_cxx2011.xml: Clarify status of container
- requirements with respect to allocators.
- (status.iso.200x): Add anchor for old ID to preserve existing links.
-
-2011-11-08 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/shared_ptr_base.h (_Sp_counted_ptr): Make 'final'.
- (_Sp_counted_deleter): Make 'final'. Use allocator_traits.
- (_Sp_counted_ptr_inplace): Make 'final'. Use allocator_traits.
- Derive from _Sp_counted_ptr instead of _Sp_counted_deleter to use EBO
- for the allocator.
- (__shared_count, __shared_ptr): Use allocator_traits.
- * include/std/future (__future_base::_Result_alloc): Make 'final'. Use
- allocator traits.
- (__future_base::_Task_state): Make 'final'.
- (__future_base::_Deferred_state): Likewise.
- (__future_base::_Async_state): Likewise.
- * testsuite/20_util/shared_ptr/cons/alloc_min.cc: New.
- * testsuite/20_util/shared_ptr/creation/alloc_min.cc: New.
- * testsuite/20_util/shared_ptr/creation/private.cc: New.
- * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers.
- * testsuite/30_threads/packaged_task/cons/alloc_min.cc: New.
- * testsuite/30_threads/promise/cons/alloc_min.cc: New.
-
-2011-11-08 Paolo Carlini <paolo.carlini@oracle.com>
-
- * acinclude.m4 ([GLIBCXX_ENABLE_VISIBILITY]): Rename to
- [GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY], likewise for the
- option itself, to --enable-libstdcxx-visibility.
- * configure.ac: Adjust call.
- * doc/xml/manual/configure.xml: Update.
- * configure: Regenerate.
-
-2011-11-08 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/29_atomics/headers/atomic/macros.cc: Avoid -Wall
- warnings.
- * testsuite/29_atomics/atomic/cons/user_pod.cc: Likewise.
-
-2011-11-08 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/51018
- * testsuite/30_threads/thread/native_handle/typesizes.cc: Do not run
- on netbsd.
-
-2011-11-07 Aldy Hernandez <aldyh@redhat.com>
- Richard Henderson <rth@redhat.com>
-
- Merged from transactional-memory.
-
- * testsuite/util/testsuite_abi.cc (check_version): Add CXXABI_TM_1.
- * libsupc++/eh_tm.cc: New file.
- * libsupc++/unwind-cxx.h (__cxa_tm_cleanup): Declare.
- * config/abi/pre/gnu.ver: Export __cxa_tm_cleanup.
- * config/abi/pre/gnu-versioned-namespace.ver: Likewise.
- * libsupc++/Makefile.am (sources): Add eh_tm.cc.
- * libsupc++/Makefile.in: Rebuild.
-
-2011-11-07 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/51018
- * include/profile/impl/profiler_node.h (__stack_hash::
- operator()(__stack_t)): Just use std::size_t everywhere.
-
-2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/future (__future_base::_Ptr): Use alias-declaration.
- (__is_same_pkgdtask): Rename to __constrain_pkgdtask and use decay
- instead of remove_reference so that cv-quals are removed.
-
-2011-11-07 Ed Smith-Rowland <3dw4rd@verizon.net>
-
- * include/precompiled/stdc++.h: Add cstdalign.
-
-2011-11-07 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/complex (complex<>::real(), complex<>::imag()):
- Remove redundant const qualifiers.
-
-2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/ptr_traits.h (__rebind): Replace with...
- (rebind): Implement using alias-declaration.
- * include/ext/pointer.h (__rebind): Replace with...
- (rebind): Implement using alias-declaration.
- * include/bits/alloc_traits.h (__rebind_alloc, __rebind_traits):
- Replace with...
- (rebind_alloc, rebind_traits): Implement using alias-declaration.
- * include/ext/alloc_traits.h (rebind): Use rebind_alloc instead of
- __rebind_alloc.
- * include/std/scoped_allocator (rebind): Likewise.
-
-2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/mutex (call_once): Store closure in __once_functor
- as bound function wrapper might not be copyable.
-
-2011-11-07 Andrew MacLeod <amacleod@redhat.com>
-
- * include/bits/atomic_base.h (atomic_thread_fence): Revert.
- (atomic_signal_fence): Revert.
-
-2011-11-07 Andrew MacLeod <amacleod@redhat.com>
-
- * include/bits/atomic_base.h (atomic_thread_fence): Call builtin.
- (atomic_signal_fence): Call builtin.
- (atomic_flag::test_and_set): Call __atomic_exchange when it is lockfree,
- otherwise fall back to call __sync_lock_test_and_set.
- (atomic_flag::clear): Call __atomic_store when it is lockfree,
- otherwise fall back to call __sync_lock_release.
-
-2011-11-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- PR bootstrap/50982
- * include/Makefile.am (${host_builddir}/gthr-posix.h): Reflect
- gthr-posix.h move.
- * include/Makefile.in: Regenerate.
-
-2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * acinclude.m4 (GLIBCXX_CHECK_SC_NPROC_ONLN): Define.
- (GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP): Define.
- (GLIBCXX_CHECK_SYSCTL_HW_NCPU): Define.
- * configure.ac: Use new checks.
- * configure: Regenerate.
- * config.h.in: Regenerate.
- * src/thread.cc: Check new config macros.
- * testsuite/lib/libstdc++.exp: Likewise.
-
-2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * config/abi/pre/gnu.ver: Fix exports for string::pop_back.
-
-2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * acinclude.m4: Check for <stdalign.h>
- * configure: Regenerate.
- * config.h.in: Likewise.
- * include/Makefile.am: Add <cstdalign>.
- * include/Makefile.in: Regenerate.
- * include/c_global/cstdalign: New.
- * testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: New.
- * doc/xml/manual/backwards_compatibility.xml: Update.
- * doc/xml/manual/status_cxx2011.xml: Update.
-
-2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/50982
- * include/std/mutex (__once_proxy): Use void parameter list to
- work on implicit extern "C" systems.
-
-2011-11-07 Xinliang David Li <davidxl@google.com>
-
- * include/backward/hashtable.h: Make __stl_prime_list
- in comdat section.
-
-2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/basic_string.h (basic_string::at): Move adjacent to other
- overload.
- (basic_string::pop_back): Define.
- * include/debug/string (__gnu_debug::basic_string::pop_back): Likewise.
- * include/ext/vstring.h (__versa_string::pop_back): Likewise.
- * config/abi/pre/gnu.ver: Add new symbols.
- * testsuite/21_strings/basic_string/modifiers/char/pop_back.cc: New.
- * testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc: New.
- * testsuite/21_strings/basic_string/range_access.cc: Split to ...
- * testsuite/21_strings/basic_string/range_access/char/1.cc: Here and ...
- * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc: Here.
- * testsuite/ext/vstring/modifiers/char/pop_back.cc: New.
- * testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc: New.
-
-2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/backwards_compatibility.xml: Fix autoconf tests for
- C++11 compiler features and library headers. Add stable id
- attributes. Use <filename> element for headers and surround in angle
- brackets. Use <classname> for classes.
- * doc/html/*: Regenerate.
-
-2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/status_cxx2011.xml: Document <cuchar> and
- <cstdalign> as missing.
-
-2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/faq.xml: Replace references to C++0x with C++11.
- * doc/xml/manual/intro.xml: Likewise.
- * doc/xml/manual/backwards_compatibility.xml: Likewise.
- * doc/xml/manual/shared_ptr.xml: Likewise.
- * doc/xml/manual/configure.xml: Likewise.
- * doc/xml/manual/evolution.xml: Likewise.
- * doc/xml/manual/using.xml: Likewise.
- * doc/xml/manual/strings.xml: Likewise.
- * doc/xml/manual/debug_mode.xml: Likewise.
- * doc/xml/manual/policy_data_structures.xml: Likewise.
- * doc/xml/manual/extensions.xml: Likewise.
- * doc/xml/manual/diagnostics.xml: Likewise.
- * doc/xml/manual/test.xml: Likewise.
- * doc/xml/manual/status_cxx200x.xml: Likewise, and rename to...
- * doc/xml/manual/status_cxx2011.xml: Here.
- * doc/Makefile.am: Rename status_cxx200x.xml.
- * doc/Makefile.in: Regenerate.
- * doc/html/*: Regenerate.
-
-2011-11-06 François Dumont <fdumont@gcc.gnu.org>
-
- * testsuite/performance/23_containers/insert_erase/41975.cc: Add
- tests to check performance with or without cache of hash code and with
- string type that has a costlier hash functor than int type.
-
-2011-11-06 Benjamin Kosnik <bkoz@redhat.com>
- Andrew MacLeod <amacleod@redhat.com>
-
- Merged from cxx-mem-model.
-
- * include/Makefile.am (bits_headers): Remove atomic_0.h, atomic_2.h.
- * include/Makefile.in: Regenerate.
- * src/Makefile.am (sources): Rename atomic.cc to
- compatibility-atomic-c++0x.cc.
- * src/Makefile.in: Regenerate.
- * include/bits/atomic_0.h: Remove.
- * include/bits/atomic_2.h: Incorporate into...
- * include/bits/atomic_base.h: ...this. Use new __atomic routines.
- * include/std/atomic: Add generic atomic calls to basic atomic class.
- * src/atomic.cc: Move...
- * src/compatibility-atomic-c++0x.cc: ...here.
- * src/compatibility-c++0x.cc: Tweak.
- * testsuite/29_atomics/atomic/cons/user_pod.cc: Fix.
- * testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc:
- Same.
- * testsuite/29_atomics/headers/atomic/macros.cc: Same.
-
-2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/test.xml: Fix dg-warning examples.
-
-2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/44436
- * doc/xml/manual/status_cxx200x.xml: Document emplace members are
- missing.
-
-2011-11-05 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/49894
- PR bootstrap/50982
- * include/std/mutex (once_flag): Use NSDMI.
-
-2011-11-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * scripts/run_doxygen: Fix sed quoting.
-
-2011-11-03 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/doxygen/doxygroups.cc: Add markup for namespace tr2.
- * include/tr2/bool_set: Adjust doxygen markup.
- * include/tr2/dynamic_bitset: Same.
- * include/tr2/type_traits: Same.
-
-2011-11-03 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/html/*: Regenerate.
-
-2011-11-02 Richard B. Kreckel <kreckel@ginac.de>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50880
- * include/std/complex (__complex_acosh): Fix in a better way,
- use Kahan's formula.
- * include/tr1/complex (__complex_acosh): Likewise.
-
-2011-11-02 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50951
- * include/bits/random.tcc (operator<<(basic_ostream<>&,
- const mersenne_twister_engine<>&): Output _M_p too.
- (operator<<(basic_ostream<>&, const
- subtract_with_carry_engine<>&): Likewise.
- (operator>>(basic_istream<>&, mersenne_twister_engine<>&):
- Reload it.
- (operator>>(basic_istream<>&, subtract_with_carry_engine<>&):
- Likewise.
- * include/bits/random.h (mersenne_twister_engine<>::operator==):
- Compare _M_p too.
- (subtract_with_carry_engine<>::operator==): Compare _M_carry
- and _M_p too.
- (shuffle_order_engine<>::operator==): Compare _M_v(s) and _M_y too.
- * testsuite/26_numerics/random/independent_bits_engine/
- operators/serialize.cc: Extend.
- * testsuite/26_numerics/random/subtract_with_carry_engine/
- operators/serialize.cc: Likewise.
- * testsuite/26_numerics/random/discard_block_engine/
- operators/serialize.cc: Likewise.
- * testsuite/26_numerics/random/mersenne_twister_engine/
- operators/serialize.cc: Likewise.
- * testsuite/26_numerics/random/linear_congruential_engine/
- operators/serialize.cc: Likewise.
- * testsuite/26_numerics/random/shuffle_order_engine/
- operators/serialize.cc: Likewise.
-
-2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * acinclude.m4 (GLIBCXX_CONFIGURE): Determine and substitute
- toplevel_builddir.
- (GLIBCXX_ENABLE_THREADS): Remove glibcxx_thread_h,
- HAVE_GTHR_DEFAULT, enable_thread.
- (GLIBCXX_CHECK_GTHREADS): Reflect gthr move to libgcc.
- * include/Makefile.am (thread_host_headers): Remove
- ${host_builddir}/gthr-tpf.h.
- (${host_builddir}/gthr.h): Reflect gthr move to libgcc.
- Use $<.
- (${host_builddir}/gthr-single.h): Likewise.
- (${host_builddir}/gthr-posix.h): Likewise.
- (${host_builddir}/gthr-tpf.h): Remove.
- (${host_builddir}/gthr-default.h): Likewise.
- * configure, config.h.in: Regenerate.
- * Makefile.in, doc/Makefile.in, include/Makefile.in,
- libsupc++/Makefile.in, po/Makefile.in, python/Makefile.in,
- src/Makefile.intestsuite/Makefile.in: Regenerate.
-
-2011-11-02 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/c++config: Add tr2 to versioned namespaces.
- * scripts/run_doxygen: Adjust generated man files as well.
- * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.
-
-2011-11-02 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/future (promise): Add constructors for uses-allocator
- construction from rvalue promise.
- (packaged_task): Implement LWG 2067. Add additional constructors for
- uses-allocator construction.
- * testsuite/30_threads/packaged_task/cons/3.cc: New.
- * testsuite/30_threads/packaged_task/cons/alloc2.cc: New.
- * testsuite/30_threads/promise/cons/alloc2.cc: New.
-
-2011-10-31 Jason Merrill <jason@redhat.com>
-
- * include/Makefile.am (install-freestanding-headers): Install
- c++0x_warning.h.
- * libsupc++/initializer_list: Include it.
-
-2011-10-31 Gerald Pfeifer <gerald@pfeifer.com>
-
- * acinclude.m4 (GLIBCXX_CONFIGURE): Refer to GNU/Linux.
- * configure: Regenerate.
-
-2011-10-31 Jason Merrill <jason@redhat.com>
-
- PR c++/50920
- * include/bits/c++0x_warning.h: Change -std=c++0x to -std=c++11.
-
-2011-10-30 Gerald Pfeifer <gerald@pfeifer.com>
-
- * prerequisites.xml: Refer to GCC (instead of gcc) and GNU/Linux.
- Remove an obsolete reference to a Red Hat release we do not
- support any longer.
- Refer to Debian GNU/Linux.
-
-2011-10-30 Gerald Pfeifer <gerald@pfeifer.com>
-
- * faq.xml (Who's in charge of it?): Refer to the Linux kernel
- instead of just Linux.
- (How do I install libstdc++?): Refer to GNU/Linux instead of
- just Linux.
-
-2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/30_threads/condition_variable_any/50862.cc: Trivial
- formatting fixes.
-
-2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/23_containers/unordered_map/operations/count.cc: New.
- * testsuite/23_containers/multimap/operations/count.cc: Likewise.
- * testsuite/23_containers/set/operations/count.cc: Likewise.
- * testsuite/23_containers/unordered_multimap/operations/count.cc:
- Likewise.
- * testsuite/23_containers/unordered_set/operations/count.cc: Likewise.
- * testsuite/23_containers/multiset/operations/count.cc: Likewise.
- * testsuite/23_containers/unordered_multiset/operations/count.cc:
- Likewise.
- * testsuite/23_containers/map/operations/count.cc: Likewise.
-
-2011-10-28 Richard B. Kreckel <kreckel@ginac.de>
-
- * include/std/complex (__complex_acosh): Just use '< _Tp()'.
- * include/tr1/complex (__complex_acosh): Likewise.
-
-2011-10-27 Richard B. Kreckel <kreckel@ginac.de>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50880
- * include/std/complex (__complex_acosh): Fix for __z.real() < 0.
- * include/tr1/complex (__complex_acosh): Likewise.
- * testsuite/26_numerics/complex/50880.cc: New.
- * testsuite/tr1/8_c_compatibility/complex/50880.cc: Likewise.
-
-2011-10-27 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/50862
- * include/std/condition_variable (condition_variable_any::wait): Avoid
- terminating if relocking user mutex throws during stack-unwinding.
- * testsuite/30_threads/condition_variable_any/50862.cc: Add dg-require.
-
-2011-10-25 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/condition_variable (condition_variable_any): Remove
- unused native_handle_type typedef.
- * src/condition_variable.cc (condition_variable): Add missing noexcept
- specifications.
- * testsuite/30_threads/condition_variable_any/requirements/
- typedefs.cc: Remove.
-
-2011-10-25 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/50862
- * include/std/condition_variable (condition_variable_any::wait): Fix
- deadlock and ensure _Lock::lock() is called on exit.
- (condition_variable_any::native_handle): Remove, as per LWG 1500.
- * testsuite/30_threads/condition_variable_any/50862.cc: New.
-
-2011-10-25 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/49894
- * include/std/mutex (__mutex_base,__recursive_mutex_base): Define new
- base classes to manage construction/destruction of native mutexes,
- using NSDMI when INIT macros are defined.
- (mutex,recursive_mutex,timed_mutex,recursive_timed_mutex): Derive from
- new base classes.
- * include/std/condition_variable (condition_variable): Use NSDMI when
- INIT macro is defined. Use noexcept.
- * src/condition_variable.cc (condition_variable): Explicitly-default
- constructor/destructor when using NSDMI. Use noexcept.
- (condition_variable_any): Likewise.
-
-2011-10-24 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/30_threads/async/49668.cc: Add missing dg-require.
- * testsuite/30_threads/packaged_task/49668.cc: Likewise.
-
-2011-10-22 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/50834
- * doc/xml/manual/using.xml: Update thread safety docs w.r.t. C++11.
-
-2011-10-22 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/50196
- * acinclude.m4 (GLIBCXX_HAS_GTHREADS): Don't depend on _POSIX_TIMEOUTS.
- * configure: Regenerate.
- * include/std/mutex (timed_mutex, recursive_timed_mutex): Define
- conditionally on GTHREADS_HAS_MUTEX_TIMEDLOCK.
- * testsuite/lib/libstdc++.exp (check_v3_target_gthreads_timed): Define.
- * testsuite/lib/dg-options.exp (dg-require-gthreads-timed): Define.
- * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
- Use dg-require-gthreads-timed instead of dg-require-gthreads.
- * testsuite/30_threads/recursive_timed_mutex/native_handle/
- typesizes.cc: Likewise.
- * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
- Likewise.
- * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
- Likewise.
- * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
- Likewise.
- * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
- Likewise.
- * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
- * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
- Likewise.
- * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
- Likewise.
- * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
- * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
- * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
- * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
- * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
- * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
- Likewise.
- * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
- Likewise.
- * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
- Likewise.
- * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
- * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
- Likewise.
- * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
- * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
- * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
- * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
- * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
- * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
- * testsuite/30_threads/timed_mutex/requirements/standard_layout.cc:
- Likewise.
- * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
- * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
- * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
- * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
- * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
- * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
- * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
- * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
- * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
- * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
- * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
- * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
-
-2011-10-19 Ed Smith-Rowland <3dw4rd@verizon.net>
-
- * include/tr2/bool_set (bool_set): New.
- * include/tr2/bool_set.tcc: New.
- * include/tr2/dynamic_bitset (dynamic_bitset): New.
- * include/tr2/ratio (kibi, mebi, gibi, tebi, pebi, exbi): New.
- * include/Makefile.am: Add files.
- * include/Makefile.in: Regenerate.
-
-2011-10-19 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/doxygen/user.cfg.in: Add tr2 files.
- * testsuite/tr2/headers/all.cc: New.
- * testsuite/tr2/headers/using_namespace_std_tr2.cc: New.
-
- * include/tr2/type_traits: Tweak.
-
-2011-10-18 Jason Merrill <jason@redhat.com>
-
- PR c++/50500
- * include/bits/shared_ptr.h: Default copy ctor and assignment.
- * testsuite/util/testsuite_allocator.h: Define copy assignment.
- * testsuite/util/testsuite_rvalref.h: Default copy assignment.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Remove note tags.
-
-2011-10-17 Michael Spertus <mike_spertus@symantec.com>
-
- * include/tr2/type_traits (bases, direct_bases, typelist): New.
-
-2011-10-17 Benjamin Kosnik <bkoz@redhat.com>
-
- * libstdc++-v3/include/Makefile.am: Add tr2 directory and includes.
- * libstdc++-v3/include/Makefile.in: Regenerate.
-
- * scripts/create_testsuite_files: Search tr2 directory.
- * testsuite/libstdc++-dg/conformance.exp: Same.
-
- * testsuite/tr2/bases/requirements/explicit_instantiation.cc: New.
- * testsuite/tr2/bases/requirements/typedefs.cc: New.
- * testsuite/tr2/bases/value.cc: New.
- * testsuite/tr2/direct_bases/requirements/
- explicit_instantiation.cc: New.
- * testsuite/tr2/direct_bases/requirements/typedefs.cc: New.
- * testsuite/tr2/direct_bases/value.cc: New.
-
-2011-10-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- PR bootstrap/50715
- * config/abi/pre/gnu.ver (CXXABI_1.3.6): Remove duplicate
- __cxa_get_exception_ptr.
-
-2011-10-14 François Dumont <francois.cppdevs@free.fr>
-
- * testsuite/performance/23_containers/insert_erase/41975.cc: New.
-
-2011-10-14 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/22_locale/codecvt_byname/50714.cc: Fix mychar.
-
-2011-10-14 Jonathan Yong <jon_y@users.sourceforge.net>
-
- * configure.host: Use config/os/mingw32-w64 instead of
- config/os/mingw32 if vendor key is "w64".
- * config/os/mingw32-w64: Duplicate from config/os/mingw32.
- * config/os/mingw32-w64/os_defines.h: Enable
- _GLIBCXX_FULLY_DYNAMIC_STRING if undefined.
- * acinclude.m4: Set fully-dynamic-string to 1 when enabled,
- 0 when disabled or undefined if unset by user.
- * include/bits/basic_string.h: Check if
- _GLIBCXX_FULLY_DYNAMIC_STRING is set to 0 instead of undefined.
- include/bits/basic_string.tcc: Likewise.
- * configure: Regenerated.
- * config.h.in: Likewise.
-
-2011-10-13 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50714
- * include/bits/codecvt.h (codecvt<>::codecvt(size_t)): Initialize
- _M_c_locale_codecvt member.
- * testsuite/22_locale/codecvt_byname/50714.cc: New.
-
-2011-10-12 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/50594
- * libsupc++/new (operator new, operator delete): Decorate with
- __attribute__((__externally_visible__)).
- * include/bits/c++config: Add _GLIBCXX_THROW.
- * libsupc++/del_op.cc: Adjust.
- * libsupc++/del_opv.cc: Likewise.
- * libsupc++/del_opnt.cc: Likewise.
- * libsupc++/del_opvnt.cc: Likewise.
- * libsupc++/new_op.cc: Likewise.
- * libsupc++/new_opv.cc: Likewise.
- * libsupc++/new_opnt.cc: Likewise.
- * libsupc++/new_opvnt.cc: Likewise.
- * testsuite/18_support/50594.cc: New.
- * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error
- line number.
-
-2011-10-11 Emil Wojak <emil@wojak.eu>
-
- PR c++/50661
- * include/bits/stl_algobase.h (equal): Compare arrays of pointers
- too with memcmp.
-
-2011-10-10 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/49818
- * config/abi/pre/gnu.ver (CXXABI_1.3.6): Add symbols.
- * testsuite/util/testsuite_abi.cc: Same.
- * libsupc++/unwind-cxx.h: Move required eh API...
- * libsupc++/cxxabi.h: ... to here. Add required forward declarations.
- Use _GLIBCXX_NOTHROW.
- * libsupc++/pure.cc (__cxa_deleted_virtual): Add.
- * libsupc++/eh_alloc.cc: Use _GLIBCXX_NOTHROW.
- * libsupc++/eh_catch.cc: Same.
- * libsupc++/eh_globals.cc: Same.
- * libsupc++/eh_type.cc: Same.
-
-2011-10-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/util/testsuite_allocator.h (uneq_allocator): Add
- propagate_on_container_swap typedef for C++0x testing.
-
-2011-10-06 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/27_io/ios_base/cons/assign_neg.cc: Tidy dg- directives,
- for C++0x testing too.
- * testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
- * testsuite/ext/pb_ds/example/hash_resize_neg.cc: Likewise.
- * testsuite/24_iterators/istreambuf_iterator/requirements/
- base_classes.cc: Adjust for C++0x testing.
- * testsuite/ext/codecvt/char-1.cc: Avoid warnings in C++0x mode.
- * testsuite/ext/codecvt/char-2.cc: Likewise.
- * testsuite/ext/codecvt/wchar_t.cc: Likewise.
-
-2011-10-05 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/ext/pod_char_traits.h: Avoid warnings in C++0x mode
- when int_type is unsigned.
-
-2011-10-04 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/49561
- * include/bits/stl_list.h (_List_base<>::_List_impl::_M_size):
- Add in C++0x mode.
- (_List_base<>::_List_impl, _List_base<>::_M_get_node,
- _List_base<>::_M_put_node, _List_base<>::_List_base(_List_base&&),
- list<>::size, list<>::swap, list<>::splice): Use it.
- (operator==(const list<>&, const list<>&)): Rewrite in C++0x mode.
- * include/bits/list.tcc (list<>::erase): Likewise.
- (list<>::merge): Adjust in C++0x mode.
- * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
- Adjust dg-error line number.
- * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
- Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_2_neg.cc: Likewise.
-
-2011-10-04 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/20_util/bind/48698.cc (g): Fix return type, avoid -Wall
- warning.
-
-2011-10-04 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/ext/alloc_traits.h (__alloc_traits::max_size): Define.
- (__alloc_traits::rebind): Define.
- * include/bits/stl_vector.h: Use them.
- * testsuite/util/testsuite_allocator.h (SimpleAllocator): Define.
- * testsuite/23_containers/vector/allocator/minimal.cc: New.
- * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
- Adjust dg-error line numbers.
- * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
- Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_2_neg.cc: Likewise.
-
-2011-10-03 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/20_util/pointer_traits/pointer_to.cc: Define equality
- operator and use.
-
-2011-10-03 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/hashtable.h (_Hashtable<>::insert(value_type&&),
- insert(const_iterator, value_type&&)): Don't define here...
- * include/bits/unordered_set.h (__unordered_set<>,
- __unordered_multiset<>): ... define here instead.
-
-2011-09-29 Jason Merrill <jason@redhat.com>
-
- * testsuite/util/testsuite_tr1.h (test_property): Avoid
- ambiguity.
-
-2011-10-01 François Dumont <fdumont@gcc.gnu.org>
-
- * include/debug/vector (vector<>::erase(iterator, iterator): Check
- iterators equality using normal iterators.
- * include/debug/deque (deque<>::erase(iterator, iterator): Likewise.
-
-2011-09-29 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
- Remove noexcept from declaration too.
-
-2011-09-27 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/html/*: Regenerate.
-
- * doc/Makefile.am: Un-nest the ext output directory.
- * doc/Makefile.in: Regenerate.
- * spine.xml: Remove authors, add abstract for short
- contents. Rename to index.html for html output.
- * manual/spine.xml: Authors here, manual starts with index.html.
- * api.xml: Update.
- * faq.xml: Same.
-
-2011-09-27 Marcus Shawcroft <marcus.shawcroft@arm.com>
-
- * libsupc++/tinfo.cc (type_info::operator==): Test __name instead
- of name().
-
-2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50529
- * include/bits/vector.tcc (vector<>::erase(iterator, iterator)):
- Fix to do nothing if the range is empty.
- * include/bits/stl_bvector.h: Likewise.
- * include/bits/deque.tcc: Likewise.
- * include/debug/vector: Adjust.
- * include/debug/deque: Likewise.
- * testsuite/23_containers/vector/modifiers/erase/50529.cc: New.
- * testsuite/23_containers/deque/modifiers/erase/50529.cc: Likewise.
- * testsuite/23_containers/deque/modifiers/erase/3.cc: Adjust.
-
-2011-09-25 Benjamin Kosnik <bkoz@redhat.com>
- Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/48698
- * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Set libtool_VERSION here.
- * configure.ac: Move AC_SUBST of libtool_VERSION past call to
- GLIBCXX_ENABLE_SYMVERS.
- * configure: Regenerate.
- * include/bits/c++config: Use __7 as versioned namespace name.
- * config/abi/pre/gnu-versioned-namespace.ver: Change mangling as
- per above.
- * include/c_global/cwchar: Adjust nested namespaces.
- * testsuite/20_util/bind/48698.cc: Add test case.
- * testsuite/ext/profile/mutex_extensions_neg.cc: Change line number.
-
-2011-09-25 Paolo Carlini <paolo.carlini@oracle.com>
-
- Revert (no longer necessary post r179130):
-
- 2010-04-27 Fabien Chêne <fabien.chene@gmail.com>
-
- * testsuite/util/testsuite_error.h: Add empty default constructor
- to __gnu_test::test_category and
- __gnu_test::test_derived_category.
- * src/future.cc: Add empty default constructor to
- future_error_category.
- * src/system_error.cc: Add default ctor to generic_error_category
- and system_error_category.
-
-2011-09-24 John Salmon <john.salmon@deshaw.com>
-
- PR libstdc++/50510
- * include/bits/random.tcc (seed_seq::generate): Fix computation.
-
-2011-09-24 John Salmon <john.salmon@deshaw.com>
-
- PR libstdc++/50509
- * include/bits/random.tcc (seed_seq::generate): Fix computation.
-
-2011-09-21 Benjamin Kosnik <bkoz@redhat.com
-
- * doc/Makefile.am (stamp-epub-docbook): Fix image directory location.
- * doc/Makefile.in: Regenerate.
-
-2011-09-21 Paolo Carlini <paolo.carlini@oracle.com>
-
- * src/limits.cc: Replace everywhere __int128_t -> __int128, and
- __uint128_t -> unsigned __int128.
- * include/std/type_traits: Likewise.
- * include/std/limits: Likewise.
- * testsuite/18_support/numeric_limits/dr559.cc: Likewise.
- * testsuite/18_support/numeric_limits/lowest.cc: Likewise.
- * testsuite/18_support/numeric_limits/40856.cc: Likewise.
- * testsuite/18_support/numeric_limits/max_digits10.cc: Likewise.
- * testsuite/util/testsuite_common_types.h: Likewise.
- * testsuite/20_util/make_signed/requirements/typedefs-1.cc: Likewise.
- * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Likewise.
- * testsuite/20_util/is_floating_point/value.cc: Likewise.
- * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Likewise.
- * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Likewise.
- * testsuite/20_util/is_signed/value.cc: Likewise.
- * testsuite/20_util/is_unsigned/value.cc: Likewise.
- * testsuite/20_util/is_integral/value.cc: Likewise.
- * config/abi/pre/gnu.ver: Likewise.
- * acinclude.m4: Likewise.
- * configure: Regenerate.
- * config.h.in: Likewise.
-
-2011-09-19 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/40856
- * include/std/limits (numeric_limits<__int128_t>,
- numeric_limits<__uint128_t>): Add.
- * src/limits.cc:Define.
- * config/abi/pre/gnu.ver: Export.
- * include/ext/typelist.h (_GLIBCXX_TYPELIST_CHAIN16, 20): Add.
- * testsuite/util/testsuite_common_types.h (integral_types_gnu): Add
- (limits_tl): Use it.
- * testsuite/18_support/numeric_limits/requirements/
- constexpr_functions.cc: Likewise.
- * testsuite/18_support/numeric_limits/40856.cc: New.
- * testsuite/18_support/numeric_limits/dr559.cc: Extend.
- * testsuite/18_support/numeric_limits/lowest.cc: Likewise.
- * testsuite/18_support/numeric_limits/max_digits10.cc: Likewise.
- * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error
- line numbers.
- * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
- * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
- * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
- * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
- Likewise.
- * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
- Likewise.
- * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
- Likewise.
-
-2011-09-17 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50441
- * acinclude.m4 ([GLIBCXX_ENABLE_INT128_FLOAT128]): Add.
- * configure.ac: Call it.
- * include/std/type_traits (__is_integral_helper<__int128_t>,
- __is_integral_helper<__uint128_t>,
- __is_floating_point_helper<__float128>,
- __make_unsigned<__int128_t>, __make_signed<__uint128_t>): Add.
- * testsuite/20_util/make_signed/requirements/typedefs-1.cc: Extend.
- * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Likewise.
- * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Likewise.
- * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Likewise.
- * testsuite/20_util/is_signed/value.cc: Likewise.
- * testsuite/20_util/is_unsigned/value.cc: Likewise.
- * testsuite/20_util/is_integral/value.cc: Likewise.
- * testsuite/20_util/is_floating_point/value.cc: New.
- * testsuite/20_util/is_floating_point/requirements/typedefs.cc:
- Likewise.
- * testsuite/20_util/is_floating_point/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
- dg-error line numbers.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
- Likewise.
- * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
- * configure: Regenerate.
- * config.h.in: Likewise.
-
-2011-09-17 François Dumont <fdumont@gcc.gnu.org>
-
- * include/bits/hashtable.h (_Hashtable<>::__rehash_policy(const
- _RehashPolicy&)): Commit the modification of the policy only if no
- exception occured.
- * testsuite/23_containers/unordered_set/max_load_factor/robustness.cc:
- New.
-
-2011-09-16 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/23_containers/array/comparison_operators/
- less_or_equal.cc: New.
- * testsuite/23_containers/array/comparison_operators/
- greater_or_equal.cc: Likewise.
- * testsuite/23_containers/array/comparison_operators/less.cc: Likewise.
- * testsuite/23_containers/array/comparison_operators/equal.cc: Likewise.
- * testsuite/23_containers/array/comparison_operators/not_equal.cc:
- Likewise.
- * testsuite/23_containers/array/comparison_operators/greater.cc:
- Likewise.
- * testsuite/23_containers/array/iterators/end_is_one_past.cc: Likewise.
- * testsuite/23_containers/array/capacity/empty.cc: Likewise.
- * testsuite/23_containers/array/capacity/max_size.cc: Likewise.
- * testsuite/23_containers/array/capacity/size.cc: Likewise.
- * testsuite/23_containers/array/tuple_interface/tuple_element.cc:
- Likewise.
- * testsuite/23_containers/array/tuple_interface/tuple_size.cc:
- Likewise.
- * testsuite/23_containers/array/element_access/at_out_of_range.cc:
- Likewise.
- * testsuite/23_containers/array/element_access/back.cc: Likewise.
- * testsuite/23_containers/array/element_access/front.cc: Likewise.
- * testsuite/23_containers/array/element_access/data.cc: Likewise.
- * testsuite/23_containers/array/cons/aggregate_initialization.cc:
- Likewise.
- * testsuite/23_containers/array/requirements/zero_sized_arrays.cc:
- Likewise.
- * testsuite/23_containers/array/requirements/contiguous.cc: Likewise.
- * testsuite/23_containers/array/requirements/member_swap.cc: Likewise.
- * testsuite/23_containers/array/specialized_algorithms/swap.cc:
- Likewise.
- * testsuite/23_containers/array/constexpr_get.cc: Move...
- * testsuite/23_containers/array/tuple_interface/constexpr_get.cc:
- ... here.
- * testsuite/23_containers/array/requirements/get.cc: Move...
- * testsuite/23_containers/array/tuple_interface/get: ... here.
- * testsuite/23_containers/array/at_neg.cc: Move...
- * testsuite/23_containers/array/element_access: ... here.
- * testsuite/23_containers/array/requirements/constexpr_functions.cc:
- Move...
- * testsuite/23_containers/array/capacity: ... here.
- * testsuite/23_containers/array/requirements/
- constexpr_element_access.cc: Move...
- * testsuite/23_containers/array/element_access: ... here.
-
- * testsuite/20_util/duration/cons/1_neg.cc: Avoid -Wall warnings.
- * testsuite/20_util/tuple/creation_functions/constexpr.cc: Likewise.
- * testsuite/20_util/pair/make_pair/constexpr.cc: Likewise.
- * testsuite/20_util/time_point/nonmember/constexpr.cc: Likewise.
- * testsuite/23_containers/bitset/operations/constexpr.cc: Likewise.
-
- * testsuite/20_util/duration/cons/1_neg.cc: Discard bogus warning.
- * testsuite/20_util/forward/1_neg.cc: Likewise.
-
-2011-09-15 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/tuple (make_tuple, forward_as_tuple): Declare constexpr.
- (_Tuple_impl<>::_Tuple_impl(_Tuple_impl<>&&)): Likewise.
- * testsuite/20_util/tuple/creation_functions/constexpr.cc: Enable
- make_tuple test.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
- line number.
-
-2011-09-14 François Dumont <fdumont@gcc.gnu.org>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/hashtable.h (_Hashtable<>::_M_rehash): Take and restore
- hash policy _M_prev_resize on exception.
- (_Hashtable<>::_M_insert_bucket): Capture hash policy next resize
- before using it and use latter method to have it restored on exception.
- (_Hashtable<>::_M_insert(_Arg&& __v, std::false_type): Likewise.
- (_Hashtable<>::insert(_InputIterator, _InputIterator): Likewise.
- (_Hashtable<>::rehash): Likewise.
- * testsuite/23_containers/unordered_set/insert/hash_policy.cc: New.
- * testsuite/23_containers/unordered_multiset/insert/hash_policy.cc:
- Likewise.
-
-2011-09-13 Paul Brook <paul@codesourcery.com>
-
- * libsupc++/eh_arm.cc (__cxa_end_cleanup): Add C6X implementation.
- * libsupc++/eh_call.cc (__cxa_call_unexpected): Set rtti_base.
- * libsupc++/eh_personality.cc (NO_SIZE_OF_ENCODED_VALUE): Remove
- __ARM_EABI_UNWINDER__ check.
- (parse_lsda_header): Check _GLIBCXX_OVERRIDE_TTYPE_ENCODING.
- (get_ttype_entry): Use generic implementation on ARM EABI.
- (check_exception_spec): Use _Unwind_decode_typeinfo_ptr and
- UNWIND_STACK_REG.
- (PERSONALITY_FUNCTION): Set ttype_base.
-
-2011-09-12 Daniel Krugler <daniel.kruegler@googlemail.com>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/tuple (_Head_base<>::_M_head, _Head_base<>::_M_tail,
- _Tuple_impl<>::_M_head, _Tuple_impl<>::_M_tail): Change to static
- constexpr functions; adjust everywhere.
- (__get_helper, get): Declare constexpr all three overloads.
- (tuple_cat): Declare constexpr; use late return type to improve
- error messages.
- * include/std/utility (__pair_get<>::__get, __pair_get<>::__move_get,
- __pair_get<>::__const_get, get): Declare all constexpr.
- * include/std/array (get): Likewise.
- * testsuite/20_util/tuple/creation_functions/constexpr.cc: Re-enable
- tuple_cat test.
- * testsuite/23_containers/array/constexpr_get.cc: New.
- * testsuite/20_util/tuple/element_access/constexpr_get.cc: Likewise.
- * testsuite/20_util/pair/constexpr_get.cc: Likewise.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
- line number.
-
-2011-09-12 Jason Merrill <jason@redhat.com>
-
- * testsuite/20_util/is_constructible/value-2.cc: Adjust
- expected values.
-
-2011-09-11 Daniel Krugler <daniel.kruegler@googlemail.com>
-
- PR libstdc++/50159
- * include/std/tuple (tuple_cat): Reimplement according to the
- resolution of LWG 1385.
- * include/std/type_traits: Define __and_ and __or_ for zero
- arguments too; minor tweaks.
- * testsuite/20_util/tuple/creation_functions/tuple_cat.cc: New.
- * testsuite/20_util/tuple/creation_functions/constexpr.cc: Disable
- for now tuple_cat test.
- * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
- line numbers.
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
- Likewise.
- * doc/xml/manual/status_cxx200x.xml: Update.
-
-2011-09-09 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/tuple: Use everywhere std::size_t... instead of int...
- * include/std/functional: Likewise.
- * include/std/scoped_allocator: Likewise.
- * include/bits/stl_pair.h: Likewise.
-
-2011-09-09 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50336
- * include/bits/streambuf_iterator.h (class istreambuf_iterator):
- Implement LWG 445 in C++0x mode.
- * testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc:
- New.
-
-2011-09-08 Dodji Seketeli <dodji@redhat.com>
-
- PR c++/33255 - Support -Wunused-local-typedefs warning
- * include/ext/bitmap_allocator.h
- (__detail::__mini_vector::__lower_bound): Remove unused typedef.
- * src/istream.cc (std::operator>>(basic_istream<char>& __in,
- basic_string<char>& __str)): Likewise.
- (std::getline): Likewise.
- * src/valarray.cc (__valarray_product): Likewise.
-
-2011-09-07 François Dumont <francois.cppdevs@free.fr>
-
- * testsuite/23_containers/array/at.cc: Revert to...
- * testsuite/23_containers/array/at_neg.cc: ...this.
-
-2011-09-07 Jason Merrill <jason@redhat.com>
-
- * testsuite/20_util/bind/ref_neg.cc: Adjust errors.
- * testsuite/20_util/duration/cons/1_neg.cc: Adjust errors.
-
-2011-09-06 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/tuple (_Tuple_impl::_M_head, _M_tail): Mark constexpr.
- (tuple(tuple&&)): Same.
- (tuple(const tuple<_UElements...>& __in)): Same.
- (tuple(tuple<_UElements...>&& __in)): Same.
- (tuple_cat(const tuple<_TElements...>&, const tuple<_UElements...>&)):
- Same.
- (get): Same.
- * include/std/array: Consolidate array::data usage.
- * testsuite/23_containers/array/requirements/constexpr_functions.cc:
- Remove extra include.
- * testsuite/20_util/tuple/creation_functions/constexpr.cc: New.
- * testsuite/20_util/tuple/cons/constexpr-2.cc: Add tests.
- * testsuite/20_util/tuple/cons/constexpr-3.cc: Same.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust line numbers.
-
-2011-09-06 François Dumont <fdumont@gcc.gnu.org>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/hashtable_policy.h (_Prime_rehash_policy::
- _M_next_bkt): Cast _M_max_load_factor to long double.
- (_Prime_rehash_policy::_M_bkt_for_elements): Use _M_next_bkt.
- (_Prime_rehash_policy::_M_need_rehash): Likewise; cast all
- float quantities to long double.
-
-2011-09-06 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50257
- * include/bits/hashtable_policy.h (_Prime_rehash_policy::
- _M_next_bkt): Optimize for small argument.
-
-2011-09-02 François Dumont <fdumont@gcc.gnu.org>
-
- * testsuite/util/testsuite_allocator.h (tracker_allocator_counter::
- allocate): Update allocation count only if allocation succeeded.
-
-2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/bitset: Trivial formatting fixes.
-
-2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
- Marc Glisse <marc.glisse@normalesup.org>
-
- * include/std/bitset (_Base_bitset<>::_M_are_all_aux): Remove.
- (_Base_bitset<>::_M_are_all): Add.
- (bitset<>::all): Use the latter, improve implementation.
-
-2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
- Marc Glisse <marc.glisse@normalesup.org>
-
- PR libstdc++/50268
- * include/std/bitset (struct _Sanitize_val): Add.
- (bitset<>::bitset(unsigned long long)): Fix.
- * testsuite/23_containers/bitset/cons/50268.cc: New.
-
-2011-09-01 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
- Remove noexcept, the move constructor allocates memory; rearrange
- the code in the body to consistently update __ht._M_rehash_policy
- before using _M_next_bkt on it.
- * include/debug/unordered_map: Adjust.
- * include/debug/unordered_set: Likewise.
- * include/profile/unordered_map: Likewise.
- * include/profile/unordered_set: Likewise.
- * testsuite/23_containers/unordered_map/cons/
- noexcept_move_construct.cc: Remove.
- * testsuite/23_containers/unordered_set/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/unordered_multimap/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/unordered_multiset/cons/
- noexcept_move_construct.cc: Likewise.
-
-2011-08-31 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/chrono (operator*(const _Rep1&, const duration<>&)):
- Fix order of template parameters per LWG 2004.
-
-2011-08-30 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/stl_iterator.h (make_move_iterator): Implement DR2061.
- * testsuite/24_iterators/move_iterator/dr2061.cc: New.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
- line numbers.
-
-2011-08-30 Paolo Carlini <paolo.carlini@oracle.com>
-
- * config/os/mingw32/error_constants.h: Fix commas.
-
-2011-08-29 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/20_util/duration/arithmetic/constexpr.cc: Add.
-
-2011-08-29 Kai Tietz <ktietz@redhat.com>
-
- * configure: Regenerated.
- * config.h.in: Regenerated.
- * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR) Add
- checks for ECHILD, ENOSPC, EPERM, ETIMEDOUT, and
- EWOULDBLOCK.
- * config/os/mingw32/error_constants.h (errc): Add
- enumerator values no_child_process, no_space_on_device,
- not_supported, operation_not_permitted, operation_would_block,
- timed_out, and value_too_large,
-
-2011-08-29 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50118
- * include/bits/stl_list.h (_List_base<>::
- _List_base(const allocator_type&)): Remove.
- (_List_base<>::_List_base(const _Node_alloc_type&)): Add.
- (list<>:list(const allocator_type&), list(size_type, const
- value_type&, const allocator_type&),
- list(initializer_list<, const allocator_type&),
- list(_InputIterator, _InputIterator, const allocator_type&),
- insert(iterator, size_type, const value_type&),
- insert(iterator, _InputIterator, _InputIterator)): Adjust.
- * include/bits/stl_tree.h (_Rb_tree<>::_Rb_tree(const _Compare&,
- const allocator_type&)): Fix.
- * include/bits/stl_map.h (map<>::map(const _Compare&,
- const allocator_type&), map(initializer_list<>,
- const _Compare&, const allocator_type&), map(_InputIterator,
- _InputIterator, const _Compare&, const allocator_type&),
- get_allocator): Adjust.
- * include/bits/stl_set.h (set<>::set(const _Compare&,
- const allocator_type&), set(initializer_list<>,
- const _Compare&, const allocator_type&), set(_InputIterator,
- _InputIterator, const _Compare&, const allocator_type&),
- get_allocator): Likewise.
- * include/bits/stl_multimap.h (multimap<>::multimap(const _Compare&,
- const allocator_type&), multimap(initializer_list<>,
- const _Compare&, const allocator_type&), multimap(_InputIterator,
- _InputIterator, const _Compare&, const allocator_type&),
- get_allocator): Likewise.
- * include/bits/stl_multiset.h (multiset<>::multiset(const _Compare&,
- const allocator_type&), multiset(initializer_list<>,
- const _Compare&, const allocator_type&), multiset(_InputIterator,
- _InputIterator, const _Compare&, const allocator_type&),
- get_allocator): Likewise.
- * include/bits/forward_list.h (_Fwd_list_base<>::
- _Fwd_list_base(const _Alloc&), _Fwd_list_base(const _Fwd_list_base&,
- const _Alloc&), _Fwd_list_base(_Fwd_list_base&&, const _Alloc&)):
- Remove.
- (_Fwd_list_base<>::_Fwd_list_base(const _Node_alloc_type&),
- _Fwd_list_base(const _Fwd_list_base&,
- const _Node_alloc_type&), _Fwd_list_base(_Fwd_list_base&&,
- const _Node_alloc_type&)): Add.
- (forward_list<>::forward_list(const _Alloc&),
- forward_list(const forward_list&, const _Alloc&),
- forward_list(forward_list&&, const _Alloc&),
- forward_list(size_type, const _Tp&, const _Alloc&),
- forward_list(_InputIterator, _InputIterator, const _Alloc&),
- forward_list(std::initializer_list<>, const _Alloc&),
- get_allocator): Adjust.
- * include/bits/forward_list.tcc: Adjust.
- * testsuite/util/testsuite_allocator.h (ExplicitConsAlloc): Add.
- * testsuite/23_containers/unordered_map/requirements/
- explicit_instantiation/5.cc: New.
- * testsuite/23_containers/multimap/requirements/
- explicit_instantiation/5.cc: Likewise.
- * testsuite/23_containers/multimap/requirements/
- explicit_instantiation/5_c++0x.cc: Likewise.
- * testsuite/23_containers/set/requirements/explicit_instantiation/
- 5.cc: Likewise.
- * testsuite/23_containers/set/requirements/explicit_instantiation/
- 5_c++0x.cc: Likewise.
- * testsuite/23_containers/unordered_multimap/requirements/
- explicit_instantiation/5.cc: Likewise.
- * testsuite/23_containers/forward_list/requirements/
- explicit_instantiation/5.cc: Likewise.
- * testsuite/23_containers/unordered_set/requirements/
- explicit_instantiation/5.cc: Likewise.
- testsuite/23_containers/multiset/requirements/explicit_instantiation/
- 5.cc: Likewise.
- * testsuite/23_containers/multiset/requirements/
- explicit_instantiation/5_c++0x.cc: Likewise.
- * testsuite/23_containers/list/requirements/explicit_instantiation/
- 5_c++0x.cc: Likewise.
- * testsuite/23_containers/list/requirements/explicit_instantiation/
- 5.cc: Likewise.
- * testsuite/23_containers/unordered_multiset/requirements/
- explicit_instantiation/5.cc: Likewise.
- * testsuite/23_containers/map/requirements/explicit_instantiation/
- 5.cc: Likewise.
- * testsuite/23_containers/map/requirements/explicit_instantiation/
- 5_c++0x.cc: Likewise.
- * testsuite/23_containers/forward_list/requirements/dr438/
- assign_neg.cc: Adjust dg-error line number.
- * testsuite/23_containers/forward_list/requirements/dr438/
- insert_neg.cc: Likewise.
- * testsuite/23_containers/forward_list/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/forward_list/requirements/dr438/
- constructor_2_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
- Likewise.
- * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
- Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_2_neg.cc: Likewise.
-
-2011-08-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * acinclude.m4 (GLIBCXX_CHECK_MATH_PROTO)
- (GLIBCXX_CHECK_STDLIB_PROTO): New tests.
- * configure.ac (GLIBCXX_CHECK_MATH_PROTO)
- (GLIBCXX_CHECK_STDLIB_PROTO): Call them.
- * configure: Regenerate.
- * config.h.in: Regenerate.
- * config/os/solaris/solaris2.8/os_defines.h
- (__CORRECT_ISO_CPP_MATH_H_PROTO2): Don't define.
- * config/os/solaris/solaris2.9: Remove.
- * configure.host (solaris2.8): Merge with ...
- (solaris2.9, solaris2.1[0-9]): ... this.
- Always use os/solaris/solaris2.8.
-
-2011-08-28 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/move.h (swap(_Tp(&)[_Nm], _Tp(&)[_Nm])): Remove
- workaround for c++/49045.
- * include/bits/algorithmfwd.h: Likewise.
-
-2011-08-25 Tom Tromey <tromey@redhat.com>
-
- * testsuite/libstdc++-prettyprinters/simple.cc: New file.
- * testsuite/lib/gdb-test.exp: New file.
- * testsuite/libstdc++-prettyprinters/prettyprinters.exp: New
- file.
-
-2011-08-18 Marc Glisse <marc.glisse@normalesup.org>
-
- * include/tr1/cmath: Extend/update comment.
-
-2011-08-18 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/50119
- * include/bits/stl_algo.h (__copy_n(_InputIterator, _Size,
- _OutputIterator, input_iterator_tag)): Fix.
- * testsuite/25_algorithms/copy_n/50119.cc: New.
-
-2011-08-18 Marc Glisse <marc.glisse@normalesup.org>
- Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- PR libstdc++/1773
- * config/os/solaris2.7: Rename to config/os/solaris2.9.
- * config/os/solaris/solaris2.9/os_defines.h
- (__CORRECT_ISO_CPP_MATH_H_PROTO1)
- (__CORRECT_ISO_CPP_STDLIB_H_PROTO)
- (__CORRECT_ISO_CPP_STRING_H_PROTO)
- (__CORRECT_ISO_CPP_WCHAR_H_PROTO): Define.
- * config/os/solaris2.8/ctype_base.h,
- config/os/solaris2.8/ctype_configure_char.cc,
- config/solaris2.8/ctype_inline.h,
- config/os/solaris2.8/os_defines.h: New files.
-
- * configure.host (solaris2.[89], solaris2.1[0-9]):
- Split into ...
- (solaris2.8): ... this.
- Use os/solaris/solaris2.8.
- (solaris2.9, solaris2.1[0-9]): ... and this.
- Use os/solaris/solaris2.9.
-
- * include/c_global/cmath (double abs(double)): Wrap in
- !__CORRECT_ISO_CPP_MATH_H_PROTO1 &&
- !__CORRECT_ISO_CPP_MATH_H_PROTO2.
- (float abs(float), long double abs(long double): Wrap in
- !__CORRECT_ISO_CPP_MATH_H_PROTO1.
- (float acos(float), long double acos(long double)): Likewise.
- (float asin(float), long double asin(long double)): Likewise.
- (float atan(float), long double atan(long double)): Likewise.
- (float atan2(float, float), long double atan2(long double, long
- double)): Likewise.
- (float ceil(float), long double ceil(long double)): Likewise.
- (float cos(float), long double cos(long double)): Likewise.
- (float cosh(float), long double cosh(long double)): Likewise.
- (float exp(float), long double exp(long double)): Likewise.
- (float fabs(float), long double fabs(long double)): Likewise.
- (float floor(float), long double floor(long double)): Likewise.
- (float fmod(float, float), long double fmod(long double, long
- double)): Likewise.
- (float frexp(float, int*), long double frexp(long double, int*)):
- Likewise.
- (float ldexp(float, int), long double ldexp(long double, int)):
- Likewise.
- (float log(float), long double log(long double)): Likewise.
- (float log10(float), long double log10(long double)): Likewise.
- (float modf(float, float*), long double modf(long double, long
- double*))): Likewise.
- (float pow(float, float), long double pow(long double, long
- double)): Likewise.
- (float sin(float), long double sin(long double)): Likewise.
- (float sinh(float), long double sinh(long double)): Likewise.
- (float sqrt(float), long double sqrt(long double)): Likewise.
- (float tan(float), long double tan(long double)): Likewise.
- (float tanh(float), long double tanh(long double)): Likewise.
- * include/c_global/cstdlib (long abs(long), ldiv_t div(long,
- long)): Wrap in !__CORRECT_ISO_CPP_STDLIB_H_PROTO.
- * include/tr1/cmath (float fabs(float), long double fabs(long
- double)): Wrap in !__CORRECT_ISO_CPP_MATH_H_PROTO1.
-
-2011-08-14 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/xml/images/*: Image and image filename changes.
-
-2011-08-14 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/data/make_graph_test_infos.xml: Edit.
- * testsuite/data/make_graph_htmls.xml: Remove
- * scripts/make_graph.py: Edit, fix.
- * scripts/make_graphs.py: Remove.
-
- * doc/Makefile.am (doc-svg-performance): New.
- (doc-html-performance): Remove.
- * doc/Makefile.in: Regenerate.
-
- * doc/xml/manual/test_policy_data_structures.xml: Markup changes.
- * doc/xml/manual/policy_data_structures.xml: Same.
- * doc/xml/manual/locale.xml: Same.
-
- Testsuite renames.
- * performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc:
- Rename.
- * performance/ext/pb_ds/random_int_find_timing.cc: Same.
- * performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp
- * performance/ext/pb_ds/multimap_text_find_timing.hpp
- * performance/ext/pb_ds/priority_queue_random_int_push_timing.cc: Same.
- * performance/ext/pb_ds/priority_queue_text_modify_timing.hpp
- * performance/ext/pb_ds/tree_order_statistics_timing.cc: Same.
- * performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc: Same.
- * performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc: Same.
- * performance/ext/pb_ds/priority_queue_text_join_timing.cc: Same.
- * performance/ext/pb_ds/multimap_text_insert_timing_small.cc: Same.
- * performance/ext/pb_ds/random_int_subscript_insert_timing.cc: Same.
- * performance/ext/pb_ds/tree_text_lor_find_timing.cc: Same.
- * performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc: Same.
- * performance/ext/pb_ds/multimap_text_find_timing_small.cc: Same.
- * performance/ext/pb_ds/text_find_timing.cc: Same.
- * performance/ext/pb_ds/tree_text_insert_timing.cc: Same.
- * performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc: Same.
- * performance/ext/pb_ds/random_int_subscript_find_timing.cc: Same.
- * performance/ext/pb_ds/priority_queue_text_push_timing.cc: Same.
- * performance/ext/pb_ds/tree_split_join_timing.cc: Same.
- * performance/ext/pb_ds/multimap_text_insert_timing_large.cc: Same.
- * performance/ext/pb_ds/priority_queue_text_modify_up_timing.cc: Same.
- * performance/ext/pb_ds/multimap_text_find_timing_large.cc: Same.
- * performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc:
- Same.
- * performance/ext/pb_ds/multimap_text_insert_timing.hpp
- * performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc: Same.
- * performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc: Same.
-
- * performance/ext/pb_ds/all_int_find.cc: To these new files...
- * performance/ext/pb_ds/all_int_subscript_find.cc: ...this.
- * performance/ext/pb_ds/all_int_subscript_insert.cc: ...this.
- * performance/ext/pb_ds/all_text_find.cc: ...this.
- * performance/ext/pb_ds/hash_int_erase_mem.cc: ...this.
- * performance/ext/pb_ds/hash_zlob_int_find.cc: ...this.
- * performance/ext/pb_ds/multimap_text_find.hpp
- * performance/ext/pb_ds/multimap_text_find_large.cc: ...this.
- * performance/ext/pb_ds/multimap_text_find_small.cc: ...this.
- * performance/ext/pb_ds/multimap_text_insert.hpp
- * performance/ext/pb_ds/multimap_text_insert_large.cc: ...this.
- * performance/ext/pb_ds/multimap_text_insert_mem.hpp
- * performance/ext/pb_ds/multimap_text_insert_mem_large.cc: ...this.
- * performance/ext/pb_ds/multimap_text_insert_mem_small.cc: ...this.
- * performance/ext/pb_ds/multimap_text_insert_small.cc: ...this.
- * performance/ext/pb_ds/priority_queue_int_push.cc: ...this.
- * performance/ext/pb_ds/priority_queue_int_push_pop.cc: ...this.
- * performance/ext/pb_ds/priority_queue_text_join.cc: ...this.
- * performance/ext/pb_ds/priority_queue_text_modify_down.cc: ...this.
- * performance/ext/pb_ds/priority_queue_text_modify.hpp
- * performance/ext/pb_ds/priority_queue_text_modify_up.cc: ...this.
- * performance/ext/pb_ds/priority_queue_text_pop_mem.cc: ...this.
- * performance/ext/pb_ds/priority_queue_text_push.cc: ...this.
- * performance/ext/pb_ds/priority_queue_text_push_pop.cc: ...this.
- * performance/ext/pb_ds/tree_order_statistics.cc: ...this.
- * performance/ext/pb_ds/tree_split_join.cc: ...this.
- * performance/ext/pb_ds/tree_text_insert.cc: ...this.
- * performance/ext/pb_ds/tree_text_lor_find.cc: ...this.
-
- * doc/xml/images/*: Image and image filename changes.
-
-2011-08-12 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/c_global/cmath (fmod(_Tp, _Up)): Add.
- * include/c_std/cmath: Likewise.
-
-2011-08-11 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/future: constexpr functions are implicitly inline.
- * include/std/chrono: Likewise.
- * include/std/complex: Likewise.
- * include/bits/move.h: Likewise.
- * include/bits/stl_pair.h: Likewise.
-
-2011-08-07 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/alloc_traits.h: Fix doxygen @headername.
-
-2011-08-06 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/doxygen/user.cfg.in (PDF_HYPERLINKS): To NO.
-
-2011-08-06 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/doxygen/user.cfg.in: Add scoped_allocator.
-
- * include/debug/safe_sequence.h: Fix doxygen markup.
- * include/debug/safe_unordered_base.h: Same.
- * include/debug/safe_local_iterator.tcc: Same.
- * include/debug/safe_unordered_container.h: Same.
- * include/std/valarray: Same.
- * include/std/iomanip: Same.
- * include/std/streambuf: Same.
- * include/std/bitset: Same.
- * include/std/fstream: Same.
- * include/std/functional: Same.
- * include/std/istream: Same.
- * include/std/ostream: Same.
- * include/std/scoped_allocator: Same.
- * include/std/sstream: Same.
- * include/parallel/multiway_merge.h: Same.
- * include/parallel/base.h: Same.
- * include/parallel/for_each_selectors.h: Same.
- * include/parallel/multiway_mergesort.h: Same.
- * include/parallel/search.h: Same.
- * include/parallel/partial_sum.h: Same.
- * include/parallel/queue.h: Same.
- * include/parallel/sort.h: Same.
- * include/parallel/random_number.h: Same.
- * include/ext/vstring.h: Same.
- * include/ext/algorithm: Same.
- * include/ext/pb_ds/assoc_container.h: Same.
- * include/ext/bitmap_allocator.h: Same.
- * include/ext/stdio_filebuf.h: Same.
- * include/ext/memory: Same.
- * include/ext/functional: Same.
- * include/bits/basic_ios.h: Same.
- * include/bits/stl_list.h: Same.
- * include/bits/stl_map.h: Same.
- * include/bits/stl_algobase.h: Same.
- * include/bits/stl_queue.h: Same.
- * include/bits/gslice.h: Same.
- * include/bits/locale_classes.h: Same.
- * include/bits/stl_set.h: Same.
- * include/bits/locale_facets.h: Same.
- * include/bits/stl_stack.h: Same.
- * include/bits/stl_heap.h: Same.
- * include/bits/forward_list.h: Same.
- * include/bits/stream_iterator.h: Same.
- * include/bits/basic_string.h: Same.
- * include/bits/stl_multimap.h: Same.
- * include/bits/stl_pair.h: Same.
- * include/bits/ios_base.h: Same.
- * include/bits/stl_numeric.h: Same.
- * include/bits/stl_vector.h: Same.
- * include/bits/stl_deque.h: Same.
- * include/bits/codecvt.h: Same.
- * include/bits/stl_multiset.h: Same.
- * include/bits/stl_uninitialized.h: Same.
- * include/bits/ptr_traits.h: Same.
- * include/bits/slice_array.h: Same.
- * include/bits/stl_iterator_base_funcs.h: Same.
- * include/bits/stl_algo.h: Same.
- * include/bits/stl_iterator.h: Same.
- * include/bits/stl_tempbuf.h: Same.
- * include/bits/regex.h: Same.
- * include/bits/range_access.h: Same.
- * include/bits/random.h: Same.
- * include/bits/alloc_traits.h: Same.
- * include/bits/regex_error.h: Same.
- * include/bits/locale_facets_nonio.h: Same.
- * include/bits/stl_relops.h: Same.
- * include/backward/auto_ptr.h: Same.
- * libsupc++/initializer_list: Same.
-
- * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
- Adjust line numbers.
- * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
- * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
- Same.
- * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
- Same.
-
-2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * acinclude.m4 (GLIBCXX_EXPORT_INCLUDES): Point TOPLEVEL_INCLUDES
- to $(toplevel_srcdir)/libgcc.
- * configure: Regenerate.
-
-2011-08-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/xml/manual/build_hacking.xml: Use relative fileref for PNG
- imagedata.
- * doc/xml/manual/test_policy_data_structures.xml: Same.
- * doc/xml/manual/policy_data_structures.xml: Same.
-
- * doc/Makefile.am (stamp-html-docbook-images)
- (stamp-html-docbook-lwg, stamp-html-docbook-data): New.
- (xml_extra): Add lwg html file dependencies.
- (xml_images): Add image html file dependencies.
- * doc/Makefile.in: Regenerate.
- (stamp-html): Change to stamp-html-docbook-data.
- (stamp-html-copy): Remove.
-
-2011-08-04 Paolo Carlini <paolo.carlini@oracle.com>
-
- * src/atomic.cc: Use noexcept.
- * include/std/atomic: Likewise.
- * include/bits/atomic_0.h: Likewise.
- * include/bits/atomic_2.h: Likewise.
- * include/bits/atomic_base.h: Likewise.
-
-2011-08-03 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/performance/27_io/filebuf_sputn_unbuf.cc: Include
- unistd.h for unlink.
- * testsuite/performance/27_io/ofstream_insert_int.cc: Same.
- * testsuite/performance/27_io/ifstream_extract_int.cc: Same.
- * testsuite/performance/27_io/ifstream_getline-2.cc: Same.
- * testsuite/performance/27_io/fstream_seek_write.cc: Same.
- * testsuite/performance/27_io/ifstream_extract_chars.cc: Same.
- * testsuite/performance/27_io/ofstream_insert_float.cc: Same.
- * testsuite/performance/27_io/ifstream_extract_float.cc: Same.
- * testsuite/performance/27_io/filebuf_sputc.cc: Same.
-
-2011-08-03 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/tuple: Mark more constructors constexpr.
- * testsuite/20_util/tuple/cons/constexpr.cc: Split into and extend as:
- * testsuite/20_util/tuple/cons/constexpr-2.cc: ...this.
- * testsuite/20_util/tuple/cons/constexpr-3.cc: ... and this.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust line numbers.
-
-2011-08-03 Benjamin Kosnik <bkoz@redhat.com>
- François Dumont <francois.cppdevs@free.fr>
-
- * testsuite/23_containers/array/at_neg.cc: Move...
- * testsuite/23_containers/array/at.cc: ...here. Remove
- -fno-exceptions, call const at member function.
-
-2011-08-01 H.J. Lu <hongjiu.lu@intel.com>
-
- * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Generated.
-
-2011-08-01 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/49813
- * include/c_global/cmath (isinf): Remove workaround.
-
-2011-07-31 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/49925
- * include/bits/shared_ptr.h (make_shared): Qualify allocate_shared
- with std::.
- * include/bits/shared_ptr_base.h (__make_shared): Likewise.
-
-2011-07-29 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/xml/manual/build_hacking.xml: Markup imagedata changes.
- * doc/xml/manual/policy_data_structures.xml: Same.
-
- * doc/xml/class.txml: Remove biblioid.
- * doc/xml/manual/allocator.xml: Same.
- * doc/xml/manual/ctype.xml: Same.
- * doc/xml/manual/codecvt.xml: Same.
- * doc/xml/manual/backwards_compatibility.xml: Same.
- * doc/xml/manual/abi.xml: Same.
- * doc/xml/manual/shared_ptr.xml: Same.
- * doc/xml/manual/using_exceptions.xml: Same.
- * doc/xml/manual/messages.xml: Same.
-
-2011-07-29 Benjamin Kosnik <bkoz@redhat.com>
-
- Docbook conversion of existing ext/pb_ds documentation.
- * doc/Makefile.am (xml_sources_manual): Add
- policy_data_structures.xml and
- test_policy_data_structures.xml.
- (stamp-html-copy): Remove special-case for ext/pb_ds directory.
- (XSLTPROC_FLAGS): Split into XSLT_FLAGS and XSLT_PARAM, use.
- * doc/Makefile.in: Regenerate.
- * doc/xml/manual/policy_data_structures.xml: New, adapted from
- previous html-only instance in doc/html/ext/pb_ds.
- * doc/xml/manual/test_policy_data_structures.xml: New, same as above.
-
- * doc/xml/spine.xml: Update copyright.
- * doc/xml/manual/spine.xml: Same.
- * doc/xml/manual/extensions.xml: Adjust set, chapter, sections.
- * doc/xml/manual/bitmap_allocator.xml: Same.
- * doc/xml/manual/mt_allocator.xml: Same.
-
- Populate image directory.
- * doc/xml/images/(pbds_balls_and_bins.png,
- pbds_binary_priority_queue_random_int_push_timing_test_local.pdf,
- pbds_binary_priority_queue_random_int_push_timing_test_local.png,
- pbds_binary_priority_queue_random_int_push_timing_test_local.svg,
- pbds_cc_hash_random_int_find_timing_test_local.pdf,
- pbds_cc_hash_random_int_find_timing_test_local.png,
- pbds_cc_hash_random_int_find_timing_test_local.svg,
- pbds_cc_hash_random_int_subscript_timing_test_find_local.pdf,
- pbds_cc_hash_random_int_subscript_timing_test_find_local.png,
- pbds_cc_hash_random_int_subscript_timing_test_find_local.svg,
- pbds_cc_hash_random_int_subscript_timing_test_insert_local.pdf,
- pbds_cc_hash_random_int_subscript_timing_test_insert_local.png,
- pbds_cc_hash_random_int_subscript_timing_test_insert_local.svg,
- pbds_container_tag_hierarchy.pdf,
- pbds_container_tag_hierarchy.png,
- pbds_container_tag_hierarchy.svg,
- pbds_different_underlying_dss_1.png,
- pbds_different_underlying_dss_2.png,
- pbds_embedded_lists_1.png, pbds_embedded_lists_2.png,
- pbds_embedded_lists_3.png, pbds_exception_hierarchy.pdf,
- pbds_exception_hierarchy.png, pbds_exception_hierarchy.svg,
- pbds_gp_hash_random_int_find_timing_test_local.pdf,
- pbds_gp_hash_random_int_find_timing_test_local.png,
- pbds_gp_hash_random_int_find_timing_test_local.svg,
- pbds_gp_hash_random_int_subscript_timing_test_find_local.pdf,
- pbds_gp_hash_random_int_subscript_timing_test_find_local.png,
- pbds_gp_hash_random_int_subscript_timing_test_find_local.svg,
- pbds_gp_hash_random_int_subscript_timing_test_insert_local.pdf,
- pbds_gp_hash_random_int_subscript_timing_test_insert_local.png,
- pbds_gp_hash_random_int_subscript_timing_test_insert_local.svg,
- pbds_hash_policy_cd.png,
- pbds_hash_random_int_erase_mem_usage_test_local.pdf,
- pbds_hash_random_int_erase_mem_usage_test_local.png,
- pbds_hash_random_int_erase_mem_usage_test_local.svg,
- pbds_hash_ranged_hash_range_hashing_fns.png,
- pbds_hash_range_hashing_seq_diagram2.png,
- pbds_hash_range_hashing_seq_diagram.png,
- pbds_hash_zlob_random_int_find_timing_test_local.pdf,
- pbds_hash_zlob_random_int_find_timing_test_local.png,
- pbds_hash_zlob_random_int_find_timing_test_local.svg,
- pbds_insert_resize_sequence_diagram1.png,
- pbds_insert_resize_sequence_diagram2.png,
- pbds_insert_resize_sequence_diagram3.png,
- pbds_invalidation_guarantee_erase.png,
- pbds_invalidation_tag_hierarchy.pdf,
- pbds_invalidation_tag_hierarchy.png,
- pbds_invalidation_tag_hierarchy.svg, pbds_list_update.png,
- pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf,
- pbds_multimap_text_find_timing_test_large_s2p_hash_local.png,
- pbds_multimap_text_find_timing_test_large_s2p_hash_local.svg,
- pbds_multimap_text_find_timing_test_large_s2p_tree_local.pdf,
- pbds_multimap_text_find_timing_test_large_s2p_tree_local.png,
- pbds_multimap_text_find_timing_test_large_s2p_tree_local.svg,
- pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf,
- pbds_multimap_text_find_timing_test_small_s2p_hash_local.png,
- pbds_multimap_text_find_timing_test_small_s2p_hash_local.svg,
- pbds_multimap_text_find_timing_test_small_s2p_tree_local.pdf,
- pbds_multimap_text_find_timing_test_small_s2p_tree_local.png,
- pbds_multimap_text_find_timing_test_small_s2p_tree_local.svg,
- pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.pdf,
- pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.png,
- pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.svg,
- pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.pdf,
- pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.png,
- pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.svg,
- pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.pdf,
- pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.png,
- pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.svg,
- pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.pdf,
- pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.png,
- pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.svg,
- pbds_multimap_text_insert_timing_test_large_s2p_hash_local.pdf,
- pbds_multimap_text_insert_timing_test_large_s2p_hash_local.png,
- pbds_multimap_text_insert_timing_test_large_s2p_hash_local.svg,
- pbds_multimap_text_insert_timing_test_large_s2p_tree_local.pdf,
- pbds_multimap_text_insert_timing_test_large_s2p_tree_local.png,
- pbds_multimap_text_insert_timing_test_large_s2p_tree_local.svg,
- pbds_multimap_text_insert_timing_test_small_s2p_hash_local.pdf,
- pbds_multimap_text_insert_timing_test_small_s2p_hash_local.png,
- pbds_multimap_text_insert_timing_test_small_s2p_hash_local.svg,
- pbds_multimap_text_insert_timing_test_small_s2p_tree_local.pdf,
- pbds_multimap_text_insert_timing_test_small_s2p_tree_local.png,
- pbds_multimap_text_insert_timing_test_small_s2p_tree_local.svg,
- pbds_node_invariants.png,
- pbds_pairing_priority_queue_text_push_pop_timing_test_local.pdf,
- pbds_pairing_priority_queue_text_push_pop_timing_test_local.png,
- pbds_pairing_priority_queue_text_push_pop_timing_test_local.svg,
- pbds_pairing_priority_queue_text_push_timing_test_local.pdf,
- pbds_pairing_priority_queue_text_push_timing_test_local.png,
- pbds_pairing_priority_queue_text_push_timing_test_local.svg,
- pbds_pat_trie.png, pbds_point_iterator_hierarchy.png,
- pbds_point_iterators_range_ops_1.png,
- pbds_point_iterators_range_ops_2.png,
- pbds_priority_queue_different_underlying_dss.png,
- pbds_priority_queue_random_int_push_pop_timing_test_local.pdf,
- pbds_priority_queue_random_int_push_pop_timing_test_local.png,
- pbds_priority_queue_random_int_push_pop_timing_test_local.svg,
- pbds_priority_queue_random_int_push_timing_test_local.pdf,
- pbds_priority_queue_random_int_push_timing_test_local.png,
- pbds_priority_queue_random_int_push_timing_test_local.svg,
- pbds_priority_queue_tag_hierarchy.pdf,
- pbds_priority_queue_tag_hierarchy.png,
- pbds_priority_queue_tag_hierarchy.svg,
- pbds_priority_queue_text_join_timing_test_local.pdf,
- pbds_priority_queue_text_join_timing_test_local.png,
- pbds_priority_queue_text_join_timing_test_local.svg,
- pbds_priority_queue_text_modify_down_timing_test_local.pdf,
- pbds_priority_queue_text_modify_down_timing_test_local.png,
- pbds_priority_queue_text_modify_down_timing_test_local.svg,
- pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.pdf,
- pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.png,
- pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.svg,
- pbds_priority_queue_text_modify_up_timing_test_local.pdf,
- pbds_priority_queue_text_modify_up_timing_test_local.png,
- pbds_priority_queue_text_modify_up_timing_test_local.svg,
- pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.pdf,
- pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.png,
- pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.svg,
- pbds_priority_queue_text_pop_mem_usage_test_local.pdf,
- pbds_priority_queue_text_pop_mem_usage_test_local.png,
- pbds_priority_queue_text_pop_mem_usage_test_local.svg,
- pbds_priority_queue_text_push_pop_timing_test_local.pdf,
- pbds_priority_queue_text_push_pop_timing_test_local.png,
- pbds_priority_queue_text_push_pop_timing_test_local.svg,
- pbds_priority_queue_text_push_timing_test_local.pdf,
- pbds_priority_queue_text_push_timing_test_local.png,
- pbds_priority_queue_text_push_timing_test_local.svg,
- pbds_rationale_null_node_updator.png,
- pbds_resize_policy_cd.png, pbds_restoring_node_invariants.png,
- pbds_simple_list.png,
- pbds_text_find_timing_test_hash_local.pdf,
- pbds_text_find_timing_test_hash_local.png,
- pbds_text_find_timing_test_hash_local.svg,
- pbds_text_find_timing_test_tree_like_local.pdf,
- pbds_text_find_timing_test_tree_like_local.png,
- pbds_text_find_timing_test_tree_like_local.svg,
- pbds_tree_node_invalidations.png,
- pbds_tree_node_invariants.png,
- pbds_tree_node_updator_policy_cd.png,
- pbds_tree_order_statistics_timing_test_local.pdf,
- pbds_tree_order_statistics_timing_test_local.png,
- pbds_tree_order_statistics_timing_test_local.svg,
- pbds_tree_split_join_timing_test_local.pdf,
- pbds_tree_split_join_timing_test_local.png,
- pbds_tree_split_join_timing_test_local.svg,
- pbds_tree_text_insert_timing_test_node_tree_local.pdf,
- pbds_tree_text_insert_timing_test_node_tree_local.png,
- pbds_tree_text_insert_timing_test_node_tree_local.svg,
- pbds_tree_text_insert_timing_test_pat_trie_local.pdf,
- pbds_tree_text_insert_timing_test_pat_trie_local.png,
- pbds_tree_text_insert_timing_test_pat_trie_local.svg,
- pbds_tree_text_insert_timing_test_vector_tree_local.pdf,
- pbds_tree_text_insert_timing_test_vector_tree_local.png,
- pbds_tree_text_insert_timing_test_vector_tree_local.svg,
- pbds_tree_text_lor_find_timing_test_local.pdf,
- pbds_tree_text_lor_find_timing_test_local.png,
- pbds_tree_text_lor_find_timing_test_local.svg,
- pbds_trie_node_updator_policy_cd.png,
- pbds_update_seq_diagram.png): Add.
-
- * doc/html/ext/pb_ds: Remove.
- * doc/html/ext/pb_ds/(acks.html, assoc_container_tag_cd.png,
- assoc_container_tag_cd.svg, assoc_container_traits.html,
- assoc_design.html, assoc_examples.html,
- associative_container_tag.html, assoc_performance_tests.html,
- assoc_regression_tests.html, assoc_tests.html,
- balls_and_bins.png, basic_hash_table.html,
- basic_hash_tag.html, basic_invalidation_guarantee.html,
- basic_tree_assoc_container_const_node_iterator.html,
- basic_tree.html, basic_tree_tag.html, binary_heap_tag.html,
- binary_priority_queue_random_int_push_timing_test_gcc.png,
- binary_priority_queue_random_int_push_timing_test_local.png,
- binary_priority_queue_random_int_push_timing_test_msvc.png,
- binomial_heap_tag.html,
- ccgp_hash_random_int_subscript_timing_test_insert_gcc.png,
- ccgp_hash_random_int_subscript_timing_test_insert_local.png,
- ccgp_hash_random_int_subscript_timing_test_insert_msvc.png,
- cc_hash_max_collision_check_resize_trigger.html,
- cc_hash_random_int_find_timing_test_gcc.png,
- cc_hash_random_int_find_timing_test_local.png,
- cc_hash_random_int_find_timing_test_msvc.png,
- cc_hash_random_int_subscript_timing_test_find_gcc.png,
- cc_hash_random_int_subscript_timing_test_find_local.png,
- cc_hash_random_int_subscript_timing_test_find_msvc.png,
- cc_hash_random_int_subscript_timing_test_insert_gcc.png,
- cc_hash_random_int_subscript_timing_test_insert_local.png,
- cc_hash_random_int_subscript_timing_test_insert_msvc.png,
- cc_hash_table.html, cc_hash_tag.html, checked_by_tidy.gif
- concepts.html, contact.html, container_base.html,
- container_cd.png, container_cd.svg, container_tag.html,
- counter_lu_policy.html, design.html,
- different_underlying_dss.png, direct_mask_range_hashing.html,
- direct_mod_range_hashing.html, disclaimer.html, ds_gen.html,
- embedded_lists_1.png, embedded_lists_2.png,
- embedded_lists_3.png, examples.html, exceptions.html,
- gp_hash_random_int_find_timing_test_gcc.png,
- gp_hash_random_int_find_timing_test_local.png,
- gp_hash_random_int_find_timing_test_msvc.png,
- gp_hash_random_int_subscript_timing_test_find_gcc.png,
- gp_hash_random_int_subscript_timing_test_find_local.png,
- gp_hash_random_int_subscript_timing_test_find_msvc.png,
- gp_hash_random_int_subscript_timing_test_insert_gcc.png,
- gp_hash_random_int_subscript_timing_test_insert_local.png,
- gp_hash_random_int_subscript_timing_test_insert_msvc.png,
- gp_hash_table.html, gp_hash_tag.html,
- hash_based_containers.html, hash_exponential_size_policy.html,
- hash_load_check_resize_trigger.html, hash_policy_cd.png,
- hash_prime_size_policy.html,
- hash_random_int_erase_mem_usage_test_gcc.png,
- hash_random_int_erase_mem_usage_test.html,
- hash_random_int_erase_mem_usage_test_local.png,
- hash_random_int_erase_mem_usage_test_msvc.png,
- hash_random_int_find_find_timing_test.html,
- hash_random_int_subscript_find_timing_test.html,
- hash_random_int_subscript_insert_timing_test.html,
- hash_ranged_hash_range_hashing_fns.png,
- hash_range_hashing_seq_diagram2.png,
- hash_range_hashing_seq_diagram.png,
- hash_standard_resize_policy.html,
- hash_text_find_find_timing_test.html,
- hash_zlob_random_int_find_find_timing_test.html,
- hash_zlob_random_int_find_timing_test_gcc.png,
- hash_zlob_random_int_find_timing_test_local.png,
- hash_zlob_random_int_find_timing_test_msvc.png, index.html,
- insert_error.html, insert_resize_sequence_diagram1.png,
- insert_resize_sequence_diagram2.png,
- insert_resize_sequence_diagram3.png, interface.html,
- introduction.html, invalidation_guarantee_cd.png,
- invalidation_guarantee_erase.png, join_error.html,
- linear_probe_fn.html, list_update.html, list_update_tag.html,
- lu_based_containers.html, lu.png, misc.html, motivation.html,
- move_to_front_lu_policy.html,
- multimap_text_find_timing_test_large.html,
- multimap_text_find_timing_test_large_s2p_hash_gcc.png,
- multimap_text_find_timing_test_large_s2p_hash_local.png,
- multimap_text_find_timing_test_large_s2p_hash_msvc.png,
- multimap_text_find_timing_test_large_s2p_tree_gcc.png,
- multimap_text_find_timing_test_large_s2p_tree_local.png,
- multimap_text_find_timing_test_large_s2p_tree_msvc.png,
- multimap_text_find_timing_test_small.html,
- multimap_text_find_timing_test_small_s2p_hash_gcc.png,
- multimap_text_find_timing_test_small_s2p_hash_local.png,
- multimap_text_find_timing_test_small_s2p_hash_msvc.png,
- multimap_text_find_timing_test_small_s2p_tree_gcc.png,
- multimap_text_find_timing_test_small_s2p_tree_local.png,
- multimap_text_find_timing_test_small_s2p_tree_msvc.png,
- multimap_text_insert_mem_usage_test_large.html,
- multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png,
- multimap_text_insert_mem_usage_test_large_s2p_hash_local.png,
- multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png,
- multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png,
- multimap_text_insert_mem_usage_test_large_s2p_tree_local.png,
- multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png,
- multimap_text_insert_mem_usage_test_small.html,
- multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png,
- multimap_text_insert_mem_usage_test_small_s2p_hash_local.png,
- multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png,
- multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png,
- multimap_text_insert_mem_usage_test_small_s2p_tree_local.png,
- multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png,
- multimap_text_insert_timing_test_large.html,
- multimap_text_insert_timing_test_large_s2p_hash_gcc.png,
- multimap_text_insert_timing_test_large_s2p_hash_local.png,
- multimap_text_insert_timing_test_large_s2p_hash_msvc.png,
- multimap_text_insert_timing_test_large_s2p_tree_gcc.png,
- multimap_text_insert_timing_test_large_s2p_tree_local.png,
- multimap_text_insert_timing_test_large_s2p_tree_msvc.png,
- multimap_text_insert_timing_test_small.html,
- multimap_text_insert_timing_test_small_s2p_hash_gcc.png,
- multimap_text_insert_timing_test_small_s2p_hash_local.png,
- multimap_text_insert_timing_test_small_s2p_hash_msvc.png,
- multimap_text_insert_timing_test_small_s2p_tree_gcc.png,
- multimap_text_insert_timing_test_small_s2p_tree_local.png,
- multimap_text_insert_timing_test_small_s2p_tree_msvc.png,
- node_invariant_invalidations.png, node_invariants.png,
- null_hash_fn.html, null_lu_metadata.html,
- null_mapped_type.html, null_probe_fn.html,
- null_tree_node_update.html, null_trie_node_update.html,
- ov_tree_tag.html, pairing_heap_tag.html,
- pairing_priority_queue_text_push_pop_timing_test_gcc.png,
- pairing_priority_queue_text_push_pop_timing_test_local.png,
- pairing_priority_queue_text_push_pop_timing_test_msvc.png,
- pairing_priority_queue_text_push_timing_test_gcc.png,
- pairing_priority_queue_text_push_timing_test_local.png,
- pairing_priority_queue_text_push_timing_test_msvc.png,
- pat_trie.png, pat_trie_tag.html,
- point_invalidation_guarantee.html, point_iterators_cd.png,
- point_iterators_range_ops_1.png,
- point_iterators_range_ops_2.png, pq_container_traits.html,
- pq_design.html, pq_different_underlying_dss.png,
- pq_examples.html, pq_performance_tests.html,
- pq_regression_tests.html, pq_tests.html, prerequisites.html,
- priority_queue.html,
- priority_queue_random_int_push_pop_timing_test_gcc.png,
- priority_queue_random_int_push_pop_timing_test.html,
- priority_queue_random_int_push_pop_timing_test_local.png,
- priority_queue_random_int_push_pop_timing_test_msvc.png,
- priority_queue_random_int_push_timing_test_gcc.png,
- priority_queue_random_int_push_timing_test.html,
- priority_queue_random_int_push_timing_test_local.png,
- priority_queue_random_int_push_timing_test_msvc.png,
- priority_queue_tag_cd.png, priority_queue_tag_cd.svg,
- priority_queue_tag.html,
- priority_queue_text_join_timing_test_gcc.png,
- priority_queue_text_join_timing_test.html,
- priority_queue_text_join_timing_test_local.png,
- priority_queue_text_join_timing_test_msvc.png,
- priority_queue_text_modify_down_timing_test_gcc.png,
- priority_queue_text_modify_down_timing_test.html,
- priority_queue_text_modify_down_timing_test_local.png,
- priority_queue_text_modify_down_timing_test_msvc.png,
- priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png,
- priority_queue_text_modify_down_timing_test_pairing_thin_local.png,
- priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png,
- priority_queue_text_modify_up_timing_test_gcc.png,
- priority_queue_text_modify_up_timing_test.html,
- priority_queue_text_modify_up_timing_test_local.png,
- priority_queue_text_modify_up_timing_test_msvc.png,
- priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png,
- priority_queue_text_modify_up_timing_test_pairing_thin_local.png,
- priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png,
- priority_queue_text_pop_mem_usage_test_gcc.png,
- priority_queue_text_pop_mem_usage_test.html,
- priority_queue_text_pop_mem_usage_test_local.png,
- priority_queue_text_pop_mem_usage_test_msvc.png,
- priority_queue_text_push_pop_timing_test_gcc.png,
- priority_queue_text_push_pop_timing_test.html,
- priority_queue_text_push_pop_timing_test_local.png,
- priority_queue_text_push_pop_timing_test_msvc.png,
- priority_queue_text_push_timing_test_gcc.png,
- priority_queue_text_push_timing_test.html,
- priority_queue_text_push_timing_test_local.png,
- priority_queue_text_push_timing_test_msvc.png,
- PythonPoweredSmall.gif quadratic_probe_fn.html,
- random_int_find_find_timing_test_tree_gcc.png,
- random_int_find_find_timing_test_tree_local.png,
- random_int_find_find_timing_test_tree_msvc.png,
- range_invalidation_guarantee.html,
- rationale_null_node_updator.png, rb_tree_tag.html,
- rc_binomial_heap_tag.html, references.html, resize_error.html,
- resize_policy_cd.png, restoring_node_invariants.png,
- sample_probe_fn.html, sample_ranged_hash_fn.html,
- sample_ranged_probe_fn.html, sample_range_hashing.html,
- sample_resize_policy.html, sample_resize_trigger.html,
- sample_size_policy.html, sample_tree_node_update.html,
- sample_trie_access_traits.html, sample_trie_node_update.html,
- sample_update_policy.html, simple_list.png,
- splay_tree_tag.html, tests.html,
- text_find_timing_test_hash_gcc.png,
- text_find_timing_test_hash_local.png,
- text_find_timing_test_hash_msvc.png,
- text_find_timing_test_tree_like_gcc.png,
- text_find_timing_test_tree_like_local.png,
- text_find_timing_test_tree_like_msvc.png, thin_heap_tag.html,
- tree_based_containers.html, tree.html,
- tree_node_iterator.html, tree_node_updator_policy_cd.png,
- tree_order_statistics_node_update.html,
- tree_order_statistics_timing_test_gcc.png,
- tree_order_statistics_timing_test.html,
- tree_order_statistics_timing_test_local.png,
- tree_order_statistics_timing_test_msvc.png,
- tree_random_int_find_find_timing_test.html,
- tree_split_join_timing_test_gcc.png,
- tree_split_join_timing_test.html,
- tree_split_join_timing_test_local.png,
- tree_split_join_timing_test_msvc.png, tree_tag.html,
- tree_text_find_find_timing_test.html,
- tree_text_insert_timing_test.html,
- tree_text_insert_timing_test_node_tree_gcc.png,
- tree_text_insert_timing_test_node_tree_local.png,
- tree_text_insert_timing_test_node_tree_msvc.png,
- tree_text_insert_timing_test_pat_trie_gcc.png,
- tree_text_insert_timing_test_pat_trie_local.png,
- tree_text_insert_timing_test_pat_trie_msvc.png,
- tree_text_insert_timing_test_vector_tree_gcc.png,
- tree_text_insert_timing_test_vector_tree_local.png,
- tree_text_insert_timing_test_vector_tree_msvc.png,
- tree_text_lor_find_find_timing_test.html,
- tree_text_lor_find_timing_test_gcc.png,
- tree_text_lor_find_timing_test_local.png,
- tree_text_lor_find_timing_test_msvc.png,
- trie_based_containers.html, trie_const_node_iterator.html,
- trie.html, trie_node_iterator.html,
- trie_node_updator_policy_cd.png,
- trie_order_statistics_node_update.html,
- trie_prefix_search_node_update.html,
- trie_string_access_traits.html, trie_tag.html,
- trivial_iterator_tag.html, tutorial.html,
- update_policy_cd.png, update_seq_diagram.png): Remove.
-
-2011-07-27 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/49813
- * include/c_global/cmath: Use _GLIBCXX_CONSTEXPR and constexpr.
-
-2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
-
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Updated.
-
-2011-07-25 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/array (at): Remove constexpr when -fno-exceptions.
- * testsuite/23_containers/array/at_neg.cc: Test.
-
-2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
- Nathan Ridge <zeratul976@hotmail.com>
-
- PR libstdc++/49836
- * include/bits/stl_vector.h (vector<>::_M_emplace_back_aux):
- Declare.
- (vector<>::push_back(const value_type&)): Use it.
- * include/bits/vector.tcc: Define.
- (vector<>::emplace_back(_Args&&...)): Use it.
- * testsuite/util/testsuite_tr1.h (CopyConsOnlyType, MoveConsOnlyType):
- Add.
- * testsuite/23_containers/vector/modifiers/push_back/49836.cc: New.
- * testsuite/23_containers/deque/modifiers/push_back/49836.cc:
- Likewise.
- * testsuite/23_containers/deque/modifiers/push_front/49836.cc:
- Likewise.
- * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
- Adjust dg-error line number.
- * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
- Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_2_neg.cc: Likewise.
-
-2011-07-24 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/hashtable_policy.h (_Prime_rehash_policy::_M_next_bkt,
- _M_bkt_for_elements, _M_need_rehash): Fix typos in the last commit.
-
-2011-07-24 François Dumont <francois.cppdevs@free.fr>
-
- * include/bits/hashtable_policy.h (_Prime_rehash_policy): Use
- __builtin_floor rather than __builtin_ceil to compute next resize
- value.
- * testsuite/23_containers/unordered_set/hash_policy/load_factor.cc:
- New.
-
-2011-07-22 Benjamin Kosnik <bkoz@redhat.com>
- Daniel Krugler <daniel.kruegler@googlemail.com>
-
- * include/bits/move.h (move, forward): Mark constexpr.
- * include/bits/stl_pair.h (pair): Mark move ctors constexpr.
- * testsuite/20_util/pair/make_pair/constexpr.cc: New.
- * testsuite/20_util/pair/cons/constexpr.cc: Add tests.
-
-2011-07-22 Ian Lance Taylor <iant@google.com>
-
- * fragment.am (CONFIG_CXXFLAGS): Add -frandom-seed.
- * Makefile.in: Rebuild.
- * doc/Makefile.in: Rebuild.
- * include/Makefile.in: Rebuild.
- * libsupc++/Makefile.in: Rebuild.
- * po/Makefile.in: Rebuild.
- * python/Makefile.in: Rebuild.
- * src/Makefile.in: Rebuild.
- * testsuite/Makefile.in: Rebuild.
-
-2011-07-21 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Move...
- * testsuite/ext/pb_ds/regression/tree_set_rand.cc: ... here.
- * testsuite/ext/pb_ds/regression/tree_no_data_map_rand_debug.cc: Move...
- * testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc: ... here.
- * testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Move...
- * testsuite/ext/pb_ds/regression/tree_map_rand.cc: ... here.
- * testsuite/ext/pb_ds/regression/tree_data_map_rand_debug.cc: Move...
- * testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc: ... here.
-
- * testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Move...
- * testsuite/ext/pb_ds/regression/trie_set_rand.cc: ... here.
- * testsuite/ext/pb_ds/regression/trie_no_data_map_rand_debug.cc: Move...
- * testsuite/ext/pb_ds/regression/trie_set_rand_debug.cc: ... here.
- * testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Move...
- * testsuite/ext/pb_ds/regression/trie_map_rand.cc: ... here.
- * testsuite/ext/pb_ds/regression/trie_data_map_rand_debug.cc: Move...
- * testsuite/ext/pb_ds/regression/trie_map_rand_debug.cc: ... here.
-
- * testsuite/ext/pb_ds/regression/list_update_no_data_map_rand.cc: Move.
- * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: ...here.
- * testsuite/ext/pb_ds/regression/list_update_no_data_map_rand_debug.cc:
- Move...
- * testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc: ...here.
- * testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Move...
- * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: ...here.
- * testsuite/ext/pb_ds/regression/list_update_data_map_rand_debug.cc:
- Move...
- * testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc: ...here.
-
- * testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Move...
- * testsuite/ext/pb_ds/regression/hash_set_rand.cc: ...here.
- * testsuite/ext/pb_ds/regression/hash_no_data_map_rand_debug.cc: Move...
- * testsuite/ext/pb_ds/regression/hash_set_rand_debug.cc: ...here.
-
- * testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Move...
- * testsuite/ext/pb_ds/regression/hash_map_rand.cc: ...here.
- * testsuite/ext/pb_ds/regression/hash_data_map_rand_debug.cc: Move...
- * testsuite/ext/pb_ds/regression/hash_map_rand_debug.cc: ...here.
-
-2011-07-21 François Dumont <francois.cppdevs@free.fr>
-
- * include/debug/safe_unordered_sequence.h,
- safe_unordered_sequence.tcc: Rename respectively in...
- * include/debug/safe_unordered_container.h,
- safe_unordered_container.tcc: ...those. _Safe_unordered_sequence
- rename _Safe_unordered_container.
- * include/debug/safe_unordered_base.h: _Safe_unordered_sequence_base
- rename _Safe_unordered_container_base.
- * include/debug/unordered_map, unordered_set: Adapt to previous
- modifications.
- * config/abi/pre/gnu.ver: Likewise.
- * src/debug.cc: Likewise.
- * include/Makefile.am: Likewise.
- * include/Makefile.in: Regenerate.
-
-2011-07-21 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/mutex (timed_mutex, recursive_timed_mutex): Update
- to use steady_clock instead of monotonic_clock.
- * config/abi/pre/gnu.ver: Export steady_clock::now.
-
-2011-07-20 Benjamin Kosnik <bkoz@redhat.com>
- Daniel Krugler <daniel.kruegler@googlemail.com>
-
- * include/std/array (array::at, array::operator[]): Mark constexpr.
- * testsuite/23_containers/array/requirements/
- constexpr_element_access.cc: Add.
-
-2011-07-20 Benjamin Kosnik <bkoz@redhat.com>
- Daniel Krugler <daniel.kruegler@googlemail.com>
-
- * include/std/chrono: (system_clock::is_steady): Update to N3291
- from is_monotonic.
- (time_point): Mark nonmember arithmetic operators constexpr.
- * src/chrono.cc: Modify for above.
- * src/compatibility-c++0x.cc: Same.
- * testsuite/20_util/time_point/nonmember/constexpr.cc: New.
- * testsuite/20_util/time_point/1.cc: Modify.
- * testsuite/20_util/system_clock/constexpr_data.cc: Modify.
- * testsuite/20_util/system_clock/1.cc: Modify.
- * testsuite/20_util/monotonic_clock/constexpr_data.cc: Move to...
- * testsuite/20_util/steady_clock/constexpr_data.cc: ...here.
- * testsuite/30_threads/condition_variable/members/2.cc: Modify.
- * testsuite/30_threads/condition_variable_any/members/2.cc: Modify.
-
-2011-07-20 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/system_error: Use noexcept.
- * src/system_error.cc: Likewise.
- * testsuite/19_diagnostics/error_condition/modifiers/39881.cc: Adjust.
- * testsuite/19_diagnostics/error_condition/cons/39881.cc: Likewise.
- * testsuite/19_diagnostics/error_code/modifiers/39882.cc: Likewise.
- * testsuite/19_diagnostics/error_code/cons/39882.cc: Likewise.
- * testsuite/util/testsuite_error.h: Likewise.
-
- * include/std/system_error (error_code::error_code(_ErrorCodeEnum)):
- Use enable_if on template parameter default.
- (error_condition::error_condition(_ErrorConditionEnum)): Likewise.
-
-2011-07-20 Ed Smith-Rowland <3dw4rd@verizon.net>
-
- * include/precompiled/stdc++.h: Add scoped_allocator.
-
-2011-07-20 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/bitset (operator[]): Make constexpr.
- * testsuite/23_containers/bitset/operations/constexpr.cc: New.
-
-2011-07-20 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::
- _Safe_local_iterator(const _Iterator&, size_type, const _Sequence*)):
- Fix typo.
-
-2011-07-19 François Dumont <francois.cppdevs@free.fr>
-
- * include/debug/safe_unordered_base.h, safe_unordered_sequence.h,
- safe_unordered_sequence.tcc, safe_local_iterator.h,
- safe_local_iterator.tcc: New, support for unordered sequence safe
- local iterators.
- * include/Makefile.am: Add previous files.
- * include/Makefile.in: Regenerate.
- * include/debug/unordered_map, unordered_set: Implement
- _Safe_unordered_sequence and expose _Safe_local_iterator.
- * include/debug/safe_iterator.h, safe_iterator.tcc: Refactor
- _Safe_iterator::_M_get_distance static method to expose it as
- __get_distance function and use it in _Safe_local_iterator type.
- * include/debug/formatter.h: Add __msg_local_iter_compare_bad
- _Debug_msg_id enum entry to notify invalid comparison between local
- iterators from different buckets. Add _Parameter constructor from
- _Safe_local_iterator.
- * include/debug/functions.h: Add __valid_range overload for
- _Safe_local_iterator.
- * src/debug.cc: Add _Safe_unordered_sequence_base and
- _Safe_local_iterator_base methods implementations.
- * config/abi/pre/gnu.ver: Add export of some
- _Safe_unordered_sequence_base and _Safe_local_iterator_base methods.
- * testsuite/util/debug/checks.h: Add use_invalid_iterator function to
- simulate use of a singular iterator.
- * testsuite/util/debug/unordered_checks.h: New, several functions
- to simulate classic invalid usage of unordered sequence local
- iterators.
- * testsuite/23_containers/unordered_map/debug/
- use_erased_local_iterator_neg.cc, invalid_local_iterator_range_neg.cc,
- use_invalid_local_iterator_neg.cc, use_invalid_iterator_neg.cc,
- invalid_local_iterator_compare_neg.cc: New.
- * testsuite/23_containers/unordered_multimap/debug/
- use_erased_local_iterator_neg.cc, invalid_local_iterator_range_neg.cc,
- use_invalid_local_iterator_neg.cc, use_invalid_iterator_neg.cc,
- invalid_local_iterator_compare_neg.cc: New.
- * testsuite/23_containers/unordered_set/debug/
- use_erased_local_iterator_neg.cc, invalid_local_iterator_range_neg.cc,
- use_invalid_local_iterator_neg.cc, use_invalid_iterator_neg.cc,
- invalid_local_iterator_compare_neg.cc: New.
- * testsuite/23_containers/unordered_multiset/debug/
- use_erased_local_iterator_neg.cc, invalid_local_iterator_range_neg.cc,
- use_invalid_local_iterator_neg.cc, use_invalid_iterator_neg.cc,
- invalid_local_iterator_compare_neg.cc: New.
-
-2011-07-18 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/48430
- * include/bits/shared_ptr.h (struct hash<shared_ptr<>>): Use
- __hash_base.
- * include/bits/unique_ptr.h (struct hash<unique_ptr<>>): Likewise.
-
-2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * crossconfig.m4 (*-netware): Remove.
- * configure: Regenerate.
-
-2011-07-15 Yufeng Zhang <yufeng.zhang@arm.com>
-
- * config/locale/newlib/ctype_members.cc: New file.
- * acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Add a new C locale
- kind: newlib. Configure to use the newlib specific
- ctype_members.cc when with_newlib is enabled.
- * configure: Regenerate.
-
-2011-07-15 Paolo Carlini <paolo.carlini@oracle.com>
- Jakub Jelinek <jakub@redhat.com>
-
- PR libstdc++/49745
- * acinclude.m4 ([GLIBCXX_CHECK_GTHREADS]): Check separately for
- _POSIX_TIMEOUTS and define _GTHREADS_USE_MUTEX_TIMEDLOCK.
- * libsupc++/guard.cc: Include <unistd.h>.
- * testsuite/17_intro/headers/c++1998/49745.cc: New.
- * configure: Regenerate.
- * config.h.in: Likewise.
-
-2011-07-11 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/49559
- * include/bits/stl_algo.h (__move_merge_backward): Remove.
- (__move_merge_adaptive, __move_merge_adaptive_backward): New.
- (__merge_adaptive): Use the latter two.
- (__rotate_adaptive): Avoid self move-assignment.
- * include/bits/stl_algobase.h (move_backward): Fix comment.
- * testsuite/25_algorithms/stable_sort/49559.cc: New.
- * testsuite/25_algorithms/inplace_merge/49559.cc: Likewise.
- * testsuite/25_algorithms/inplace_merge/moveable.cc: Extend.
- * testsuite/25_algorithms/inplace_merge/moveable2.cc: Likewise.
- * testsuite/util/testsuite_rvalref.h (rvalstruct::operator=
- (rvalstruct&&)): Check for self move-assignment.
-
-2011-07-11 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/util/testsuite_allocator.h (propagating_allocator<>::
- operator=(const propagating_allocator<>&)): Retun *this.
-
-2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/Makefile.am: Add new header.
- * include/Makefile.in: Regenerate.
- * include/std/scoped_allocator: New.
- * doc/xml/manual/status_cxx200x.xml: Update.
- * testsuite/20_util/scoped_allocator/1.cc: New.
- * testsuite/20_util/scoped_allocator/propagation.cc: New.
- * testsuite/20_util/scoped_allocator/requirements/typedefs.cc: New.
- * testsuite/20_util/scoped_allocator/requirements/
- explicit_instantiation.cc: New.
-
-2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/stl_vector.h: Use new allocator model in C++0x mode.
- * include/bits/vector.tcc: Likewise.
- * testsuite/util/testsuite_allocator.h (propagating_allocator): Define.
- * testsuite/23_containers/vector/allocator/copy_assign.cc: New.
- * testsuite/23_containers/vector/allocator/noexcept.cc: New.
- * testsuite/23_containers/vector/allocator/copy.cc: New.
- * testsuite/23_containers/vector/allocator/swap.cc: New.
- * testsuite/23_containers/vector/allocator/move_assign.cc: New.
- * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
- Adjust dg-error line numbers.
- * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
- Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_2_neg.cc: Likewise.
-
-2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/ext/alloc_traits.h (__allocator_always_compares_equal): New
- trait, provide partial specializations for known allocators.
- (__alloc_traits::construct, __alloc_traits::destroy): Overload for
- non-standard pointer types.
- (__alloc_traits::_S_always_equal): New trait for use with noexcept.
- (__alloc_traits::_S_nothrow_move): Likewise.
- (__alloc_traits::_S_nothrow_swap): Likewise.
-
-2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/ext/cast.h: Fix typo in include guard.
- * include/ext/pointer.h (_Unqualified_type): Remove redundant
- partial specializations for volatile types. Fix typos in comments.
- (pointer_traits<_Pointer_adaptor<Tp>>::pointer_to): Define.
-
-2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/49668
- * include/std/functional (__bind_simple): Define.
- * include/std/future (_Task_setter): Parameterize by type of result
- pointer instead of state object.
- (_S_task_setter): Type deduction helper.
- (_Task_state): Use _S_task_setter and __bind_simple.
- (_Deferred_state, _Async_state): Store call wrapper directly not as
- std::function. Use _S_task_setter and __bind_simple.
- (_S_make_deferred_state, _S_make_async_state): Type deduction helpers.
- (async): Use new functions and __bind_simple.
- * include/std/mutex (call_once): Use __bind_simple.
- * include/std/thread (thread): Likewise. Remove unused headers.
- * src/thread.cc: Add header.
- * testsuite/30_threads/async/49668.cc: New.
- * testsuite/30_threads/call_once/49668.cc: New.
- * testsuite/30_threads/thread/cons/49668.cc: New.
- * testsuite/30_threads/thread/cons/moveable.cc: Remove unused bool.
+ * python/libstdcxx/v6/printers.py (StdForwardListPrinter): Add.
+ * testsuite/libstdc++-prettyprinters/cxx11.cc: New.
-2011-07-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+2012-01-06 Jason Merrill <jason@redhat.com>
- * configure.host (abi_baseline_subdir_switch): Describe.
- Provide default.
- (*-*-solaris2.[89], *-*-solaris2.1[0-9]): Override.
- * acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Substitute
- baseline_subdir_switch.
- * testsuite/Makefile.am (site.exp): Emit it.
- (baseline_subdir): Use it.
- * testsuite/libstdc++-abi/abi.exp: Use it.
- * configure: Regenerate.
- * Makefile.in: Regenerate.
- * doc/Makefile.in: Regenerate.
- * include/Makefile.in: Regenerate.
- * libsupc++/Makefile.in: Regenerate.
- * po/Makefile.in: Regenerate.
- * python/Makefile.in: Regenerate.
- * src/Makefile.in: Regenerate.
- * testsuite/Makefile.in: Regenerate.
+ * testsuite/abi/demangle/regression/cw-16.cc (main): Adjust
+ expected demangling.
-2011-06-29 François Dumont <francois.cppdevs@free.fr>
+2012-01-06 Jonathan Wakely <jwakely.gcc@gmail.com>
- * include/debug/set.h, unordered_map, multiset.h, forward_list,
- unordered_set, vector, deque, string, list, multimap.h: Remove
- base class default constructor calls.
- * include/debug/map.h: Likewise and cleanup several redefinition of
- base iterator typedef.
+ PR libstdc++/51504
+ * doc/xml/manual/debug.xml: Suggest using symbol interposition
+ to override symbols using annotation macros.
-2011-06-29 Nathan Sidwell <nathan@codesourcery.com>
+2012-01-05 François Dumont <fdumont@gcc.gnu.org>
- * libsupc++/eh_arm.c (__cxa_type_match): Construct address of
- thrown object here. Return succeded_with_ptr_to_base for all
- pointer cases.
+ * include/bits/hashtable_policy.h (_Hashtable_base<>::_M_eq()):
+ protected rather than private, use it...
+ * include/bits/hashtable.h (_Hashtable<>::key_eq()): ... here.
+ * testsuite/23_containers/unordered_set/observers.cc: New.
+ * testsuite/23_containers/unordered_multiset/observers.cc: New.
+ * testsuite/23_containers/unordered_map/observers.cc: New.
+ * testsuite/23_containers/unordered_multimap/observers.cc: New.
-2011-06-23 Jonathan Wakely <jwakely.gcc@gmail.com>
+2012-01-03 François Dumont <fdumont@gcc.gnu.org>
- * testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc: Fix for
- C++0x mode.
- * testsuite/25_algorithms/sort/35588.cc: Likewise.
- * testsuite/26_numerics/headers/complex/synopsis.cc: Likewise.
-
-2011-06-22 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/20_util/bind/socket.cc: Use variable and remove attribute.
-
-2011-06-22 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: Avoid -Wall
- warning.
-
-2011-06-22 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/20_util/reference_wrapper/invoke.cc: Avoid -Wall warnings.
- * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
- * testsuite/20_util/reference_wrapper/invoke-2.cc: Likewise.
- * testsuite/20_util/allocator_traits/members/allocate_hint.cc:
- Likewise.
- * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
- * testsuite/20_util/bind/socket.cc: Likewise.
- * testsuite/20_util/pointer_traits/pointer_to.cc: Likewise.
- * testsuite/util/testsuite_random.h: Likewise.
-
-2011-06-22 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/Makefile.am: Add alloc_traits.h headers.
- * include/Makefile.in: Regenerate.
- * include/std/memory: Include uses_allocator.h explicitly.
- * include/bits/allocator.h (allocator_traits): Move to ...
- * include/bits/alloc_traits.h: New header.
- * include/ext/alloc_traits.h (__alloc_traits): Extension to provide
- a common allocator interface for C++98 and C++0x.
- * include/bits/stl_construct.h: Use __alloc_traits.
- * include/bits/stl_uninitialized.h: Likewise.
-
-2011-06-22 Daniel Krugler <daniel.kruegler@googlemail.com>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/move.h (__is_nothrow_swappable): Add.
- (swap(_Tp(&)[_Nm], _Tp(&)[_Nm])): Use noexcept.
- * include/bits/algorithmfwd.h: Adjust.
- * testsuite/25_algorithms/swap/noexcept.cc: New.
-
-2011-06-21 Jakub Jelinek <jakub@redhat.com>
-
- * testsuite/Makefile.am (check_DEJAGNU_normal_targets): Add
- check-DEJAGNUnormal[4-9].
- (check-DEJAGNU): Split into 10 jobs for parallel testing instead of 4.
- * testsuite/Makefile.in: Regenerated.
-
-2011-06-20 Daniel Krugler <daniel.kruegler@googlemail.com>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/tuple (__conv_types, __one_by_one_convertible,
- __all_convertible): Add.
- (tuple): Use the latter.
- (tuple<_T1>): Remove.
- * testsuite/20_util/uses_allocator/cons_neg.cc: Adjust dg-error
- line number.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
-
-2011-06-14 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/ptr_traits.h (pointer_traits<T*>::pointer_to): Use
- noexcept.
-
-2011-06-14 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/valarray (~valarray): Use noexcept.
- * include/bits/unique_ptr.h (~unique_ptr): Likewise.
- * testsuite/26_numerics/valarray/noexcept_move_construct.cc: New.
- * testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc:
- Likewise.
- * testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc:
- Likewise.
- * testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc:
- Likewise.
-
-2011-06-14 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/functional: Use noexcept.
- * include/bits/stl_tempbuf.h: Likewise.
-
-2011-06-12 François Dumont <francois.cppdevs@free.fr>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/allocator.h (__shrink_to_fit): Rename to
- __shrink_to_fit_aux, fix.
- * include/bits/stl_vector.h (_M_shrink_to_fit): Declare.
- (shrink_to_fit): Use the latter.
- * include/debug/vector (shrink_to_fit): Likewise.
- * include/bits/vector.tcc (_M_shrink_to_fit): Define.
- * include/bits/stl_deque.h (_M_shrink_to_fit): Declare.
- (shrink_to_fit): Use the latter.
- * include/debug/deque (shrink_to_fit): Likewise.
- * include/bits/deque.tcc (_M_shrink_to_fit): Define.
- * include/bits/vector.tcc (vector<bool>::_M_reallocate): Add.
- * include/bits/stl_bvector.h (_M_shrink_to_fit): Declare.
- (shrink_to_fit): Use the latter.
- (reserve): Use _M_reallocate, move inline.
- (_Bvector_base<>::_S_nword): Add, use it throughout.
- * include/debug/string (shrink_to_fit): Redo.
- * include/ext/vstring.h (shrink_to_fit): Optimize.
- * include/bits/basic_string.h (shrink_to_fit): Likewise.
- * testsuite/21_strings/debug/shrink_to_fit.cc: New.
- * testsuite/23_containers/vector/debug/shrink_to_fit.cc: Likewise.
- * testsuite/23_containers/vector/debug/bool/shrink_to_fit.cc:
- Likewise.
- * testsuite/23_containers/vector/bool/capacity/shrink_to_fit.cc:
- Likewise.
- * testsuite/23_containers/deque/debug/shrink_to_fit.cc: Likewise.
-
-2011-06-11 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/ext/extptr_allocator.h (construct, destroy): Fix for C++0x
- mode by overloading to take allocator's pointer type.
- * testsuite/23_containers/vector/ext_pointer/types/2.cc: New.
- * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
- 2.cc: New.
-
-2011-06-11 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/20_util/allocator_traits/requirements/
- explicit_instantiation.cc: Add another instantiation.
-
-2011-06-11 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/20_util/allocator_traits/requirements/typedefs.cc: Check
- for allocator_type and value_type.
-
-2011-06-11 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/30_threads/packaged_task/uses_allocator.cc: New.
- * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
-
-2011-06-10 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/ext/throw_allocator.h: Use noexcept.
- * include/ext/pool_allocator.h: Likewise.
- * include/ext/bitmap_allocator.h: Likewise.
- * include/ext/new_allocator.h: Likewise.
- * include/ext/malloc_allocator.h: Likewise.
- * include/ext/array_allocator.h: Likewise.
- * include/ext/mt_allocator.h: Likewise.
- * include/ext/extptr_allocator.h: Likewise.
- * testsuite/util/testsuite_allocator.h: Likewise; do not include
- <cassert> directly, include <testsuite_hooks.h> instead.
-
-2011-06-10 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/ext/pb_ds/*: Doxygen markup redo.
- * include/Makefile.am: Fold in constructors_destructor_fn_imps.hpp.
- * include/Makefile.in: Regenerate.
-
-2011-06-10 Jason Merrill <jason@redhat.com>
-
- * testsuite/20_util/bind/ref_neg.cc: Remove wrong test lines.
-
- * testsuite/20_util/bind/ref_neg.cc: Remove dg-excess-errors,
- fix dg-error markup.
-
-2011-06-09 Jason Merrill <jason@redhat.com>
-
- * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust.
-
- * testsuite/lib/prune.exp (libstdc++-dg-prune): Prune notes.
- * testsuite/20_util/duration/cons/1_neg.cc: Remove dg-excess-errors.
- * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
- * testsuite/20_util/forward/1_neg.cc: Likewise.
- * testsuite/20_util/function/cmp/cmp_neg.cc: Likewise.
- * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
- * testsuite/20_util/reference_wrapper/ref_neg.cc: Likewise.
- * testsuite/20_util/tuple/comparison_operators/35480_neg.cc: Likewise.
- * testsuite/tr1/6_containers/tuple/comparison_operators/35480_neg.cc:
- Likewise.
- * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
- * testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc: Likewise.
- * testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
- Likewise.
- * testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc: Likewise.
- * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Likewise.
- * testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_neg.cc:
- Likewise.
- * testsuite/tr1/2_general_utilities/shared_ptr/assign/
- auto_ptr_rvalue_neg.cc: Likewise.
- * testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr_neg.cc:
- Likewise.
- * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
- * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
- Likewise.
- * testsuite/23_containers/deque/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
- Likewise.
- * testsuite/23_containers/forward_list/requirements/dr438/
- assign_neg.cc: Likewise.
- * testsuite/23_containers/forward_list/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/forward_list/requirements/dr438/
- constructor_2_neg.cc: Likewise.
- * testsuite/23_containers/forward_list/requirements/dr438/
- insert_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- assign_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_2_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- insert_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- assign_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_2_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- insert_neg.cc: Likewise.
- * testsuite/23_containers/map/operators/1_neg.cc: Likewise.
- * testsuite/29_atomics/atomic_integral/operators/
- bitwise_neg.cc: Likewise.
- * testsuite/decimal/mixed-mode-arith_neg.cc: Likewise.
- * testsuite/decimal/mixed-mode-cmp_neg.cc: Likewise.
- * testsuite/decimal/operator_neg.cc: Likewise.
-
-2011-06-09 Simon Baldwin <simonb@google.com>
-
- * scripts/extract_symvers.in: Handle processor/OS specific or
- unknown symbol binding strings from readelf.
-
-2011-06-09 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/type_traits (__is_copy_assignable_impl,
- __is_nt_copy_assignable_impl): Fix typo.
-
-2011-06-08 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/ext/extptr_allocator.h: Include <ext/numeric_traits.h>
- instead of <limits>.
- * include/bits/allocator.h: Likewise.
-
- * include/std/chrono (duration_values<>::min): Call lowest, not min.
-
-2011-06-08 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/allocator.h (__shrink_to_fit): Simplify.
- * include/bits/stl_vector.h (vector<>::shrink_to_fit): Adjust.
- * include/bits/stl_deque.h: Likewise.
- * include/bits/stl_bvector.h: Likewise.
-
-2011-06-07 Jason Merrill <jason@redhat.com>
-
- * testsuite/lib/prune.exp: s/required/instantiated/.
- * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
- * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
- * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
- * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
- * testsuite/20_util/forward/1_neg.cc: Likewise.
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
- Likewise.
- * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
- * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
- * testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Likewise.
- * testsuite/ext/ext_pointer/1_neg.cc: Likewise.
- * testsuite/ext/pb_ds/example/hash_resize_neg.cc: Likewise.
- * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Likewise.
- * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise.
- * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise.
- * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Likewise.
- * testsuite/tr1/2_general_utilities/shared_ptr/assign/
- shared_ptr_neg.cc: Likewise.
-
-2011-06-07 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/move.h (struct __move_if_noexcept_cond): Add.
- (move_if_noexcept): Use the latter.
- * include/bits/stl_iterator.h (__make_move_if_noexcept_iterator,
- _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR): Add.
- * include/bits/stl_uninitialized.h
- (__uninitialized_move_if_noexcept_a): Add.
- * include/bits/vector.tcc (vector<>::reserve): Use
- _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR.
- (vector<>::_M_insert_aux, _M_fill_insert, _M_default_append,
- _M_range_insert): Use __uninitialized_move_if_noexcept_a.
- * testsuite/util/testsuite_rvalref.h (throwing_move_constructor):
- Add.
- (copycounter::copycounter(copycounter&&)): Use noexcept.
- * testsuite/23_containers/vector/modifiers/moveable2.cc: New.
- * testsuite/23_containers/vector/capacity/resize/moveable2.cc:
- Likewise.
- * testsuite/23_containers/vector/capacity/reserve/moveable2.cc:
- Likewise.
-
-2011-06-07 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/49293
- * testsuite/22_locale/time_get/get_weekday/char/38081-1.cc: Tweak
- for glibc 2.14.
- * testsuite/22_locale/time_get/get_weekday/char/38081-2.cc: Likewise.
-
-2011-06-06 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/move.h (move_if_noexcept): Use __and_ and __not_.
-
-2011-06-05 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/ptr_traits.h (pointer_traits): Fix typos.
- * include/ext/pointer.h (pointer_traits): Add partial specialization
- for _Pointer_adapter.
-
-2011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/util/testsuite_allocator.h (tracker_allocator::construct):
- Update to C++0x definition using type to construct as template
- parameter.
- (tracker_allocator::destroy): Likewise for type to destroy.
- (uneq_allocator::construct, uneq_allocator::destroy): Likewise.
-
-2011-06-01 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
- Use std::move on the allocator, use noexcept.
- (_Hashtable<>::~_Hashtable): Use noexcept.
- * include/bits/stl_list.h: Likewise.
- * include/bits/forward_list.h: Likewise.
- * include/bits/stl_vector.h: Likewise.
- * include/bits/stl_bvector.h: Likewise.
- * include/bits/stl_map.h (map<>::map(map&&)): Use noexcept.
- * include/bits/stl_set.h: Likewise.
- * include/bits/stl_multimap.h: Likewise.
- * include/bits/stl_multiset.h: Likewise.
- * include/bits/stl_tree.h (_Rb_tree<>::_Rb_tree(_Rb_tree&&)): Use
- std::move on the allocator.
- (_Rb_tree<>::~_Rb_tree): Use noexcept.
- * include/bits/stl_deque.h: Likewise.
- * include/bits/basic_string.h (basic_string<>::~basic_string): Use
- noexcept.
- * include/ext/vstring.h (__versa_string<>::~__versa_string): Likewise.
- * include/debug/set.h: Adjust.
- * include/debug/unordered_map: Likewise.
- * include/debug/multiset.h: Likewise.
- * include/debug/forward_list: Likewise.
- * include/debug/vector: Likewise.
- * include/debug/unordered_set: Likewise.
- * include/debug/deque: Likewise.
- * include/debug/map.h: Likewise.
- * include/debug/string: Likewise.
- * include/debug/list: Likewise.
- * include/debug/multimap.h: Likewise.
- * include/profile/set.h: Likewise.
- * include/profile/unordered_map: Likewise.
- * include/profile/multiset.h: Likewise.
- * include/profile/forward_list: Likewise.
- * include/profile/unordered_set: Likewise.
- * include/profile/vector: Likewise.
- * include/profile/deque: Likewise.
- * include/profile/map.h: Likewise.
- * include/profile/list: Likewise.
- * include/profile/multimap.h: Likewise.
- * testsuite/21_strings/basic_string/cons/wchar_t/
- noexcept_move_construct.cc: New.
- * testsuite/21_strings/basic_string/cons/char/
- noexcept_move_construct.cc: Likewise.
- * testsuite/ext/vstring/cons/noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/unordered_map/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/multimap/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/set/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/unordered_multimap/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/forward_list/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/unordered_set/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/vector/bool/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/vector/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/multiset/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/list/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/unordered_multiset/cons/
- noexcept_move_construct.cc: Likewise.
- * testsuite/23_containers/map/cons/noexcept_move_construct.cc
- * testsuite/23_containers/forward_list/requirements/dr438/
- assign_neg.cc: Adjust dg-error line numbers.
- * testsuite/23_containers/forward_list/requirements/dr438/
- insert_neg.cc: Likewise.
- * testsuite/23_containers/forward_list/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/forward_list/requirements/dr438/
- constructor_2_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- assign_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- insert_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_2_neg.cc: Likewise.
- * testsuite/23_containers/deque/requirements/dr438/
- assign_neg.cc: Likewise.
- * testsuite/23_containers/deque/requirements/dr438/
- insert_neg.cc: Likewise.
- * testsuite/23_containers/deque/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/deque/requirements/dr438/
- constructor_2_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- assign_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- insert_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_1_neg.cc: Likewise.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_2_neg.cc: Likewise.
-
- * include/bits/move.h (swap): Use __and_ in the noexcept.
- * include/bits/algorithmfwd.h: Adjust.
-
-2011-05-31 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/basic_string.h: Use noexcept per the FDIS (minus
- compare(const string&), which uses char_traits::compare, which
- isn't noexcept; also no noexcept in the move assignment operator
- and move assign, see c++std-lib-30855).
- * include/bits/basic_string.tcc: Likewise.
- * include/ext/vstring.h: Likewise.
- * include/ext/vstring.tcc: Likewise.
- * include/debug/string: Likewise.
-
-2011-05-31 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/status_cxx200x.xml: Update.
- * doc/html/*: Regenerate.
-
-2011-05-30 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/type_traits (__or_, __and_): Add trivial definitions
- for a single element.
- * include/bits/stl_pair.h: Use __and_ in noexcept specs and
- constraints.
- (pair<>::pair(pair&&)): Define.
- (pair<>::pair(const pair<>&)): Constrain with is_convertible.
- (pair<>::pair(pair<>&&)): Likewise, remove noexcept.
- * include/std/tuple: Use __and_ in noexcept specs and constraints.
- (_Tuple_impl<>::_Tuple_impl(allocator_arg_t, const _Alloc&,
- _Tuple_impl&&)): Remove noexcept.
- (tuple<>::tuple(_UElements&&...), tuple(const tuple<_UElements...>&),
- tuple(tuple<_UElements...>&&), tuple(const pair<_U1, _U2>&),
- tuple(pair<_U1, _U2>&&)): Constrain with is_convertible.
- * testsuite/20_util/tuple/moveable2.cc: Use = delete.
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
- Adjust dg-error line numbers.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
- Likewise.
- * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
- * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
-
-2011-05-31 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/tuple: Restore is_convertible constraint.
- * testsuite/20_util/tuple/cons/allocate_noncopyable.cc: Remove.
-
-2011-05-30 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/49236
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
- line number.
-
-2011-05-30 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/tuple: Implement uses-allocator construction.
- * include/bits/allocator.h (uses_allocator): Move to ...
- * include/bits/uses_allocator.h: New file.
- * include/Makefile.am: Add new header.
- * include/Makefile.in: Regenerate.
- * testsuite/20_util/uses_allocator/cons_neg.cc: New.
- * testsuite/20_util/uses_allocator/construction.cc: New.
- * testsuite/20_util/tuple/cons/allocate_noncopyable.cc: New.
- * testsuite/20_util/tuple/cons/allocators.cc: New.
-
-2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/20_util/pointer_traits/pointer_to.cc: Fix.
-
-2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * acinclude.m4: Define GLIBCXX_CHECK_GET_NPROCS and
- GLIBCXX_CHECK_SC_NPROCESSORS_ONLN.
- * configure.ac: Use them. Increase minor version.
- * configure: Regenerate.
- * config.h.in: Regenerate.
- * include/std/thread (thread::hardware_concurrency): Remove inline
- definition.
- * src/thread.cc (thread::hardware_concurrency): Define.
- * config/abi/pre/gnu.ver: Export new symbol @3.4.17
- * testsuite/util/testsuite_abi.cc: Add new version.
- * testsuite/lib/libstdc++.exp (check_v3_target_nprocs): Add.
- * testsuite/lib/dg-options.exp (dg-require-nprocs): Add.
- * testsuite/30_threads/thread/members/hardware_concurrency.cc: Use
- dg-require-nprocs and verify hardware_concurrency returns non-zero.
-
-2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/20_util/pointer_traits/pointer_to.cc: New.
-
-2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/Makefile.am: Add new ptr_traits.h header.
- * include/Makefile.in: Regenerate.
- * include/bits/ptr_traits.h (pointer_traits): New.
- * include/bits/allocator.h (allocator_traits): Add.
- * include/ext/array_allocator.h (construct, destroy): Update C++0x
- versions.
- * include/ext/bitmap_allocator.h (construct, destroy): Likewise.
- * include/ext/extptr_allocator.h (construct, destroy): Likewise.
- * include/ext/malloc_allocator.h (construct, destroy): Likewise.
- * include/ext/mt_allocator.h (construct, destroy): Likewise.
- * include/ext/new_allocator.h (construct, destroy): Likewise.
- * include/ext/pool_allocator.h (construct, destroy): Likewise.
- * include/ext/throw_allocator.h (construct, destroy): Likewise.
- * testsuite/20_util/allocator_traits/requirements/typedefs.cc: New.
- * testsuite/20_util/allocator_traits/requirements/
- explicit_instantiation.cc: New.
- * testsuite/20_util/allocator_traits/members/max_size.cc: New.
- * testsuite/20_util/allocator_traits/members/select.cc: New.
- * testsuite/20_util/allocator_traits/members/construct.cc: New.
- * testsuite/20_util/allocator_traits/members/allocate_hint.cc: New.
- * testsuite/20_util/allocator_traits/members/destroy.cc: New.
- * testsuite/20_util/pointer_traits/requirements/typedefs.cc: New.
- * testsuite/20_util/pointer_traits/requirements/
- explicit_instantiation.cc: New.
-
-2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/future (launch): Update enumerators and define
- operators required for bitmask type. Remove trailing whitespace.
- * src/future.cc: Remove trailing whitespace.
- * testsuite/30_threads/async/any.cc: Adjust.
- * testsuite/30_threads/async/sync.cc: Adjust.
- * testsuite/30_threads/async/launch.cc: New.
-
-2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/future: Use noexcept.
- * src/future.cc: Likewise.
-
-2011-05-27 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/thread (this_thread::sleep_until): Move after sleep_for.
-
-2011-05-27 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/49187
- * include/parallel/losertree.h: Add missing using declarations
- of _Base::_M_comp.
- * include/parallel/algobase.h: Include <parallel/algorithmfwd.h>.
- * include/parallel/multiway_merge.h: Include <parallel/
- multiseq_selection.h>, forward declare __merge_advance.
- * include/parallel/multiseq_selection.h: Don't include <parallel/
- sort.h> here.
- * include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Fix
- qualification of upper_bound.
-
- * testsuite/ext/pb_ds/regression/tree_no_data_map_rand_debug.cc:
- Use dg-require-debug-mode.
- * testsuite/ext/pb_ds/regression/tree_data_map_rand_debug.cc:
- Likewise.
- * testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc:
- Likewise.
- * testsuite/ext/pb_ds/regression/trie_no_data_map_rand_debug.cc:
- Likewise.
- * testsuite/ext/pb_ds/regression/trie_data_map_rand_debug.cc:
- Likewise.
- * testsuite/ext/pb_ds/regression/list_update_no_data_map_rand_debug.cc:
- Likewise.
- * testsuite/ext/pb_ds/regression/list_update_data_map_rand_debug.cc:
- Likewise.
- * testsuite/ext/pb_ds/regression/hash_no_data_map_rand_debug.cc:
- Likewise.
- * testsuite/ext/pb_ds/regression/hash_data_map_rand_debug.cc:
- Likewise.
-
- * include/parallel/algo.h: Minor uglification fixes.
-
-2011-05-26 Paolo Carlini <paolo.carlini@oracle.com>
-
- * src/list.cc: Use noexcept per the FDIS.
- * src/compatibility-list-2.cc: Likewise.
- * include/debug/set.h: Likewise.
- * include/debug/unordered_map: Likewise.
- * include/debug/multiset.h: Likewise.
- * include/debug/forward_list: Likewise.
- * include/debug/unordered_set: Likewise.
- * include/debug/vector: Likewise.
- * include/debug/map.h: Likewise.
- * include/debug/deque: Likewise.
- * include/debug/list: Likewise.
- * include/debug/multimap.h: Likewise.
- * include/profile/set.h: Likewise.
- * include/profile/unordered_map: Likewise.
- * include/profile/multiset.h: Likewise.
- * include/profile/forward_list: Likewise.
- * include/profile/vector: Likewise.
- * include/profile/unordered_set: Likewise.
- * include/profile/map.h: Likewise.
- * include/profile/deque: Likewise.
- * include/profile/list: Likewise.
- * include/profile/multimap.h: Likewise.
- * include/bits/hashtable.h: Likewise.
- * include/bits/stl_list.h: Likewise.
- * include/bits/stl_map.h: Likewise.
- * include/bits/hashtable_policy.h: Likewise.
- * include/bits/stl_set.h: Likewise.
- * include/bits/forward_list.h: Likewise.
- * include/bits/stl_multimap.h: Likewise.
- * include/bits/stl_vector.h: Likewise.
- * include/bits/stl_deque.h: Likewise.
- * include/bits/stl_multiset.h: Likewise.
- * include/bits/stl_bvector.h: Likewise.
- * include/bits/stl_tree.h: Likewise.
-
-2011-05-25 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/stl_queue.h: Use noexcept per the FDIS.
- * include/bits/stl_stack.h: Likewise.
-
-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.
-
-2011-05-26 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/documentation_hacking.xml: Minor corrections.
-
-2011-05-26 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/mutex: Add doxygen comments.
-
-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.
-
-2011-05-26 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * libsupc++/guard.cc: Fix comments.
-
-2011-05-25 Ian Lance Taylor <iant@google.com>
-
- PR libstdc++/49060
- * include/backward/hashtable.h (hashtable::erase): Don't crash if
- erasing first and another element with a reference to the other
- element.
- * testsuite/backward/hash_set/49060.cc: New.
-
-2011-05-25 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/random.h (random_device::min, max): Specify constexpr.
-
-2011-05-25 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/thread: Use noexcept throughout per the FDIS.
- * include/std/mutex: Likewise.
-
-2011-05-24 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/20_util/duration/arithmetic/dr2020.cc: Fix typo.
-
-2011-05-24 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/49151
- * include/std/chrono (operator+, operator-, operator*, operator/,
- operator&): Implement LWG 2020 [WP]; specify constexpr.
- * testsuite/20_util/duration/arithmetic/dr2020.cc: New.
-
-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/complex/cons/48760_c++0x.cc: Likewise.
- * testsuite/26_numerics/headers/cmath/19322.cc: Likewise.
-
-2011-05-24 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/c++config (_GLIBCXX_NOTHROW): Update for noexcept.
- * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error
- line number.
-
-2011-05-23 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/37144
- PR libstdc++/28457
- Interface changes for ext/pb_ds.
- PB_DS_BASE_C_DEC to unique PB_DS_*_BASE macros.
- * include/ext/pb_ds/assoc_container.hpp (container_base): Remove.
- (basic_hash_table, basic_branch, list_update): Derive from
- container_base_dispatch.
- * include/ext/pb_ds/list_update_policy.hpp (null_lu_metadata): Remove.
- (move_to_front_lu_policy): To lu_move_to_front_policy.
- (counter_lu_policy): To lu_counter_policy.
- * include/ext/pb_ds/tree_policy.hpp (null_tree_node_update): Remove.
- * include/ext/pb_ds/tag_and_trait.hpp (container_base_dispatch): Adjust
- template parameters, declare here.
- (null_mapped_type) Remove.
- (null_type): Just use this for template tricks everywhere.
- * include/ext/pb_ds/hash_policy.hpp (null_hash_fn, null_probe_fn):
- Remove.
- * include/ext/pb_ds/trie_policy.hpp (null_trie_node_update): Remove.
- (string_trie_e_access_traits): To trie_string_access_traits.
- * include/ext/pb_ds/priority_queue.hpp: Use container_base_dispatch.
-
- File changes.
- * include/Makefile.am (pb_headers): Removed and changed file names.
- * include/Makefile.in: Regenerated.
- * include/ext/pb_ds/detail/basic_types.hpp: Remove.
- * include/ext/pb_ds/detail/bin_search_tree_/
- cond_dtor_entry_dealtor.hpp: Remove.
- * include/ext/pb_ds/detail/bin_search_tree_/
- cond_key_dtor_entry_dealtor.hpp: Remove.
- * include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp: Move..
- * include/ext/pb_ds/detail/binary_heap_/
- point_const_iterator.hpp: ..here.
- * include/ext/pb_ds/detail/basic_tree_policy: Move to...
- * include/ext/pb_ds/detail/branch_policy: This.
- * include/ext/pb_ds/detail/branch_policy/
- basic_tree_policy_base.hpp: Move...
- * include/ext/pb_ds/detail/branch_policy/branch_policy.hpp: ...here.
- * include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp: Add.
- * include/ext/pb_ds/detail/branch_policy/traits.hpp: Add.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- null_metadata.hpp: Remove.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- const_point_iterator.hpp: Move...
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- point_const_iterator.hpp: ...here.
- * include/ext/pb_ds/detail/list_update_policy/
- counter_lu_metadata.hpp: Move..
- * include/ext/pb_ds/detail/list_update_policy/
- lu_counter_metadata.hpp: ...here.
- * include/ext/pb_ds/detail/list_update_policy/
- counter_lu_policy_imp.hpp: Remove.
- * include/ext/pb_ds/detail/list_update_policy/
- mtf_lu_policy_imp.hpp: Remove.
- * include/ext/pb_ds/detail/trie_policy/
- string_trie_e_access_traits_imp.hpp: Move...
- * include/ext/pb_ds/detail/trie_policy/
- sample_trie_access_traits.hpp: ...here.
- * include/ext/pb_ds/detail/trie_policy/
- sample_trie_e_access_traits.hpp: Move...
- * include/ext/pb_ds/detail/trie_policy/
- trie_string_access_traits_imp.hpp: ...here.
- * include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp: Remove.
- * include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp: Remove.
- * include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp: Remove.
- * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: New, fold all
- types found in the following files into pat_trie_base.
- * include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/
- cond_dtor_entry_dealtor.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/head.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/leaf.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/node_base.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp: Folded.
- * include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp: Move...
- * include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp: ...here.
- * include/ext/pb_ds/detail/unordered_iterator/
- const_point_iterator.hpp: Move...
- * include/ext/pb_ds/detail/unordered_iterator/
- point_const_iterator.hpp: ...here.
-
-
- Adjust for above changes.
- * include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp: Same.
- * include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp: Same.
- * include/ext/pb_ds/detail/resize_policy/
- sample_resize_trigger.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_base_/
- binomial_heap_base_.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_base_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_base_/
- split_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/container_base_dispatch.hpp: Same. Adjust
- for template parameter ordering change.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- erase_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- constructor_destructor_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- insert_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- policy_access_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- resize_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- constructor_destructor_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- insert_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- entry_list_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- find_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- debug_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- constructor_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- cond_key_dtor_entry_dealtor.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- debug_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- erase_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- iterators_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- resize_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- standard_policies.hpp: Same.
- * include/ext/pb_ds/detail/tree_trace_base.hpp: Same.
- * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Same.
- * include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp: Same.
- * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/traits.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/
- policy_access_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/traits.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/
- split_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/list_update_policy/
- sample_update_policy.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- trace_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- erase_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- constructor_destructor_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- insert_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- policy_access_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- resize_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- constructor_destructor_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- insert_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- iterator_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- find_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- find_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- debug_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- constructor_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- debug_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- erase_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- resize_no_store_hash_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- standard_policies.hpp: Same.
- * include/ext/pb_ds/detail/standard_policies.hpp: Same.
- * include/ext/pb_ds/detail/types_traits.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp: Same.
- * include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Same.
- * include/ext/pb_ds/detail/tree_policy/
- sample_tree_node_update.hpp: Same.
- * include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp: Same.
- * include/ext/pb_ds/detail/trie_policy/
- sample_trie_node_update.hpp: Same.
- * include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp: Same.
- * include/ext/pb_ds/detail/trie_policy/
- prefix_search_node_update_imp.hpp: Same.
- * include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Same.
- * include/ext/pb_ds/detail/cond_dealtor.hpp: Same.
- * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Same.
- Adjust for template parameter change, fold into
- container_base_dispatch.
- * include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pairing_heap_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Same.
- * include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp: Same.
- * include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/type_utils.hpp: Same.
- * include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp: Same.
- * include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- policy_access_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- left_child_next_sibling_heap_.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- const_iterator.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- node.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- iterators_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Same.
- * include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/thin_heap_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/traits.hpp: Same.
- * include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/debug_map_base.hpp: Same.
- * include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Same.
- * include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp: Same.
- * include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp: Same.
- * include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp: Same.
- * include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp: Same.
- * include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Same.
- * include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/node.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp: Same.
- * include/ext/pb_ds/detail/splay_tree_/traits.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/
- entry_metadata_base.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/
- constructor_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rc_binomial_heap_/
- rc_binomial_heap_.hpp: Same.
- * include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rc_binomial_heap_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Same.
- * include/ext/pb_ds/detail/rc_binomial_heap_/
- split_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/rb_tree_map_/traits.hpp: Same.
-
-
- Documentation changes.
- * include/ext/pb_ds/*: Add doxygen markup.
- * doc/doxygen/user.cfg.in: Add details for extracting comments
- from pb_ds.
- * scripts/run_doxygen: Fixup __gnu_pb_ds::detail.
- * scripts/make_graph.py: Move to svg output. Re-format generated tables.
-
- * doc/Makefile.am (stamp-html-copy): New rule.
- (stamp-html): Use it to copy non-generated files into html docs.
- * doc/Makefile.in: Regenerated.
-
- * doc/html/ext/pb_ds/sample_trie_e_access_traits.html: Move...
- * doc/html/ext/pb_ds/trie_string_access_traits.html: ...here.
- * doc/html/ext/pb_ds/string_trie_e_access_traits.html: Move..
- * doc/html/ext/pb_ds/sample_trie_access_traits.html: ...here.
-
- * doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png,
- hash_random_int_erase_mem_usage_test_local.png,
- multimap_text_insert_mem_usage_test_small_s2p_hash_local.png,
- tree_text_insert_timing_test_pat_trie_local.png ,
- multimap_text_insert_mem_usage_test_small_s2p_tree_local.png ,
- priority_queue_text_modify_down_timing_test_local.png,
- gp_hash_random_int_subscript_timing_test_find_local.png,
- text_find_timing_test_hash_local.png,
- multimap_text_insert_timing_test_small_s2p_hash_local.png,
- multimap_text_insert_timing_test_small_s2p_tree_local.png,
- multimap_text_insert_mem_usage_test_large_s2p_hash_local.png,
- multimap_text_insert_mem_usage_test_large_s2p_tree_local.png,
- multimap_text_insert_timing_test_large_s2p_hash_local.png,
- hash_zlob_random_int_find_timing_test_local.png,
- multimap_text_insert_timing_test_large_s2p_tree_local.png,
- binary_priority_queue_random_int_push_timing_test_local.png,
- priority_queue_text_pop_mem_usage_test_local.png,
- priority_queue_text_modify_down_timing_test_pairing_thin_local.png,
- tree_split_join_timing_test_local.png,
- multimap_text_find_timing_test_small_s2p_hash_local.png,
- ccgp_hash_random_int_subscript_timing_test_insert_local.png,
- priority_queue_random_int_push_pop_timing_test_local.png,
- multimap_text_find_timing_test_small_s2p_tree_local.png,
- gp_hash_random_int_subscript_timing_test_insert_local.png,
- priority_queue_text_push_timing_test_local.png,
- cc_hash_random_int_subscript_timing_test_find_local.png,
- tree_text_insert_timing_test_vector_tree_local.png,
- multimap_text_find_timing_test_large_s2p_hash_local.png,
- pairing_priority_queue_text_push_timing_test_local.png,
- tree_order_statistics_timing_test_local.png,
- priority_queue_text_push_pop_timing_test_local.png,
- text_find_timing_test_tree_like_local.png,
- multimap_text_find_timing_test_large_s2p_tree_local.png,
- priority_queue_text_modify_up_timing_test_pairing_thin_local.png,
- cc_hash_random_int_subscript_timing_test_insert_local.png,
- priority_queue_text_modify_up_timing_test_local.png,
- random_int_find_find_timing_test_tree_local.png,
- priority_queue_random_int_push_timing_test_local.png,
- tree_text_insert_timing_test_node_tree_local.png,
- pairing_priority_queue_text_push_pop_timing_test_local.png,
- gp_hash_random_int_find_timing_test_local.png,
- cc_hash_random_int_find_timing_test_local.png,
- priority_queue_text_join_timing_test_local.png: Update local pngs.
-
-
- Testsuite changes.
- * testsuite/ext/pb_ds/regression/tree_no_data_map_rand_debug.cc: New.
- * testsuite/ext/pb_ds/regression/tree_data_map_rand_debug.cc: New.
- * testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc: New.
- * testsuite/ext/pb_ds/regression/trie_no_data_map_rand_debug.cc: New.
- * testsuite/ext/pb_ds/regression/trie_data_map_rand_debug.cc: New.
- * testsuite/ext/pb_ds/regression/list_update_no_data_map_rand_debug.cc:
- New.
- * testsuite/ext/pb_ds/regression/list_update_data_map_rand_debug.cc:
- New.
- * testsuite/ext/pb_ds/regression/hash_no_data_map_rand_debug.cc: New.
- * testsuite/ext/pb_ds/regression/hash_data_map_rand_debug.cc: New.
-
- * testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Fix typo.
-
- * testsuite/ext/pb_ds/example/basic_set.cc: Update.
- * testsuite/ext/pb_ds/example/ranged_hash.cc: Same.
- * testsuite/ext/pb_ds/example/tree_order_statistics.cc: Same.
- * testsuite/ext/pb_ds/example/trie_prefix_search.cc: Same.
- * testsuite/ext/pb_ds/example/trie_dna.cc: Same.
- * testsuite/ext/pb_ds/example/tree_intervals.cc: Same.
- * testsuite/ext/pb_ds/example/basic_multimap.cc: Same.
- * testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc:
- Same.
- * testsuite/performance/ext/pb_ds/tree_split_join_timing.cc: Same.
- * testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc: Same.
- * testsuite/data/make_graph_test_infos.xml: Same.
- * testsuite/util/regression/common_type.hpp: Same.
- * testsuite/util/regression/trait/assoc/native_type_trait.hpp: Same.
- * testsuite/util/regression/trait/assoc/trait.hpp: Same.
- * testsuite/util/regression/trait/assoc/type_trait.hpp: Same.
- * testsuite/util/regression/rand/priority_queue/
- rand_regression_test.hpp: Same.
- * testsuite/util/regression/rand/priority_queue/
- container_rand_regression_test.tcc: Same.
- * testsuite/util/regression/rand/assoc/rand_regression_test.hpp: Same.
- * testsuite/util/regression/rand/assoc/container_rand_regression_test.h
- * testsuite/util/regression/rand/assoc/
- container_rand_regression_test.tcc: Same.
- * testsuite/util/native_type/native_priority_queue.hpp: Same.
- * testsuite/util/native_type/native_multimap.hpp: Same.
- * testsuite/util/native_type/native_hash_multimap.hpp: Same.
- * testsuite/util/native_type/native_set.hpp: Same.
- * testsuite/util/native_type/native_map.hpp: Same.
- * testsuite/util/native_type/native_hash_set.hpp: Same.
- * testsuite/util/native_type/native_hash_map.hpp: Same.
- * testsuite/util/testsuite_containers.h
- * testsuite/util/common_type/priority_queue/common_type.hpp: Same.
- * testsuite/util/common_type/assoc/common_type.hpp: Same.
- * testsuite/util/common_type/assoc/string_form.hpp: Same.
- * testsuite/util/common_type/assoc/template_policy.hpp: Same.
- * testsuite/util/common_type/assoc/detail/
- trigger_policy_string_form.hpp: Same.
- * testsuite/util/common_type/assoc/detail/ds_string_form.hpp: Same.
- * testsuite/util/common_type/assoc/detail/
- size_policy_string_form.hpp: Same.
- * testsuite/util/common_type/assoc/detail/
- probe_fn_string_form.hpp: Same.
- * testsuite/util/common_type/assoc/detail/
- tree_supports_order_statistics.hpp: Same.
- * testsuite/util/common_type/assoc/detail/
- trie_supports_prefix_search.hpp: Same.
- * testsuite/util/common_type/assoc/detail/
- list_update_policy_string_form.hpp: Same.
- * testsuite/util/common_type/assoc/detail/
- trie_supports_order_statistics.hpp: Same.
- * testsuite/util/common_type/assoc/native_set.hpp: Same.
- * testsuite/util/performance/assoc/timing/common_type.hpp: Same.
- * testsuite/util/performance/assoc/timing/multimap_find_test.hpp: Same.
- * testsuite/util/performance/assoc/multimap_common_type.hpp: Same.
-
-2011-05-23 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/streambuf_iterator.h: Use noexcept per the FDIS.
- (istreambuf_iterator<>::istreambuf_iterator(const
- istreambuf_iterator&), ~istreambuf_iterator()): Add defaulted
- in C++0x mode.
-
-2011-05-23 Jason Merrill <jason@redhat.com>
-
- * libsupc++/exception_ptr.h: Fix compilation in C++0x mode.
-
-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.
-
-2011-05-21 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/unique_ptr.h: Use noexcept per the FDIS.
-
-2011-05-20 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/21_strings/basic_string/requirements/exception/
- propagation_consistent.cc: Fix vs POD-ness of value_type.
- * testsuite/21_strings/basic_string/requirements/exception/
- basic.cc: Likewise.
- * testsuite/ext/vstring/requirements/exception/
- propagation_consistent.cc: Likewise.
- * testsuite/ext/vstring/requirements/exception/basic.cc: Likewise.
-
-2011-05-20 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/char_traits.h: Use noexcept throughout.
- * include/std/typeindex: Likewise.
-
- * include/std/tuple (_Tuple_impl<>_Tuple_impl(_Tuple_impl&&)): Use
- noexcept; adjust callers.
- * include/bits/stl_pair.h (pair<>::pair(pair<>&&)): Use noexcept.
- * testsuite/20_util/tuple/cons/noexcept_move_construct.cc: New.
- * testsuite/20_util/pair/cons/noexcept_move_construct.cc: Likewise.
- * testsuite/20_util/pair/noexcept_swap.cc: Likewise.
- * testsuite/20_util/pair/noexcept_move_assign.cc: Likewise.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
- line numbers.
-
-2011-05-20 Jason Merrill <jason@redhat.com>
-
- * include/ext/pb_ds/assoc_container.hpp: Explicitly qualify calls to
- functions from dependent bases.
- * include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/rb_tree_map_/
- split_join_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/splay_tree_/
- split_join_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/tree_policy/
- order_statistics_imp.hpp: Likewise.
- * include/ext/pb_ds/detail/trie_policy/
- prefix_search_node_update_imp.hpp: Likewise.
- * include/ext/rc_string_base.h: Likewise.
- * include/ext/rope: Likewise.
- * include/ext/ropeimpl.h: Likewise.
- * testsuite/util/exception/safety.h: Likewise.
- * testsuite/util/native_type/native_priority_queue.hpp: Likewise.
- * testsuite/util/testsuite_io.h: Likewise.
- * include/std/functional: Declare mem_fn earlier.
- * include/tr1/functional: Likewise.
- * include/tr1/exp_integral.tcc: Declare __expint_E1 earlier.
-
-2011-05-19 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/tuple (tuple_element<__i, const _Tp>,
- tuple_element<__i, volatile _Tp>, tuple_element<__i,
- const volatile _Tp>, tuple_size<const _Tp>, tuple_size<volatile _Tp>,
- tuple_size<const volatile _Tp>): Add.
- * include/std/utility (tuple_size<std::pair<_Tp1, _Tp2>>): Tweak.
- * include/std/array (tuple_size<array<_Tp, _Nm>>): Likewise.
- * testsuite/20_util/tuple/cv_tuple_size.cc: New.
- * testsuite/20_util/tuple/cv_tuple_element.cc: Likewise.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Tweak dg-warning
- line number.
-
-2011-05-19 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/tuple (tuple<>::operator=(tuple&&)): Specify as
- noexcept.
- (__get_helper): Likewise.
- (_Head_base<>::_M_head, _Tuple_impl<>::_M_head, _M_tail): Likewise.
- * include/bits/move.h (swap): Likewise.
- * include/bits/algorithmfwd.h (swap): Adjust.
- * include/bits/stl_pair.h (pair<>::operator=(pair&&)): Spec noexcept.
- * testsuite/util/testsuite_allocator.h (uneq_allocator): In C++0x
- mode, prefer delete to access control to make the type not copy
- assignable.
- * testsuite/util/testsuite_tr1.h: Add test classes.
- * testsuite/20_util/tuple/noexcept_swap.cc: New.
- * testsuite/20_util/tuple/noexcept_move_assign.cc: Likewise.
- * testsuite/25_algorithms/reverse/moveable.cc: Likewise, prefer
- delete to access control.
- * testsuite/25_algorithms/swap_ranges/moveable.cc: Likewise.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
- line numbers.
-
-2011-05-19 Daniel Krugler <daniel.kruegler@googlemail.com>
-
- * testsuite/util/testsuite_tr1.h: Add test classes.
- * testsuite/20_util/is_nothrow_assignable/value.cc: Add.
-
-2011-05-19 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/type_traits (is_assignable, is_copy_assignable,
- is_move_assignable, is_nothrow_assignable, is_nothrow_copy_assignable,
- is_nothrow_move_assignable): Add; minor tweaks elsewhere.
- (has_nothrow_copy_assign): Remove.
- * testsuite/util/testsuite_tr1.h: Add test classes.
- * testsuite/20_util/is_assignable/requirements/typedefs.cc: Add.
- * testsuite/20_util/is_assignable/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_nothrow_assignable/value.cc: Likewise.
- * testsuite/20_util/is_nothrow_assignable/requirements/typedefs.cc:
- Likewise.
- * testsuite/20_util/is_nothrow_assignable/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_move_assignable/value.cc: Likewise.
- * testsuite/20_util/is_move_assignable/requirements/typedefs.cc:
- Likewise.
- * testsuite/20_util/is_move_assignable/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_copy_assignable/value.cc: Likewise.
- * testsuite/20_util/is_copy_assignable/requirements/typedefs.cc:
- Likewise.
- * testsuite/20_util/is_copy_assignable/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_nothrow_move_assignable/value.cc: Likewise.
- * testsuite/20_util/is_nothrow_move_assignable/requirements/
- typedefs.cc: Likewise.
- * testsuite/20_util/is_nothrow_move_assignable/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_nothrow_copy_assignable/value.cc: Likewise.
- * testsuite/20_util/is_nothrow_copy_assignable/requirements/
- typedefs.cc: Likewise.
- * testsuite/20_util/is_nothrow_copy_assignable/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
- dg-error line numbers.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
- Likewise.
- * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
-
-2011-05-18 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/shared_ptr_base.h: Use noexcept. Define special member
- functions as defaulted/deleted.
- * include/bits/shared_ptr.h: Use noexcept.
- * 20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error line numbers.
- * 20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
-
-2011-05-18 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/bitmap_allocator.xml: Fix typos.
-
-2011-05-18 Paolo Carlini <paolo.carlini@oracle.com>
-
- * libsupc++/initializer_list: Use noexcept specifier.
- (initializer_list<>::size, begin, end): Qualify as const.
- * include/bits/move.h (__addressof, forward, move, addressof): Specify
- as noexcept.
- * include/std/bitset: Use noexcept specifier throughout.
- * include/debug/bitset: Update.
- * include/profile/bitset: Likewise.
-
-2011-05-17 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/tuple: Use noexcept where appropriate.
- (tuple<>::swap): Rework implementation.
- (_Head_base<>::_M_swap_impl): Remove.
- (get(std::tuple<>&&)): Add.
- * testsuite/20_util/tuple/element_access/get2.cc: New.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
- line number.
-
-2011-05-16 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/utility: Simplify the last commit, the whole
- std::get code is C++0x only.
-
-2011-05-16 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/utility (get(std::pair<>&&)): Add.
- * include/bits/stl_pair.h (pair::swap(pair&),
- swap(pair<>&, pair<>&)): Use noexcept.
- * include/bits/random.h (discard_block_engine<>::base,
- independent_bits_engine<>::base, shuffle_order_engine<>::base,
- random_device::entropy): Use noexcept.
- * include/std/array: Use noexcept where appropriate.
- (get(array<>&&)): Add.
- * testsuite/23_containers/array/requirements/get.cc: New.
- * testsuite/20_util/pair/get.cc: Likewise.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Tweak dg-error
- line number.
-
-2011-05-15 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/c++config (_GLIBCXX_NOEXCEPT, _GLIBCXX_USE_NOEXCEPT):
- Add.
- * include/std/limits: Use the latter everywhere.
- (numeric_limits<char16_t>, numeric_limits<char32_t>): Simplify
- macro usages, the specializations exist only in C++0x mode.
- * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error
- line number.
-
-2011-05-11 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc: Use
- dg-require-cmath.
- * testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc: Likewise.
-
-2011-05-11 François Dumont <francois.cppdevs@free.fr>
-
- * include/ext/pb_ds/detail/resize_policy/
- hash_load_check_resize_trigger_imp.hpp (assert_valid): Replace
- _GLIBCXX_DEBUG_ASSERT calls with PB_DS_DEBUG_VERIFY.
- * include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp,
- find_fn_imps.hpp, insert_fn_imps.hpp, binomial_heap_base_.hpp,
- constructors_destructor_fn_imps.hpp, split_join_fn_imps.hpp
- (PB_DS_ASSERT_VALID): Rename in PB_DS_ASSERT_VALID_COND.
- * include/ext/pb_ds/detail/debug_map_base.hpp,
- splay_tree_/splay_tree_.hpp, ov_tree_map_/ov_tree_map_.hpp,
- cc_hash_table_map_/cc_ht_map_.hpp, pat_trie_/pat_trie_.hpp,
- leaf.hpp, internal_node.hpp, gp_hash_table_map_/gp_ht_map_.hpp,
- bin_search_tree_/bin_search_tree_.hpp, list_update_map_/lu_map_.hpp,
- rb_tree_map_/rb_tree_.hpp (PB_DS_ASSERT_VALID, PB_DS_DEBUG_VERIFY,
- PB_DS_CHECK_KEY_EXISTS, PB_DS_CHECK_KEY_DOES_NOT_EXIST): Duplicate
- macro definitions move...
- * include/ext/pb_ds/detail/container_base_dispatch.hpp: ... here...
- * include/ext/pb_ds/detail/basic_tree_policy/traits.hpp: ... and here.
- * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp,
- resize_policy.hpp, pairing_heap_/pairing_heap_.hpp,
- left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp,
- binomial_heap_/binomial_heap_.hpp, thin_heap_/thin_heap_.hpp,
- rc_binomial_heap_/rc_binomial_heap_.hpp, rc.hpp (PB_DS_ASSERT_VALID,
- PB_DS_DEBUG_VERIFY): Duplicate macro definitions move...
- * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp:
- ...here.
-
-2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/48933
- * include/c_global/cmath (acosh, asinh, atanh, cbrt, copysign,
- erf, erfc, exp2, expm1, fdim, fma, fmax, hypot, ilogb, lgamma,
- llrint, llround, log1p, log2, logb, lrint, lround, nearbyint,
- nextafter, nexttoward, remainder, remquo, rint, round, scalbln,
- scalbn, tgamma, trunc): Use __enable_if on the return type.
- * include/tr1/cmath: Likewise.
- * testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc: New.
- * testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc: Likewise.
-
-2011-05-07 François Dumont <francois.cppdevs@free.fr>
-
- * include/debug/macro.h (_GLIBCXX_DEBUG_VERIFY_AT): New.
- (_GLICXX_DEBUG_VERIFY): Use latter.
- * include/ext/pb_ds/detail/resize_policy/
- hash_load_check_resize_trigger_imp.hpp: Emit assertion on the line
- containing the original assert call.
- * include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp,
- find_fn_imps.hpp, insert_fn_imps.hpp, binomial_heap_base_.hpp,
- constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
- split_join_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/cc_hash_table_map_/
- erase_store_hash_fn_imps.hpp, insert_no_store_hash_fn_imps.hpp,
- find_fn_imps.hpp, insert_store_hash_fn_imps.hpp, debug_fn_imps.hpp,
- debug_no_store_hash_fn_imps.hpp, cc_ht_map_.hpp, resize_fn_imps.hpp,
- constructor_destructor_fn_imps.hpp, debug_store_hash_fn_imps.hpp,
- erase_no_store_hash_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp,
- insert_join_fn_imps.hpp, pat_trie_/head.hpp, debug_fn_imps.hpp,
- constructors_destructor_fn_imps.hpp, pat_trie_.hpp, split_fn_imps.hpp,
- leaf.hpp, erase_fn_imps.hpp, node_base.hpp, internal_node.hpp:
- Likewise.
- * include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp,
- r_erase_fn_imps.hpp, constructors_destructor_fn_imps.hpp,
- debug_fn_imps.hpp, rotate_fn_imps.hpp, erase_fn_imps.hpp,
- bin_search_tree_.hpp, insert_fn_imps.hpp, split_join_fn_imps.hpp:
- Likewise.
- * include/ext/pb_ds/detail/gp_hash_table_map_/
- erase_store_hash_fn_imps.hpp, insert_no_store_hash_fn_imps.hpp,
- find_fn_imps.hpp, gp_ht_map_.hpp, insert_store_hash_fn_imps.hpp,
- debug_fn_imps.hpp, erase_fn_imps.hpp, debug_no_store_hash_fn_imps.hpp,
- resize_fn_imps.hpp, constructor_destructor_fn_imps.hpp,
- debug_store_hash_fn_imps.hpp, erase_no_store_hash_fn_imps.hpp:
- Likewise.
- * include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp,
- constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
- erase_fn_imps.hpp, insert_fn_imps.hpp, binary_heap_.hpp,
- resize_policy.hpp, split_join_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp,
- find_fn_imps.hpp, insert_fn_imps.hpp,
- constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
- pairing_heap_.hpp, split_join_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/binomial_heap_/
- constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
- binomial_heap_.hpp: Likewise.
- * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
- erase_fn_imps.hpp, left_child_next_sibling_heap_.hpp,
- constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp,
- find_fn_imps.hpp, thin_heap_.hpp, insert_fn_imps.hpp,
- constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
- split_join_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp,
- ov_tree_map_.hpp, constructors_destructor_fn_imps.hpp,
- debug_fn_imps.hpp, split_join_fn_imps.hpp, info_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/debug_map_base.hpp: Likewise.
- * include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp,
- find_fn_imps.hpp, insert_fn_imps.hpp,
- constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
- splay_fn_imps.hpp, split_join_fn_imps.hpp, splay_tree_.hpp: Likewise.
- * include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp,
- find_fn_imps.hpp, lu_map_.hpp, constructor_destructor_fn_imps.hpp,
- insert_fn_imps.hpp, debug_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp,
- rc_binomial_heap_.hpp, insert_fn_imps.hpp,
- constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp, rc.hpp,
- split_join_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp,
- insert_fn_imps.hpp, constructors_destructor_fn_imps.hpp,
- debug_fn_imps.hpp, rb_tree_.hpp, split_join_fn_imps.hpp: Likewise.
- * include/ext/pb_ds/hash_policy.hpp: Likewise.
-
-2011-05-06 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/22_locale/messages_byname/named_equivalence.cc: Fix.
-
-2011-05-04 Marc Glisse <marc.glisse@normalesup.org>
-
- PR libstdc++/47913 (again)
- * include/std/ratio (ratio_add, ratio_less): Rewrite.
- * testsuite/20_util/ratio/operations/47913.cc: Extend.
- * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust dg-error
- line numbers.
- * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
-
-2011-05-03 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/48848
- * include/std/valarray (valarray<>::valarray(valarray&&),
- valarray<>::operator=(valarray&&), valarray<>::swap): Add.
- * doc/xml/manual/status_cxx200x.xml: Update.
- * testsuite/26_numerics/valarray/moveable.cc: New.
- * testsuite/26_numerics/valarray/swap.cc: Likewise.
-
-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.
-
-2011-05-03 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/functional (bind): Remove from overload set when first
- argument type might be a socket file descriptor.
- * testsuite/20_util/bind/socket.cc: New.
-
-2011-05-03 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/48848
- * doc/xml/manual/status_cxx200x.xml: Update valarray status.
- * doc/html/*: Regenerate.
-
-2011-05-02 Ollie Wild <aaw@google.com>
-
- * include/ext/sso_string_base.h (__sso_string_base<>::_M_construct):
- Fix unqualified lookup.
- (__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.
-
-2011-05-02 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.
-
-2011-04-30 Daniel Krugler <daniel.kruegler@googlemail.com>
-
- * include/std/type_traits (__is_default_constructible_atom,
- __is_default_constructible_safe<, true>,
- __is_direct_constructible_new_safe,
- __is_base_to_derived_ref<,, true>, __is_lvalue_to_rvalue_ref<,, true>,
- __is_direct_constructible_ref_cast, __is_direct_constructible,
- __is_nary_constructible): Simplify; add comments throughout.
-
-2011-04-30 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
- Adjust dg-error line numbers.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
- Likewise.
- * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
-
-2011-04-30 Doug Kwan <dougkwan@google.com>
-
- * include/Makefile.am (install-freestanding-headers): Also install
- cxxabi_tweaks.h.
- * include/Makefile.in: Regenerate.
-
-2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/48760
- * include/std/complex (complex<float>::complex(float, float),
- complex<double>::complex(double, double),
- complex<long double>::complex(long double, long double)): Use
- list-initialization in C++0x mode, initialize in the body in
- C++03 mode.
- * testsuite/26_numerics/complex/cons/48760.cc: New.
- * testsuite/26_numerics/complex/cons/48760_c++0x.cc: Likewise.
-
-2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/bitset (_Base_bitset(unsigned long long)): Minor
- tweak, remove redundant round braces.
-
-2011-04-27 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/move.h (move_if_noexcept): Add.
- * testsuite/20_util/move_if_noexcept/requirements/
- explicit_instantiation.cc: New.
- * testsuite/20_util/move_if_noexcept/1.cc: Likewise.
-
-2011-04-25 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/type_traits (struct underlying_type): Add.
- * testsuite/20_util/underlying_type/requirements/typedefs-1.cc: New.
- * testsuite/20_util/underlying_type/requirements/typedefs-2.cc:
- Likewise.
- * testsuite/20_util/underlying_type/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
- line number.
-
-2011-04-24 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/parallel/multiway_merge.h: Uglify equally_split
- and equally_split_point throughout.
- * include/parallel/par_loop.h: Likewise.
- * include/parallel/equally_split.h: Likewise.
- * include/parallel/set_operations.h: Likewise.
- * include/parallel/unique_copy.h: Likewise.
- * include/parallel/multiway_mergesort.h: Likewise.
- * include/parallel/search.h: Likewise.
- * include/parallel/partial_sum.h: Likewise.
- * include/parallel/find.h: Likewise.
-
-2011-04-24 Gerald Pfeifer <gerald@pfeifer.com>
-
- * doc/xml/manual/parallel_mode.xml: Fix link to libgomp online
- documentation. Expand link text.
-
-2011-04-24 Gerald Pfeifer <gerald@pfeifer.com>
-
- * libsupc++/cxxabi.h: Adjust link to FAQ entry.
-
-2011-04-22 François Dumont <francois.cppdevs@free.fr>
-
- * testsuite/lib/libstdc++.exp (check_v3_target_time): Discard
- unused compilation result thanks to /dev/null.
- * testsuite/lib/libstdc++.exp (check_v3_target_debug_mode,
- check_v3_target_profile_mode, check_v3_target_normal_mode,
- check_v3_target_cstdint, check_v3_target_cmath,
- check_v3_target_atomic_builtins, check_v3_target_gthreads,
- check_v3_target_nanosleep, check_v3_target_sched_yield,
- check_v3_target_string_conversions, check_v3_target_swprintf,
- check_v3_target_binary_io): Use simple preprocessing rather than
- compilation. Discard unused preprocessing result thanks to /dev/null.
-
-2011-04-20 Jim Meyering <meyering@redhat.com>
-
- * libsupc++/del_opnt.cc (operator delete): Remove useless
- if-before-free.
-
-2011-04-19 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/48521
- * include/std/type_traits (result_of): Handle pointer to member.
- * include/std/functional (__invoke): Likewise.
- (_Function_to_function_pointer): Remove.
- (_Reference_wrapper_base): Provide nested types independent of
- unary_function and binary_function.
- (reference_wrapper::operator()): DR 2017.
- (ref(const A&&), cref(const A&&): Define as deleted.
- * include/std/future (async): Simplify SFINAE and use result_of to
- support pointer to member.
- * testsuite/20_util/reference_wrapper/invoke.cc: Test pointer to
- member.
- * testsuite/20_util/reference_wrapper/24803.cc: Likewise.
- * testsuite/20_util/reference_wrapper/typedefs.cc: Test for types
- instead of derivation from unary_function and binary_function.
- * testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
- * testsuite/20_util/reference_wrapper/invoke-2.cc: New.
- * testsuite/20_util/reference_wrapper/ref_neg.c: New.
- * testsuite/20_util/reference_wrapper/typedefs-3.c: New.
-
-2011-04-19 Hans-Peter Nilsson <hp@axis.com>
-
- PR testsuite/48675
- * testsuite/20_util/hash/chi2_quality.cc (test_document_words): Stub
- this part if SAMPLES < 100000.
-
-2011-04-18 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/type_traits (is_nothrow_default_constructible,
- is_nothrow_copy_constructible, is_nothrow_move_constructible,
- is_copy_constructible, is_move_constructible): Add.
- (has_nothrow_default_constructor, has_nothrow_copy_constructor):
- Remove.
- (is_nothrow_constructible): Adjust.
-
- * testsuite/util/testsuite_tr1.h (ThrowDefaultClass,
- ThrowCopyConsClass, ThrowMoveConsClass, NoexceptDefaultClass,
- ExceptDefaultClass, NoexceptCopyConsClass, ExceptCopyConsClass,
- NoexceptMoveConsClass, ExceptMoveConsClass): Add in C++0x mode.
-
- * testsuite/20_util/has_nothrow_default_constructor: Remove.
- * testsuite/20_util/has_nothrow_copy_constructor: Likewise.
-
- * testsuite/20_util/is_nothrow_move_constructible/value.cc: Likewise.
- * testsuite/20_util/is_nothrow_move_constructible/requirements/
- typedefs.cc: Likewise.
- * testsuite/20_util/is_nothrow_move_constructible/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_nothrow_copy_constructible/value.cc: Likewise.
- * testsuite/20_util/is_nothrow_copy_constructible/requirements/
- typedefs.cc: Likewise.
- * testsuite/20_util/is_nothrow_copy_constructible/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_nothrow_default_constructible/value.cc:
- Likewise.
- * testsuite/20_util/is_nothrow_default_constructible/requirements/
- typedefs.cc: Likewise.
- * testsuite/20_util/is_nothrow_default_constructible/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_move_constructible/value.cc: Likewise.
- * testsuite/20_util/is_move_constructible/requirements/typedefs.cc:
- Likewise.
- * testsuite/20_util/is_move_constructible/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_copy_constructible/value.cc: Likewise.
- * testsuite/20_util/is_copy_constructible/requirements/typedefs.cc:
- Likewise.
- * testsuite/20_util/is_copy_constructible/requirements/
- explicit_instantiation.cc: Likewise.
-
- * testsuite/20_util/is_default_constructible/value.cc: Add tests.
- * testsuite/20_util/is_nothrow_constructible/value.cc: Likewise.
-
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
- Adjust dg-error line numbers.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
- Likewise.
- * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
-
-2011-04-17 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/25_algorithms/partition/moveable.cc: Actually run
- it in parallel-mode for check-parallel.
-
-2011-04-17 Daniel Krugler <daniel.kruegler@googlemail.com>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/48635 (again)
- * include/bits/unique_ptr.h (unique_ptr<>::unique_ptr(unique_ptr<>&&),
- unique_ptr<_Tp[]>::unique_ptr(unique_ptr<>&&),
- unique_ptr<>::operator=(unique_ptr<>&&),
- unique_ptr<_Tp[]>::operator=(unique_ptr<>&&)): Use forward<_Ep>, not
- forward<_Dp>, to forward the deleter.
- * testsuite/20_util/unique_ptr/assign/48635_neg.cc: New.
-
-2011-04-15 Daniel Krugler <daniel.kruegler@googlemail.com>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/48631
- * include/bits/unique_ptr.h (default_delete<_Tp[]>): Add deleted
- function call operator.
- * testsuite/20_util/default_delete/48631_neg.cc: New.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
- line numbers.
-
-2011-04-15 Daniel Krugler <daniel.kruegler@googlemail.com>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/48635
- * include/bits/unique_ptr.h (unique_ptr<>::operator=(unique_ptr&&),
- unique_ptr<>::operator=(unique_ptr<>&&),
- unique_ptr<_Tp[],>::operator=(unique_ptr&&),
- unique_ptr<_Tp[],>::operator=(unique_ptr<>&&)): Forward the deleter
- instead of moving it.
- * testsuite/20_util/unique_ptr/assign/48635.cc: New.
-
-2011-04-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * scripts/extract_symvers.pl: Handle NOTY.
-
-2011-04-15 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/std/istream: Fix comments in the light of DR60 + N3168.
-
-2011-04-13 Daniel Krugler <daniel.kruegler@googlemail.com>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/48526
- * include/std/type_traits (struct is_constructible): Re-implement,
- according to n3290.
- (struct is_default_constructible): Add.
- (struct is_destructible): Likewise.
- (struct __and_, __or_, __not_): Add and use throughout; reorder some
- facilities, other minor tweaks.
- * testsuite/util/testsuite_tr1.h: Add test types.
- * testsuite/20_util/is_constructible/value-2.cc: New.
- * testsuite/20_util/is_default_constructible/value.cc: Likewise.
- * testsuite/20_util/is_default_constructible/requirements/typedefs.cc:
- Likewise.
- * testsuite/20_util/is_default_constructible/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_destructible/value.cc: Likewise.
- * testsuite/20_util/is_destructible/requirements/typedefs.cc:
- Likewise.
- * testsuite/20_util/is_destructible/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
- dg-error line numbers.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
- Likewise.
- * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
- * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
-
-2011-04-13 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/20_util/is_function/value.cc: Add, adapted from the tr
- testsuite.
- * testsuite/20_util/is_function/requirements/typedefs.cc: Likewise.
- * testsuite/20_util/is_function/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_function/24808.cc: Likewise.
- * testsuite/20_util/is_function/35637.cc: Likewise.
- * testsuite/20_util/is_object/value.cc: Likewise.
- * testsuite/20_util/is_object/requirements/typedefs.cc: Likewise.
- * testsuite/20_util/is_object/requirements/explicit_instantiation.cc:
- : Likewise.
- * testsuite/20_util/is_object/24808.cc: Likewise.
- * testsuite/20_util/is_compound/value.cc: Likewise.
- * testsuite/20_util/is_compound/requirements/typedefs.cc: Likewise.
- * testsuite/20_util/is_compound/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_member_object_pointer/value.cc: Likewise.
- * testsuite/20_util/is_member_object_pointer/requirements/
- typedefs.cc: Likewise.
- * testsuite/20_util/is_member_object_pointer/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_fundamental/value.cc: Likewise.
- * testsuite/20_util/is_fundamental/requirements/typedefs.cc: Likewise.
- * testsuite/20_util/is_fundamental/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_member_pointer/value.cc: Likewise.
- * testsuite/20_util/is_member_pointer/requirements/typedefs.cc:
- Likewise.
- * testsuite/20_util/is_member_pointer/requirements/
- explicit_instantiation.cc: Likewise.
- * testsuite/20_util/is_member_function_pointer/value.cc: Likewise.
- * testsuite/20_util/is_member_function_pointer/
- requirements/typedefs.cc: Likewise.
- * testsuite/20_util/is_member_function_pointer/requirements/
- explicit_instantiation.cc: Likewise.
-
- * testsuite/20_util/is_convertible/value.cc: Minor tweak, adjust
- Copyright years.
-
-2011-04-12 Takaya Saito <gintensubaru@gmail.com>
-
- PR libstdc++/48476
- * include/std/tuple (_Tuple_impl<>::_Tuple_impl(_Tuple_impl<>&&),
- _Tuple_impl<>::operator=(_Tuple_impl&&), _Tuple_impl<>::operator=
- (_Tuple_impl<>&&), tuple_cat): Use std::forward where appropriate.
- * testsuite/20_util/tuple/cons/48476.cc: New.
- * testsuite/20_util/tuple/48476.cc: Likewise.
- * testsuite/20_util/tuple/creation_functions/48476.cc: Likewise.
-
-2011-04-12 Allan McRae <allan@archlinux.org>
-
- PR libstdc++/48566
- * testsuite/tr1/6_containers/unordered_map/requirements/
- iterator_null_neg.cc: Include <cstddef>.
- * testsuite/tr1/6_containers/unordered_set/requirements/
- iterator_null_neg.cc: Likewise.
- * testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc: Include
- <cstring>.
- * testsuite/util/testsuite_common_types.h: Include <limits>.
- * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
- Adjust dg-error line numbers.
- * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
- * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
- Likewise.
- * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
- Likewise.
- * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
- Likewise.
- * testsuite/29_atomics/atomic/cons/assign_neg.cc: Likewise.
- * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
-
-2011-04-11 Jason Merrill <jason@redhat.com>
-
- * testsuite/20_util/is_convertible/value.cc: Adjust.
-
-2011-04-11 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/25_algorithms/inplace_merge/moveable.cc: Actually run
- it in parallel-mode for check-parallel.
- * testsuite/25_algorithms/rotate/moveable.cc: Likewise.
- * testsuite/25_algorithms/stable_partition/moveable.cc: Likewise.
- * testsuite/25_algorithms/remove/moveable.cc: Likewise.
- * testsuite/25_algorithms/sort_heap/check_compare_by_value.cc:
- Likewise.
- * testsuite/25_algorithms/unique/moveable.cc: Likewise.
- * testsuite/25_algorithms/remove_if/moveable.cc: Likewise.
- * testsuite/25_algorithms/heap/moveable.cc: Likewise.
-
- * testsuite/25_algorithms/next_permutation/moveable.cc: Only skip
- the tests based on std::lexicographical_compare for check-parallel.
- * testsuite/25_algorithms/prev_permutation/moveable.cc: Likewise.
-
-2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/48541
- * include/std/functional (_Base_manager::_M_get_pointer): Use
- addressof.
- * testsuite/20_util/function/48541.cc: New.
-
-2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/48465
- * configure.ac (libtool_VERSION): Bump library version to 6:16:0.
- * configure: Regenerate.
- * config/abi/pre/gnu.ver (GLIBCXX_3.4.16): Export missing symbols.
- * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.16.
-
-2011-04-06 Jeffrey Yasskin <jyasskin@google.com>
-
- * include/ext/algorithm (is_sorted): In C++0x mode import from
- namespace std.
- * include/ext/numeric (iota): In C++0x mode import from
- namespace std.
- * testsuite/ext/is_sorted/cxx0x.cc: New.
- * testsuite/ext/iota/cxx0x.cc: New.
-
-2011-04-02 Jonathan Wakely <redi@gcc.gnu.org>
-
- PR libstdc++/48398
- * include/bits/unique_ptr.h (__tuple_type): Store pointer type.
- * testsuite/20_util/unique_ptr/modifiers/48398.cc: New.
- * testsuite/20_util/unique_ptr/requirements/pointer_type.cc: Remove
- unused parameter name.
-
-2011-03-31 Jeffrey Yasskin <jyasskin@google.com>
-
- * libsupc++/exception_ptr.h: Forward-declare std::type_info.
- * libsupc++/nested_exception.h (__throw_with_nested): Remove a
- redundant default argument from std::__throw_with_nested.
-
-2011-03-31 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/48382
- * src/ctype.cc: Do not include <bits/ctype_noninline.h>.
- * src/Makefile.am: Add ctype_configure_char.cc to host_sources.
- * src/Makefile.in: Regenerate.
- * include/Makefile.am: Remove ctype_noninline.h from host_headers.
- * include/Makefile.in: Regenerate.
- * doc/xml/manual/internals.xml: Update.
- * config/os/newlib/ctype_noninline.h: Fixup and rename to...
- * config/os/newlib/ctype_configure_char.cc: ... this.
- * config/os/aix/ctype_noninline.h: Likewise.
- * config/os/aix/ctype_configure_char.cc: Likewise.
- * config/os/vxworks/ctype_noninline.h: Likewise.
- * config/os/vxworks/ctype_configure_char.cc
- * config/os/hpux/ctype_noninline.h: Likewise.
- * config/os/hpux/ctype_configure_char.cc: Likewise.
- * config/os/gnu-linux/ctype_noninline.h: Likewise.
- * config/os/gnu-linux/ctype_configure_char.cc: Likewise.
- * config/os/mingw32/ctype_noninline.h: Likewise.
- * config/os/mingw32/ctype_configure_char.cc: Likewise.
- * config/os/tpf/ctype_noninline.h: Likewise.
- * config/os/tpf/ctype_configure_char.cc: Likewise.
- * config/os/uclibc/ctype_noninline.h: Likewise.
- * config/os/uclibc/ctype_configure_char.cc: Likewise.
- * config/os/bionic/ctype_noninline.h: Likewise.
- * config/os/bionic/ctype_configure_char.cc: Likewise.
- * config/os/djgpp/ctype_noninline.h: Likewise.
- * config/os/djgpp/ctype_configure_char.cc: Likewise.
- * config/os/qnx/qnx6.1/ctype_noninline.h: Likewise.
- * config/os/qnx/qnx6.1/ctype_configure_char.cc: Likewise.
- * config/os/bsd/netbsd/ctype_noninline.h: Likewise.
- * config/os/bsd/netbsd/ctype_configure_char.cc: Likewise.
- * config/os/bsd/darwin/ctype_noninline.h: Likewise.
- * config/os/bsd/darwin/ctype_configure_char.cc: Likewise.
- * config/os/bsd/freebsd/ctype_noninline.h: Likewise.
- * config/os/bsd/freebsd/ctype_configure_char.cc: Likewise.
- * config/os/irix/irix6.5/ctype_noninline.h: Likewise.
- * config/os/irix/irix6.5/ctype_configure_char.cc: Likewise.
- * config/os/generic/ctype_noninline.h: Likewise.
- * config/os/generic/ctype_configure_char.cc: Likewise.
- * config/os/solaris/solaris2.7/ctype_noninline.h: Likewise.
- * config/os/solaris/solaris2.7/ctype_configure_char.cc: Likewise.
-
-2011-03-25 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/future (future::share): Add.
- (packaged_task::result_type): Remove as per LWG 2030.
- (packaged_task::packaged_task): Remove redundant constructors, as per
- LWG 1514.
- * testsuite/30_threads/future/members/share.cc: New.
- * testsuite/30_threads/packaged_task/requirements/typedefs.cc: Remove.
-
-2011-03-25 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/28_regex/match_results/ctors/char/default.cc: Do not call
- members which require a fully established result state.
- * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
-
-2011-03-25 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/random.h (negative_binomial_distribution<>::
- negative_binomial_distribution(_IntType, double),
- negative_binomial_distribution<>::
- negative_binomial_distribution(const param_type&)): Tweak
- construction of _M_gd.
- * include/bits/random.tcc (negative_binomial_distribution<>::
- operator()): Adjust.
-
-2011-03-24 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/random.h (negative_binomial_distribution<>::
- negative_binomial_distribution(_IntType, double),
- negative_binomial_distribution<>::
- negative_binomial_distribution(const param_type&)): Fix
- construction of _M_gd.
- * include/bits/random.tcc (negative_binomial_distribution<>::
- operator()): Fix computation, per Leger's algorithm.
- * testsuite/util/testsuite_random.h (discrete_pdf,
- negative_binomial_pdf, poisson_pdf, uniform_int_pdf): New.
- (binomial_pdf): Swap last two parameters.
- * testsuite/26_numerics/random/discrete_distribution/
- operators/values.cc: New.
- * testsuite/26_numerics/random/negative_binomial_distribution/
- operators/values.cc: Likewise.
- * testsuite/26_numerics/random/poisson_distribution/
- operators/values.cc: Likewise.
- * testsuite/26_numerics/random/uniform_int_distribution/
- operators/values.cc: Likewise.
- * testsuite/26_numerics/random/binomial_distribution/
- operators/values.cc: Adjust.
-
-2011-03-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * config/abi/post/solaris2.8/baseline_symbols.txt: Regenerate.
- * config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
- * config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
- * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
- * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
-
-2011-03-23 Matthias Klose <doko@ubuntu.com>
-
- * config/abi/post/sparc-linux-gnu/baseline_symbols.txt: Regenerated.
-
-2011-03-23 Uros Bizjak <ubizjak@gmail.com>
-
- * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Regenerated.
-
-2011-03-22 Joseph Myers <joseph@codesourcery.com>
-
- * configure.ac: Don't handle powerpc*-*-gnu*.
- * configure: Regenerate.
-
-2011-03-22 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/21_strings/basic_string/cons/char/moveable2.cc: Tweak
- Copyright years.
- * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc:
- Likewise.
-
-2011-03-22 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/shared_ptr.h (operator>, operator<=, operator>=): Add,
- per DR 1401.
- (operator==, operator!=, operator<): Fix per the letter of DR 1401.
- * include/bits/shared_ptr_base.h: Likewise for __shared_ptr.
- * include/bits/unique_ptr.h (operator==, operator!=, operator<,
- operator<=, operator>, operator>=): Fix per the letter of DR 1401.
- * testsuite/20_util/shared_ptr/comparison/dr1401.cc: New.
- * testsuite/20_util/unique_ptr/comparison/dr1401.cc: Likewise.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust.
-
-2011-03-22 Jakub Jelinek <jakub@redhat.com>
-
- * config/abi/pre/gnu.ver (GLIBCXX_3.4.15): Export _ZNSsC2EOSs
- and _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_.
- * config/abi/post/solaris2.8/baseline_symbols.txt: Regenerated.
- * config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
- * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
- * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
- Likewise.
- * config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
- * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
- * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
- * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
- * testsuite/21_strings/basic_string/cons/char/moveable2.cc: New test.
- * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc: New
- test.
-
-2011-03-21 Jack Howarth <howarth@bromo.med.uc.edu>
-
- * testsuite/lib/prune.exp (libstdc++-dg-prune): Prune "could not
- create compact unwind for" warnings.
-
-2011-03-21 Jakub Jelinek <jakub@redhat.com>
-
- * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
- * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
- Likewise.
- * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
- * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
- * config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
- * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
- * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
-
- * testsuite/util/testsuite_abi.cc (check_version): Set incompatible
- even when adding symbols to CXXABI_1.3, GLIBCXX_LDBL_3.4 and
- CXXABI_LDBL_1.3 versions.
-
-2011-03-21 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/abi/pre/gnu.ver: Remove typeinfo name exports for C++0x types.
-
-2011-03-21 Jakub Jelinek <jakub@redhat.com>
-
- * config/abi/pre/gnu.ver (CXXABI_1.3): Don't export _ZT[IS][PK]*[no].
- (CXXABI_1.3.5): Export _ZTI[PK]*[no].
-
-2011-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * testsuite/22_locale/num_put/put/char/14220.cc: Don't xfail on
- sparc*-sun-solaris2.10 && lp64.
-
-2011-03-19 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/lib/libstdc++.exp (check_v3_target_c99_math): Rename
- to check_v3_target_cmath.
- * testsuite/lib/dg-options.exp (dg-require-c99_math): Rename
- to dg-require-cmath.
- * testsuite/26_numerics/random/binomial_distribution/
- operators/values.cc: Adjust.
-
-2011-03-18 Diego Novillo <dnovillo@google.com>
-
- * testsuite/decimal/mixed-mode-arith_neg.cc: Rename from
- mixed-mode_neg.cc
- * testsuite/decimal/mixed-mode-cmp_neg.cc: Factor out of
- mixed-mode-arith_neg.cc
-
-2011-03-18 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/util/testsuite_random.h: New.
- * testsuite/lib/libstdc++.exp (check_v3_target_c99_math): Add.
- * testsuite/lib/dg-options.exp (dg-require-c99_math): Likewise.
- * testsuite/26_numerics/random/bernoulli_distribution/
- operators/values.cc: New.
- * testsuite/26_numerics/random/binomial_distribution/
- operators/values.cc: Likewise.
- * testsuite/26_numerics/random/geometric_distribution/
- operators/values.cc: Likewise.
-
-2011-03-16 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/abi/pre/gnu.ver: Add base destructors for stdexcept classes.
- * testsuite/19_diagnostics/stdexcept.cc: New.
-
-2011-03-15 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/thread: Revert.
- * src/thread.cc: Same.
- * config/abi/pre/gnu.ver: Same.
-
-2011-03-15 Doug Kwan <dougkwan@google.com>
-
- PR libstdc++/48123
- * include/Makefile.am (install-freestanding-headers): Install
- cpu_defines.h
- * include/Makefile.in: Regenerate.
-
-2011-03-15 Benjamin Kosnik <bkoz@redhat.com>
-
- * config/abi/pre/gnu.ver: Make nested_exception exports super clear.
- Move bad_function_call exports from CXXABI_1.3.5 to GLIBCXX_3.4.15.
-
-2011-03-14 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/48130
- * src/future.cc: Guard definitions.
- * libsupc++/nested_exception.cc: Same.
-
-2011-03-14 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/Makefile.am: Add functional.cc, shared_ptr.cc.
- * src/Makefile.in: Regenerate.
- * libsupc++/Makefile.am: Add nested_exception.cc.
- * libsupc++/Makefile.in: Regenerate.
- * src/system_error.cc: Add ctor and dtor definitions for error_category.
- * src/functional.cc: New. Add dtor definition for bad_function_call.
- * src/stdexcept.cc: Add dtor definitions for domain_error,
- invalid_argument, length_error, out_of_range, range_error,
- overflow_error, underflow_error.
- * src/future.cc: Add dtor definition for __future_base::_Result_base.
- * src/shared_ptr.cc: New. Add dtor definition for bad_weak_ptr.
- * src/thread.cc: Add dtor for thread::_Impl_base.
- * include/std/system_error: Adjust.
- * include/std/stdexcept: Same.
- * include/std/future: Same.
- * include/std/functional: Same.
- * include/std/thread: Same.
- * include/bits/shared_ptr_base.h: Same.
- * libsupc++/nested_exception.cc: New. Add dtor for nested_exception.
- * libsupc++/nested_exception.h: Adjust.
- * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
- * config/abi/pre/gnu.ver: Add new exports.
-
-2011-03-14 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/regex_compiler.h: Nest namespace versioning.
- * include/bits/regex_grep_matcher.tcc: Same.
- * include/bits/regex_grep_matcher.h: Same.
- * include/bits/regex_cursor.h: Same.
- * include/bits/regex_nfa.h: Same.
- * include/bits/regex_nfa.tcc: Same.
-
- * include/bits/regex_grep_matcher.h: Version forward declarations.
- * include/bits/c++config: Add namespace association for __regex.
- * include/bits/regex.h: Make sub_match consistent.
-
-2011-03-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * doc/xml/manual/abi.xml: Replace docs.sun.com URLs by their OTN
- equivalents.
- * doc/html/manual/abi.html: Regenerate.
-
-2011-03-14 Tom Tromey <tromey@redhat.com>
-
- * python/libstdcxx/v6/printers.py (_use_gdb_pp): New global.
- Try to import `gdb.printing' module.
- (UniquePointerPrinter.__init__): Add 'typename' argument.
- (StdSlistPrinter.__init__): Likewise.
- (StdSlistIteratorPrinter.__init__): Likewise.
- (StdVectorIteratorPrinter.__init__): Likewise.
- (StdRbtreeIteratorPrinter.__init__): Likewise.
- (StdDebugIteratorPrinter.__init__): Likewise.
- (StdDequeIteratorPrinter.__init__): Likewise.
- (StdStringPrinter.__init__): Likewise.
- (RxPrinter, Printer): New class.
- (libstdcxx_printer): New global.
- (register_libstdcxx_printers): Rewrite.
- (build_libstdcxx_dictionary): Rewrite.
- (pretty_printers_dict): Remove.
-
-2011-03-14 Andrey Zholos <aaz@althenia.net>
-
- PR libstdc++/48114
- * include/bits/random.h (geometric_distribution): Correct formula
- in comment, per C++0x.
- (geometric_distribution<>::param_type::param_type(double)): Fix check.
- (geometric_distribution<>::param_type::_M_initialize):
- Store log(1 - p).
- * include/bits/random.tcc (geometric_distribution<>::operator()):
- Fix computation.
- (binomial_distribution<>::operator()): Likewise.
-
-2011-03-09 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/util/testsuite_rvalref.h: Minor tweaks.
-
-2011-03-09 Jonathan Wakely <redi@gcc.gnu.org>
- Chris Jefferson <chris@bubblescope.net>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/util/testsuite_rvalref.h (rvalstruct_compare_by_value):
- New.
- * testsuite/25_algorithms/sort_heap/check_compare_by_value.cc:
- Likewise.
- * testsuite/25_algorithms/partial_sort/check_compare_by_value:
- Likewise.
- * testsuite/25_algorithms/stable_sort/check_compare_by_value.cc:
- Likewise.
- * testsuite/25_algorithms/sort/check_compare_by_value: Likewise.
-
-2011-03-09 Chris Jefferson <chris@bubblescope.net>
-
- PR libstdc++/48038
- * include/bits/stl_algo.h (__merge_backward): Rename to
- __move_merge_backward and change to always move rather than copy.
- (__move_merge): New function similar to std::merge except values
- are moved instead of copied.
- (__merge_adaptive, __merge_sort_loop): Change from using std::merge
- and __merge_backward to __move_merge and __move_merge_backward.
-
-2011-03-07 Jason Merrill <jason@redhat.com>
-
- * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust
- expected errors.
-
-2011-03-07 Benjamin Kosnik <bkoz@redhat.com>
- Matthias Klose <doko@ubuntu.com>
- Jonathan Wakely <redi@gcc.gnu.org>
-
- PR libstdc++/47145
- * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Define.
- * configure.ac: Use it.
- * doc/Makefile.am (XSL_STYLE_DIR): Set at configure time.
- * configure: Regenerate.
- * doc/Makefile.in: Regenerate.
-
-2011-03-04 Benjamin Kosnik <bkoz@chula>
-
- * src/Makefile.am (inst_sources): Make source instantion files
- conditional.
- (XTEMPLATE_FLAGS): Make -fno-implicit-templates conditional.
- * src/Makefile.in: Regenerate.
- * src/valarray-inst.cc: Move to..
- * src/valarray.cc: ...this.
- * acinclude.m4 (GLIBCXX_ENABLE_EXTERN_TEMPLATE]): Define.
- * configure.ac (GLIBCXX_ENABLE_EXTERN_TEMPLATE): Use it.
- * configure: Regenerate.
- * include/Makefile.am (stamp-extern-template): Add.
- * include/Makefile.in: Regenerate.
-
- * doc/xml/manual/configure.xml: Document --enable-extern-template.
-
- * include/bits/locale_classes.tcc: Adjust comment.
- * include/bits/locale_facets.tcc: Same.
- * include/bits/basic_ios.tcc: Same.
- * include/bits/istream.tcc: Same.
- * include/bits/codecvt.h: Same.
- * include/bits/ostream.tcc: Same.
- * include/bits/sstream.tcc: Same.
- * include/bits/c++config: Same.
- * include/bits/basic_string.tcc: Same.
- * include/bits/ostream_insert.h: Same.
- * include/bits/locale_facets_nonio.tcc: Same.
- * include/bits/streambuf.tcc: Same.
- * include/bits/allocator.h: Same.
- * include/bits/fstream.tcc: Same.
-
- * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.
-
-2011-03-02 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/Makefile.am: Make clean fixups.
- * testsuite/Makefile.in: Regenerate.
-
-2011-03-02 Marc Glisse <marc.glisse@normalesup.org>
-
- * include/std/ratio (ratio_less): Add comments.
-
-2011-03-02 Marc Glisse <marc.glisse@normalesup.org>
-
- PR libstdc++/47913
- * include/std/ratio (ratio_add): Avoid denominator overflow.
- * testsuite/20_util/ratio/operations/47913.cc: New.
-
-2011-02-28 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/20_util/hash/chi2_quality.cc: Use C++0x mode on simulators.
- * testsuite/20_util/hash/quality.cc: Same.
-
-2011-02-28 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47921
- * include/std/streambuf (basic_streambuf<>::__safe_gbump,
- __safe_pbump): Add.
- * include/bits/streambuf.tcc (basic_streambuf<>::xgetn,
- xputn): Use the latter.
- * include/bits/streambuf_iterator.h: Likewise.
- * src/strstream.cc: Likewise.
- * src/streambuf.cc: Likewise.
- * src/compatibility.cc: Likewise.
- * src/istream.cc: Likewise.
- * include/bits/fstream.tcc (basic_filebuf<>::xsgetn): Use setg
- instead of gbump.
- * include/std/sstream (basic_stringbuf<>::_M_pbump): Add.
- * include/bits/sstream.tcc (basic_stringbuf<>::seekoff,
- seekpos, _M_sync): Use setg, setp, and _M_pbump.
- * config/abi/pre/gnu.ver: Tweak.
-
-2011-02-28 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/20_util/ratio/comparisons/comp3.cc: New.
-
-2011-02-28 Marc Glisse <marc.glisse@normalesup.org>
-
- PR libstdc++/42622
- * include/std/ratio (ratio_less): Reimplement to never overflow.
- * testsuite/20_util/ratio/comparisons/comp2.cc: Extend.
-
-2011-02-24 Benjamin Kosnik <bkoz@redhat.com>
-
- * testsuite/18_support/type_info/fundamental.cc: New.
-
- * testsuite/Makefile.am: Make clean fixups.
- * testsuite/Makefile.in: Regenerate.
-
-2011-02-19 François Dumont <francois.cppdevs@free.fr>
-
- * include/debug/string (basic_string::insert): Add iterator check and
- pass normal iterator to normal insert.
- * include/debug/macros.h (__glibcxx_check_heap,
- __glibcxx_check_heap_pred): Remove __glibcxx_check_valid_range,
- already done.
-
-2011-02-17 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47776
- * testsuite/ext/vstring/hash/char/1.cc: Fix.
- * testsuite/ext/vstring/hash/wchar_t/1.cc: Likewise.
-
-2011-02-17 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/regex.h (basic_regex::traits_type): Add typedef.
- (basic_regex::basic_regex(basic_regex&&)): Add noexcept.
- (basic_regex::operator=(basic_regex&&)): Likewise.
- (basic_regex::assign(basic_regex&&)): Likewise.
- (operator==(sub_match,...)): Implement DR 1181.
- (match_results::match_results(match_results&&)): Define.
- (match_results::operator=(const match_results&)): Fix parameter type.
- (match_results::operator=(match_results&&)): Define.
-
-2011-02-17 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/47724
- * include/bits/regex_compiler.h (_Scanner::_M_advance): Do not treat
- line anchors as metacharacters.
- * testsuite/28_regex/basic_regex/ctors/47724.cc: New.
-
-2011-02-16 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47773
- * include/ext/vstring.h (hash<__gnu_cxx::__vstring>,
- hash<__gnu_cxx::__wvstring>, hash<__gnu_cxx::__u16vstring>,
- hash<__gnu_cxx::__u32vstring>): Add.
- * testsuite/ext/vstring/hash/char/1.cc: New.
- * testsuite/ext/vstring/hash/wchar_t/1.cc: Likewise.
-
-2011-02-16 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/regex.h (match_results::format): Use char_traits.
-
-2011-02-16 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/std/atomic: Remove atomic_address, uplift to N3225.
- * include/bits/atomic_0.h: Same.
- * include/bits/atomic_2.h: Same.
- * include/bits/atomic_base.h: Same.
- * testsuite/29_atomics/atomic_address/*: Delete.
-
-2011-02-14 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/regex.h (sub_match::sub_match): Add.
- (match_results::ready): Add.
- (match_results::empty): Adjust.
- (match_results::length): Add missing dereference.
- (match_results::operator[],prefix,suffix): Add debug mode checks.
- (match_results::cend): Re-use end().
- (match_results::format): Adjust signatures.
- (operator==(match_results,match_results)): Implement.
- * include/bits/regex_compiler.h (_Scanner_base): Use constexpr.
- * include/bits/regex_constants.h (syntax_option_type): Likewise.
- * include/bits/regex_grep_matcher.h: Fix comment typo.
- (_SpecializedResults::_SpecializedResults): Simplify.
- * include/bits/regex_cursor.h: Fix comment typo.
- * include/bits/regex_nfa.h: Likewise.
- * testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc:
- Fix error code, remove xfail.
- * testsuite/28_regex/basic_regex/ctors/extended/
- string_range_01_02_03.cc: Likewise.
-
-2011-02-14 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/bits/regex_compiler.h: Remove unnecessary bind() calls.
- * include/bits/regex_nfa.h: Remove unnecessary base classes.
-
-2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-
- * configure: Regenerate.
-
-2011-02-12 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47709
- * include/ext/algorithm (is_heap): In C++0x mode import from
- namespace std.
- * testsuite/ext/is_heap/47709.cc: New.
-
-2011-02-12 Jakub Jelinek <jakub@redhat.com>
- Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/47662
- * testsuite/17_intro/headers/c++200x/operator_names.cc: New.
- * testsuite/17_intro/headers/c++1998/operator_names.cc: Add comment.
-
-2011-02-12 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/tr1/cmath (fabs): Define.
- * include/tr1/complex (acos, asin, atan): Avoid duplicate definitions
- in C++0x mode.
-
-2011-02-12 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * testsuite/tr1/headers/c++200x/complex.cc: New.
-
-2011-02-11 Johannes Singler <singler@kit.edu>
-
- PR libstdc++/47433
- * include/parallel/losertree.h
- (_LoserTreeUnguarded<>::__delete_min_insert):
- Add missing "using std::swap;", as for other variants.
-
-2011-02-10 Benjamin Kosnik <bkoz@redhat.com>
-
- * src/Makefile.am (sources): Add regex.cc.
- * src/Makefile.in: Regenerate.
- * src/regex.cc: New.
- * include/bits/regex_error.h (error_type): Use constexpr.
- (regex_error): Move ctor and dtor out of line.
-
- * testsuite/28_regex/03_requirements: To...
- * testsuite/28_regex/requirements: ... this.
- * testsuite/28_regex/04_header: To...
- * testsuite/28_regex/headers: ... this.
- * testsuite/28_regex/05_constants: To...
- * testsuite/28_regex/constants: ... this.
- * testsuite/28_regex/06_exception_type: To...
- * testsuite/28_regex/regex_error: ... this.
- * testsuite/28_regex/07_traits: To...
- * testsuite/28_regex/traits: ... this.
- * testsuite/28_regex/08_basic_regex: To...
- * testsuite/28_regex/basic_regex: ... this.
- * testsuite/28_regex/09_sub_match: To...
- * testsuite/28_regex/sub_match: ... this.
- * testsuite/28_regex/10_match_results: To...
- * testsuite/28_regex/match_results: ... this.
- * testsuite/28_regex/11_algorithms: To...
- * testsuite/28_regex/algorithms: ... this.
- * testsuite/28_regex/12_iterators: To...
- * testsuite/28_regex/iterators: ... this.
-
-2011-02-10 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/47662
- * include/bits/c++config: Do not use alternative token.
- * testsuite/17_intro/headers/c++1998/operator_names.cc: New.
-
-2011-02-10 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * src/future.cc (future_error_category::message): Handle no_state.
-
-2011-02-10 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/23_containers/multimap/modifiers/erase/47628.cc: Do
- not test in C++0x mode.
- * testsuite/23_containers/map/modifiers/erase/47628.cc: Likewise.
- * testsuite/20_util/headers/utility/synopsis.cc: Tweak to work
- in C++0x mode too.
-
-2011-02-10 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/status_cxx200x.xml: Update.
- * doc/html/*: Regenerate.
-
-2011-02-10 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/debug.xml: Improve data race docs.
-
-2011-02-09 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47668
- * include/debug/map.h (map): Remove unnecessary using-declaration.
- * include/debug/multimap.h (multimap): Likewise.
- * include/profile/map.h (map): Likewise.
- * include/profile/multimap.h (multimap): Likewise.
-
-2011-02-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/43863
- * libsupc++/guard.cc (recursive_init_error::~recursive_init_error):
- Move to ...
- * libsupc++/guard_error.cc: ... new file.
- * libsupc++/Makefile.am: Update.
- * libsupc++/Makefile.in: Regenerate.
-
-2011-02-09 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * include/std/future (packaged_task::operator bool): Rename to...
- (packaged_task::valid): ...this.
- * testsuite/30_threads/packaged_task/cons/1.cc: Adjust.
- * testsuite/30_threads/packaged_task/cons/2.cc: Adjust.
- * testsuite/30_threads/packaged_task/cons/move.cc: Adjust.
- * testsuite/30_threads/packaged_task/cons/move_assign.cc: Adjust.
- * testsuite/30_threads/packaged_task/cons/alloc.cc: Adjust.
- * testsuite/30_threads/packaged_task/members/invoke.cc: Adjust.
- * testsuite/30_threads/packaged_task/members/reset.cc: Adjust.
- * testsuite/30_threads/packaged_task/members/reset2.cc: Adjust.
- * testsuite/30_threads/packaged_task/members/swap.cc: Adjust.
- * testsuite/30_threads/packaged_task/members/boolconv.cc: Remove.
- * testsuite/30_threads/packaged_task/members/valid.cc: Add.
-
-2011-02-09 Paolo Carlini <paolo.carlini@oracle.com>
-
- * doc/xml/manual/io.xml: Fix typo.
- * doc/html/manual/streambufs.html: Likewise.
-
-2011-02-09 Paolo Carlini <paolo.carlini@oracle.com>
-
- * config/abi/pre/gnu.ver: Fix.
-
-2011-02-08 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/xml/manual/appendix_porting.xml: Add doc section.
- * doc/xml/manual/appendix_contributing.xml: Split out doc bits to...
- * doc/xml/manual/documentation_hacking.xml: ...here.
-
- * doc/xml/manual/debug_mode.xml: Adjust.
- * doc/xml/manual/prerequisites.xml: Adjust.
- * doc/Makefile.am (xml_sources): Add dot files,
- documentation_hacking.xml.
- * doc/Makefile.in: Regenerate.
-
- * doc/xml/manual/build_hacking.xml: Use absolute paths for images.
- * doc/xml/images/confdeps.pdf: Add.
-
- * doc/html/*: Regenerate.
-
-2011-02-08 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/gnu/fdl-1.2.xml: Remove.
- * doc/xml/gnu/gpl-2.0.xml: Remove.
- * doc/Makefile.am: Update.
- * doc/Makefile.in: Regenerate.
-
-2011-02-07 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47628
- * include/bits/stl_tree.h (_Rb_tree::erase(iterator), erase(iterator,
- iterator)): Add back in C++03 mode.
- * testsuite/23_containers/map/modifiers/erase/47628.cc: New.
- * testsuite/23_containers/multimap/modifiers/erase/47628.cc: Likewise.
-
-2011-02-07 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/47560 try two
- * config/os/hpux/os_defines.h: Guard for C++.
-
-2011-02-07 Gerald Pfeifer <gerald@pfeifer.com>
-
- * doc/xml/faq.xml: Adjust link to bug database.
- Remove old item on broken header files.
-
-2011-02-04 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/regex_error.h (__throw_regex_error): Not inline.
- * src/functexcept.cc: Add definition.
- * config/abi/pre/gnu.ver: Export.
-
-2011-02-04 Ralf Corsépius <ralf.corsepius@rtems.org>
-
- * crossconfig.m4 (GLIBCXX_CROSSCONFIG): Add *-rtems*.
- * configure: Regenerate.
-
-2011-02-01 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/46914
- * include/bits/atomic_0.h (_ATOMIC_STORE_, _ATOMIC_MODIFY_,
- _ATOMIC_CMPEXCHNG_): Rename __v -> __w, and __m -> __n, to
- avoid name conflicts.
-
-2011-02-01 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/47560
- * config/os/hpux/os_defines.h: Remove use of macros on namespace.
-
-2011-02-01 Benjamin Kosnik <bkoz@redhat.com>
-
- * scripts/run_doxygen: Allow doxygen 1.7.0 again.
- * doc/doxygen/user.cfg.in (PDF_HYPERLINKS): Re-enable.
- (COMPACT_LATEX): Enable.
-
- * include/profile/impl/profiler_container_size.h: Adjust doxygen markup.
- * include/profile/impl/profiler_hash_func.h: Same.
- * include/bits/hashtable.h: Same.
- * include/backward/auto_ptr.h: Same.
- * include/backward/strstream: Same.
- * include/backward/backward_warning.h: Same.
- * include/backward/binders.h: Same.
-
-2011-02-01 Gerald Pfeifer <gerald@pfeifer.com>
-
- * doc/xml/manual/debug.xml: Use GDB instead of gdb.
- Adjust link to GDB manual.
-
-2011-01-31 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/c++config (_GLIBCXX_DEPRECATED): To
- _GLIBCXX_USE_DEPRECATED.
- (_GLIBCXX_DEPRECATED_ATTR): To _GLIBCXX_DEPRECATED.
- * doc/xml/manual/using.xml: Same.
- * include/std/memory: Same.
- * include/std/streambuf: Same.
- * include/bits/shared_ptr.h: Same.
- * include/bits/unique_ptr.h: Same.
- * include/bits/shared_ptr_base.h: Same.
- * include/bits/stl_function.h: Same.
- * include/tr1/shared_ptr.h: Same.
- * include/backward/auto_ptr.h: Same.
- * include/backward/binders.h: Same.
-
-2011-01-31 Paolo Carlini <paolo.carlini@oracle.com>
-
- * doc/html/ext/lwg-active.html: Update to Revision D73.
- * doc/html/ext/lwg-closed.html: Likewise.
- * doc/html/ext/lwg-defects.html: Likewise.
- * doc/xml/manual/intro.xml: Update status of issues 408, 539, 865.
-
-2011-01-30 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/36104 part four
- * include/bits/c++config (_GLIBCXX_STD): Remove.
- (_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C.
- (_GLIBCXX_P): Now _GLIBCXX_STD_A.
- (_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL,
- _GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove.
- (_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL,
- _GLIBCXX_INLINE_PROFILE): Remove.
- (_GLIBCXX_BEGIN_NAMESPACE(X)): Remove.
- (_GLIBCXX_END_NAMESPACE): Remove.
- (_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove.
- (_GLIBCXX_END_NESTED_NAMESPACE): Remove.
- (_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add.
- (_GLIBCXX_END_NAMESPACE_ALGO): Add.
- (_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add.
- (_GLIBCXX_END_NAMESPACE_CONTAINER): Add.
- (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add.
- (_GLIBCXX_END_NAMESPACE_VERSION): Add.
- (_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL.
- (_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL.
- (_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY.
- * include/*: Use new macros for namespace scope.
- * config/*: Same.
- * src/*: Same.
-
- * src/Makefile.am (sources): Remove debug_list.cc, add
- compatibility-debug_list-2.cc.
- (parallel_sources): Remove parallel_list.cc, add
- compatibility-parallel_list-2.cc.
- (compatibility-parallel_list-2.[o,lo]): New rule.
- * src/Makefile.in: Regenerate.
- * src/debug_list.cc: Remove.
- * src/parallel_list.cc: Remove.
- * src/compatibility-list-2.cc: New.
- * src/compatibility-debug_list-2.cc: New.
- * src/compatibility-parallel_list-2.cc: New.
-
- * doc/doxygen/user.cfg.in: Adjust macros.
-
- * testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros.
- * testsuite/20_util/declval/requirements/1_neg.cc: Same.
- * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
- * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
- * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
- * testsuite/20_util/forward/c_neg.cc: Same.
- * testsuite/20_util/forward/f_neg.cc: Same.
- * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
- * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
- * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
- * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same.
- * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
- * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
- * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
- * testsuite/23_containers/deque/requirements/dr438/
- constructor_1_neg.cc: Same.
- * testsuite/23_containers/deque/requirements/dr438/
- constructor_2_neg.cc: Same.
- * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
- * testsuite/23_containers/forward_list/capacity/1.cc: Same.
- * testsuite/23_containers/forward_list/requirements/dr438/
- assign_neg.cc: Same.
- * testsuite/23_containers/forward_list/requirements/dr438/
- constructor_1_neg.cc: Same.
- * testsuite/23_containers/forward_list/requirements/dr438/
- constructor_2_neg.cc: Same.
- * testsuite/23_containers/forward_list/requirements/dr438/
- insert_neg.cc: Same.
- * testsuite/23_containers/list/capacity/29134.cc: Same.
- * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_1_neg.cc: Same.
- * testsuite/23_containers/list/requirements/dr438/
- constructor_2_neg.cc: Same.
- * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
- * testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
- * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same.
- * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_1_neg.cc: Same.
- * testsuite/23_containers/vector/requirements/dr438/
- constructor_2_neg.cc: Same.
- * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
- * testsuite/25_algorithms/sort/35588.cc: Same.
- * testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
- * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
- * testsuite/ext/profile/mutex_extensions_neg.cc: Same.
- * testsuite/ext/profile/profiler_algos.cc: Same.
- * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
- * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
- * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
- * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same.
- * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.
-
-2011-01-30 Gerald Pfeifer <gerald@pfeifer.com>
-
- * doc/xml/manual/abi.xml: Adjust link to C++ ABI specification.
- Improve description of one such reference.
-
-2011-01-30 Gerald Pfeifer <gerald@pfeifer.com>
-
- * doc/xml/manual/codecvt.xml: Fix link to The Austin Common
- Standards Revision Group.
- * doc/xml/manual/locale.xml: Ditto.
- * doc/xml/manual/messages.xml: Ditto.
- * doc/xml/manual/using_exceptions.xml: Ditto.
-
-2011-01-28 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/atomic_base.h: Do not include <stddef.h>.
- (kill_dependency): Uglify ret.
-
-2011-01-26 Johannes Singler <singler@kit.edu>
-
- * include/parallel/numeric (inner_product, partial_sum):
- Qualify subsequent call with __gnu_parallel instead of
- _GLIBCXX_STD_P to reenable parallel execution without ambiguity.
- * include/parallel/algobase.h (equal): Likewise.
- * include/parallel/algo.h (find_first_of, search_n, merge,
- nth_element, partial_sort, max_element, min_element): Likewise.
- * testsuite/25_algorithms/headers/algorithm/
- parallel_algorithm_mixed1.cc (main): Add respective test cases.
- * testsuite/25_algorithms/headers/algorithm/
- parallel_algorithm_mixed2.cc (main): Likewise.
- * testsuite/26_numerics/headers/numeric/
- parallel_numeric_mixed1.cc (main): Likewise.
- * testsuite/26_numerics/headers/numeric/
- parallel_numeric_mixed2.cc (main): Likewise.
-
-2011-01-24 Graham Reed <greed@pobox.com>
-
- PR libstdc++/47387
- * config/os/aix/ctype_inline.h (ctype<char>::is): Use _M_table if
- provided.
-
-2011-01-24 Johannes Singler <singler@kit.edu>
-
- PR libstdc++/47433
- * include/parallel/losertree.h
- (_LoserTree<>::__delete_min_insert):
- Do not qualify swap with std:: for value type,
- but include a using directive instead.
- (_LoserTreeUnguarded<>::__delete_min_insert): Likewise.
- * include/parallel/balanced_quicksort.h (__qsb_divide):
- Use std::iter_swap instead of std::swap.
- (__qsb_local_sort_with_helping): Likewise.
- * include/parallel/partition.h (__parallel_partition):
- Likewise. (__parallel_nth_element): Likewise.
-
-2011-01-24 Johannes Singler <singler@kit.edu>
-
- PR libstdc++/47437
- * include/parallel/multiway_merge.h (_UnguardedIterator):
- Remove useless "mutable" from reference declaration.
-
-2011-01-21 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/bits/c++config (_GLIBCXX_EXPORT_TEMPLATE): Remove.
- * include/debug/safe_sequence.h: Same.
- * include/debug/safe_iterator.h: Same.
- * include/std/forward_list: Same.
- * include/std/deque: Same.
- * include/std/list: Same.
- * include/std/random: Same.
- * include/std/streambuf: Same.
- * include/std/fstream: Same.
- * include/std/istream: Same.
- * include/std/string: Same.
- * include/std/ostream: Same.
- * include/std/sstream: Same.
- * include/ext/vstring.h: Same.
- * include/bits/basic_ios.h: Same.
- * include/bits/locale_classes.h: Same.
- * include/bits/locale_facets.h: Same.
- * include/bits/valarray_array.h: Same.
- * include/bits/locale_facets_nonio.h: Same.
- * include/tr1/random: Same.
-
-2011-01-20 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- * doc/xml/manual/diagnostics.xml: Replace note about C++0x concepts.
-
-2011-01-20 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/36104 part three
- * src/hashtable_c++0x.cc: Adjust namespace macros.
- * testsuite/util/testsuite_rvalref.h: Don't forward declare hash.
- * config/abi/pre/gnu-versioned-namespace.ver: Update.
-
-2011-01-20 Benjamin Kosnik <bkoz@redhat.com>
-
- * include/ext/pb_ds/detail/resize_policy/
- hash_load_check_resize_trigger_imp.hpp: Adjust assert condition.
- * include/ext/pb_ds/detail/pat_trie_/
- constructors_destructor_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Format.
- * include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same.
- * include/ext/pb_ds/detail/debug_map_base.hpp: Use never_adjustor.
-
- * testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Adjust
- iterations downward when testing in debug mode.
- * testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Same.
- * testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Same.
- * testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Same.
- * testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Same.
- * testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Same.
- * testsuite/ext/pb_ds/example/hash_illegal_resize.cc: Use SIZE,
- reduce in debug mode.
-
-2011-01-19 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/36104 part two
- * include/bits/hashtable.h: Revert to non-nested macro usage.
- * include/bits/hashtable_policy.h: Same.
-
-2011-01-19 Graham Reed <greed@pobox.com>
-
- PR libstdc++/47354
- * src/bitmap_allocator.cc (free_list::_M_get): Lock mutex.
-
-2011-01-18 Benjamin Kosnik <bkoz@redhat.com>
-
- * doc/xml/images/confdeps.png: Regenerate.
-
- * include/std/chrono (duration): Mark copy constructor constexpr.
- * testsuite/20_util/duration/cons/constexpr.cc: Add test.
-
-2011-01-18 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/unique_ptr.h (default_delete<>::default_delete()):
- Declare defaulted per DR 1517.
- * testsuite/util/testsuite_common_types.h
- (constexpr_defaulted_default_constructible): Add.
- * testsuite/20_util/default_delete/cons/constexpr.cc: Use it.
-
-2011-01-17 Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/stl_queue.h (queue<>::swap, priority_queue<>::swap):
- Implement DR 1198.
- * include/bits/stl_stack.h (stack<>::swap): Likewise.
-
-2011-01-16 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47323
- * testsuite/28_regex/08_basic_regex/requirements/constexpr_data.cc:
- Only test wregex when _GLIBCXX_USE_WCHAR_T is defined.
-
-2011-01-16 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47320
- * testsuite/18_support/numeric_limits/lowest.cc:
- Only test wchar_t when _GLIBCXX_USE_WCHAR_T is defined.
-
-2011-01-16 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47321
- * testsuite/21_strings/basic_string/requirements/typedefs.cc:
- Only test std::wstring when _GLIBCXX_USE_WCHAR_T is defined.
-
-2011-01-16 François Dumont <francois.cppdevs@free.fr>
-
- * testsuite/23_containers/forward_list/debug/erase_after1_neg.cc: Move
- to this. Use _neg suffix.
- * testsuite/23_containers/forward_list/debug/erase_after1.cc: ...from
- this.
- * testsuite/23_containers/forward_list/debug/erase_after2_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/erase_after2.cc: Same.
- * testsuite/23_containers/forward_list/debug/erase_after3_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/erase_after3.cc: Same.
- * testsuite/23_containers/forward_list/debug/erase_after4_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/erase_after4.cc: Same.
- * testsuite/23_containers/forward_list/debug/erase_after5_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/erase_after5.cc: Same.
- * testsuite/23_containers/forward_list/debug/erase_after6_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/erase_after6.cc: Same.
- * testsuite/23_containers/forward_list/debug/erase_after7_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/erase_after7.cc: Same.
- * testsuite/23_containers/forward_list/debug/erase_after8_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/erase_after8.cc: Same.
- * testsuite/23_containers/forward_list/debug/erase_after9_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/erase_after9.cc: Same.
- * testsuite/23_containers/forward_list/debug/insert_after1_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/insert_after1.cc: Same.
- * testsuite/23_containers/forward_list/debug/insert_after2_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/insert_after2.cc: Same.
- * testsuite/23_containers/forward_list/debug/insert_after3_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/insert_after3.cc: Same.
- * testsuite/23_containers/forward_list/debug/splice_after1_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/splice_after1.cc: Same.
- * testsuite/23_containers/forward_list/debug/splice_after2_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/splice_after2.cc: Same.
- * testsuite/23_containers/forward_list/debug/splice_after3_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/splice_after3.cc: Same.
- * testsuite/23_containers/forward_list/debug/splice_after4_neg.cc:
- Same.
- * testsuite/23_containers/forward_list/debug/splice_after4.cc: Same.
-
-2011-01-14 Benjamin Kosnik <bkoz@redhat.com>
-
- PR libstdc++/36104
- * include/Makefile.am (bits_sup_headers, stamp-bits-sup): New.
- * include/Makefile.in: Regenerate.
- * libsupc++/Makefile.am (std_HEADERS, bits_HEADERS): New.
- (install-stdHEADERS, install-bitsHEADERS): New.
- * libsupc++/Makefile.in: Regenerate.
-
- * include/bits/c++config: Update for inline namespaces.
- * libsupc++/cxxabi-forced.h: To...
- * libsupc++/cxxabi_forced.h: ...this.
- * libsupc++/hash_bytes.h: Separate file.
- * libsupc++/typeinfo: Use it.
- * libsupc++/exception: Adjust for bits subdirectory.
- * libsupc++/eh_aux_runtime.cc: Same.
- * libsupc++/eh_ptr.cc: Same.
- * libsupc++/new_op.cc: Same.
- * libsupc++/exception_defines.h: Same.
- * libsupc++/nested_exception.h: Same.
- * libsupc++/eh_terminate.cc: Same.
- * libsupc++/vec.cc: Same.
- * libsupc++/vterminate.cc: Same.
- * libsupc++/exception_ptr.h: Same.
- * libsupc++/eh_personality.cc: Same.
- * libsupc++/eh_call.cc: Same.
- * libsupc++/new_opnt.cc: Same.
- * libsupc++/hash_bytes.cc: Same.
- * config/cpu/arm/cxxabi_tweaks.h: Same.
- * config/cpu/generic/cxxabi_tweaks.h: Same.
- * libsupc++/cxxabi.h: Same. Consolidate _GLIBCXX_NOTHROW defines.
- * include/std/bitset: Same.
- * include/ext/vstring.tcc: Same.
- * include/bits/hashtable.h: Same.
- * include/bits/functional_hash.h: Same.
- * include/bits/hashtable_policy.h: Same.
- * include/bits/basic_string.h: Same.
- * include/bits/istream.tcc: Same.
- * include/bits/ostream.tcc: Same.
- * include/bits/algorithmfwd.h: Same.
- * include/bits/basic_string.tcc: Same.
- * include/bits/ostream_insert.h: Same.
- * include/bits/fstream.tcc: Same.
- * include/bits/functexcept.h: Same.
-
- * doc/doxygen/user.cfg.in: Adjust names.
-
- * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.
-
-2011-01-14 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/25_algorithms/is_permutation/check_type.cc: Minor
- tweaks.
- * testsuite/25_algorithms/is_permutation/1.cc: Cosmetic changes.
-
-2011-01-13 Paolo Carlini <paolo.carlini@oracle.com>
-
- * testsuite/25_algorithms/is_permutation/check_type.cc: New.
- * testsuite/25_algorithms/is_permutation/requirements/
- explicit_instantiation/2.cc: Likewise.
- * testsuite/25_algorithms/is_permutation/requirements/
- explicit_instantiation/pod.cc: Likewise.
- * testsuite/25_algorithms/is_permutation/1.cc: Likewise.
-
-2011-01-13 John Lakos <jlakos@bloomberg.net>
- Pablo Halpern <phalpern@halpernwightsoftware.com>
- Paolo Carlini <paolo.carlini@oracle.com>
-
- * include/bits/stl_algo.h (is_permutation): Add, per N3068.
- * include/bits/algorithmfwd.h: Add.
-
-2011-01-13 Jonathan Wakely <jwakely.gcc@gmail.com>
-
- PR libstdc++/47045
- * config/os/bsd/netbsd/ctype_base.h: Use new macros based on version.
-
-2011-01-11 Paolo Carlini <paolo.carlini@oracle.com>
-
- * aclocal.m4: Regenerate.
-
-2011-01-06 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/47185
- * src/placeholders.cc: New.
- * src/Makefile.am: Adjust.
- * src/Makefile.in: Regenerate.
- * include/std/functional (placeholders::_1, _2, ..., _29): Declare
- extern.
- * config/abi/pre/gnu.ver: Export.
-
-2011-01-05 François Dumont <francois.cppdevs@free.fr>
-
- * include/debug/safe_base.h (_Safe_iterator_base::_M_unlink): New.
- * include/src/debug.cc: Use latter
- * include/debug/forward_list (forward_list<>::_M_swap): Fix to
- correctly handle before_begin iterators.
- * testsuite/23_containers/forward_list/debug/swap.cc: Remove now
- useless _GLIBCXX_DEBUG checks.
-
-2011-01-04 Kai Tietz <kai.tietz@onevision.com>
-
- PR libstdc++/47145
- * configure.ac (AC_CHECK_FILE): Replaced by test -f.
- * configure: Regenerated.
-
-2011-01-03 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR libstdc++/46922
- * config/abi/pre/gnu.ver: Export std::bad_function_call symbols.
+ * include/bits/hashtable_policy.h (_Ebo_helper<>): Rename to the more
+ specific _Hashtable_ebo_helper. Hide this implementation detail thanks
+ to private inheritance.
-
-Copyright (C) 2011 Free Software Foundation, Inc.
+2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
-Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved.
+ PR c++/51738
+ * testsuite/23_containers/map/element_access/39901.cc: New.
diff --git a/libstdc++-v3/ChangeLog-2011 b/libstdc++-v3/ChangeLog-2011
new file mode 100644
index 00000000000..6d1ab92f88c
--- /dev/null
+++ b/libstdc++-v3/ChangeLog-2011
@@ -0,0 +1,6365 @@
+2011-12-30 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/extensions.xml: Improve markup and note that some
+ extensions are included in C++11.
+ * doc/xml/manual/concurrency_extensions.xml: Likewise.
+
+2011-12-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/51711
+ * include/bits/regex.h (regex_replace): Fix thinko.
+ * testsuite/28_regex/algorithms/regex_replace/char/51711.cc: New.
+ * testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc:
+ Likewise.
+
+2011-12-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/hashtable_policy.h (struct _Ebo_helper<>): Don't use
+ _N, badname on Solaris; minor stylistic changes.
+
+2011-12-29 François Dumont <fdumont@gcc.gnu.org>
+
+ PR libstdc++/51608
+ * include/bits/hashtable_policy.h (_Equal_helper<>): New, change the
+ way the _Equal functor is used depending on whether hash code is
+ cached or not.
+ (_Ebo_helper<>): New helper type to introduce EBO when possible.
+ (_Hash_code_base): Use _Ebo_helper to limit memory footprint. Move
+ _Equal functor management...
+ (_Hashtable_base): ...here, new, use _Equal_helper.
+ (_Local_iterator_base<>, _Local_iterator<>, _Local_const_iterator<>):
+ New, use _Hash_code_base, implementation of...
+ * include/bits/hashtable.h (_Hashtable<>::local_iterator,
+ _Hashtable<>::const_local_iterator): ...those. Add static assertions
+ checking that some functors are empty depending on whether hash code
+ is cache or not.
+ (_Hashtable<>::_M_bucket_index): New overloads using current bucket
+ count, use through out the _Hastable<> implementation.
+ * include/bits/unordered_set.h (__unordered_set<>,
+ __unordered_multiset<>): Cache hash code iff hash functor is not
+ empty and not final.
+ * include/bits/unordered_map.h (__unordered_map<>,
+ __unordered_multimap<>): Likewise.
+ * include/debug/unordered_map
+ (unordered_map<>::_S_to_local, unordered_multimap<>::_S_to_local):
+ Adapt to match new local iterator implementation.
+ * include/debug/unordered_set (unordered_set<>::_S_to_local,
+ unordered_multiset<>::_S_to_local): Likewise.
+ * include/profile/unordered_map (unordered_map<>::_M_profile_destruct,
+ unordered_multimap<>::_M_profile_destruct): Enhance thanks to usage of
+ local iterators.
+ * include/profile/unordered_set (unordered_set<>::_M_profile_destruct,
+ unordered_multiset<>::_M_profile_destruct): Likewise.
+ * testsuite_files/23_containers/unordered_set/instantiation_neg.cc:
+ Fix error line.
+ * testsuite_files/23_containers/unordered_set/final_hash.cc: New.
+ * testsuite_files/23_containers/unordered_multiset/final_hash.cc: New.
+ * testsuite_files/23_containers/unordered_map/final_hash.cc: New.
+ * testsuite_files/23_containers/unordered_multimap/final_hash.cc: New.
+
+2011-12-29 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51701
+ * doc/xml/manual/extensions.xml (Input and Output): Remove reference
+ to RWLock class.
+
+2011-12-23 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/tr1/2_general_utilities/shared_ptr/cons/
+ weak_ptr_expired.cc: Modify to PASS instead of XFAIL.
+
+2011-12-23 Kai Tietz <ktietz@redhat.com>
+
+ * config/os/mingw32-w64/os_defines.h (__USE_MINGW_ANSI_STDIO): Define.
+
+2011-12-23 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/c_global/cinttypes: Update comments that refer to TR1.
+
+2011-12-23 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/49204
+ * include/std/future (future_errc): Implement LWG 2056.
+
+2011-12-23 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/regex.h (match_results::size_type): Use
+ allocator_traits.
+
+2011-12-22 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/48362
+ * testsuite/libstdc++-prettyprinters/48362.cc: New.
+
+2011-12-22 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/48362
+ * python/libstdcxx/v6/printers.py (StdTuplePrinter): Handle empty
+ tuples.
+
+2011-12-20 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51365
+ * include/std/tuple (_Tuple_impl): Check __is_final as well as
+ is_empty.
+ * testsuite/20_util/tuple/51365.cc: New.
+
+2011-12-19 Benjamin Kosnik <bkoz@redhat.com>
+
+ * libsupc++/eh_tm.cc (free_any_cxa_exception): Use
+ __GCC_ATOMIC_INT_LOCK_FREE, not _GLIBCXX_ATOMIC_BUILTINS_4.
+
+2011-12-19 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/performance/25_algorithms/search_n.cc: Disambiguate
+ local variable.
+
+2011-12-18 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/iterators.xml: Replace "sect1" with "section".
+ * doc/xml/manual/algorithms.xml: Likewise.
+ * doc/html/manual/iterators.html: Likewise.
+ * doc/html/manual/algorithms.html: Likewise.
+
+2011-12-15 Paolo Carlini <paolo.carlini@oracle.com>
+ Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51558
+ * include/bits/functional_hash.h (struct hash): Add static_assert.
+ * src/compatibility-c++0x.cc: Adjust compatibility definitions.
+ * testsuite/23_containers/unordered_map/erase/51142.cc: Adjust.
+ * testsuite/23_containers/unordered_set/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/erase/51142.cc: Likewise.
+
+2011-12-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/22_locale/num_put/put/char/9780-2.cc: Add test for "C"
+ locale, add sanity checks in case of grouping.
+
+2011-12-15 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51540
+ * include/bits/stl_numeric.h (partial_sum): Adjust doxygen comments.
+
+2011-12-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ Revert:
+ 2011-12-12 Kai Tietz <ktietz@redhat.com>
+
+ PR libstdc++/51135
+ * libsupc++/cxxabi.h (__cxa_dtor_type): New type.
+ (__cxa_throw): Use it for destructor-argument.
+ * libsupc++/eh_throw.cc (__cxa_throw): Likewise.
+ * libsupc++/unwind-cxx.h (__cxa_exception): Change type of member
+ exceptionDestructor to __cxa_dtor_type.
+ * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_THISCALL_ON_DTOR):
+ Define.
+ (__cxa_dtor_type): Declare target secific type variant.
+ * config/os/mingw32/os_defines.h: Likewise.
+
+2011-12-12 Kai Tietz <ktietz@redhat.com>
+
+ PR libstdc++/51135
+ * libsupc++/cxxabi.h (__cxa_dtor_type): New type.
+ (__cxa_throw): Use it for destructor-argument.
+ * libsupc++/eh_throw.cc (__cxa_throw): Likewise.
+ * libsupc++/unwind-cxx.h (__cxa_exception): Change type of member
+ exceptionDestructor to __cxa_dtor_type.
+ * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_THISCALL_ON_DTOR):
+ Define.
+ (__cxa_dtor_type): Declare target secific type variant.
+ * config/os/mingw32/os_defines.h: Likewise.
+
+2011-12-11 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/abi.xml: Replace gcc-x.y.z with GCC x.y.z or x.y,
+ remove excessive duplication of version information.
+ * doc/html/*: Regenerate.
+
+2011-12-10 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/doxygen/user.cfg.in: Add macros, directories.
+ * include/bits/locale_classes.h: Remove doxygen warnings, fix markup.
+ * include/bits/locale_classes.tcc: Same.
+ * include/bits/shared_ptr.h: Same.
+ * include/bits/stl_algo.h: Same.
+ * include/bits/stl_list.h: Same.
+ * include/bits/stl_numeric.h: Same.
+ * include/debug/safe_base.h: Same.
+ * include/parallel/equally_split.h: Same.
+ * include/std/bitset: Same.
+ * include/std/complex: Same.
+ * include/std/fstream: Same.
+ * include/std/istream: Same.
+ * include/std/ostream: Same.
+ * include/tr2/dynamic_bitset: Same.
+ * scripts/run_doxygen: Remove munging for names that no longer exist.
+
+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+ Adjust line numbers.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_1_neg.cc: Same.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_2_neg.cc: Same.
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
+
+2011-12-10 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/profile/unordered_set: Minor formatting changes.
+ (unordered_set<>::_M_profile_destruct,
+ unordered_multiset<>::_M_profile_destruct): Fix implementation to not
+ rely on normal implementation details anymore.
+ (unordered_set<>::_M_profile_resize,
+ unordered_multiset<>::_M_profile_resize): Implement consistently
+ accross all unordered containers.
+ (unordered_set<>::emplace, unordered_set<>::emplace_hint,
+ unordered_multiset<>::emplace, unordered_multset<>::emplace_hint): Add
+ to signal rehash to profiling system.
+ * include/profile/unordered_map: Likewise for unordered_map<> and
+ unordered_multimap<>.
+
+2011-12-09 François Dumont <fdumont@gcc.gnu.org>
+
+ PR libstdc++/44436 (unordered containers emplace, emplace_hint bits)
+ * include/bits/hashtable.h (_Hashtable<>::emplace,
+ _Hashtable<>::emplace_hint): Add.
+ * include/debug/unordered_set (unordered_set<>::emplace,
+ unordered_set<>::emplace_hint, unordered_multiset<>::emplace,
+ unordered_multiset<>::emplace_hint): Add.
+ * include/profile/unordered_set: Likewise.
+ * include/debug/unordered_map (unordered_map<>::emplace,
+ unordered_map<>::emplace_hint, unordered_multimap<>::emplace,
+ unordered_multimap<>::emplace_hint): Add.
+ * include/profile/unordered_map: Likewise.
+ * testsuite/23_containers/unordered_map/modifiers/emplace.cc: New.
+ * testsuite/23_containers/unordered_multimap/modifiers/emplace.cc:
+ New.
+ * testsuite/23_containers/unordered_set/modifiers/emplace.cc: New.
+ * testsuite/23_containers/unordered_multiset/modifiers/emplace.cc:
+ New.
+ * testsuite/util/testsuite_container_traits.h
+ (traits_base::has_emplace): Add and defined as std::true_type for
+ unordered containers.
+ * testsuite/util/exception/safety.h (emplace, emplace_hint): Add and
+ use them in basic_safety exception test case.
+ * doc/xml/manual/status_cxx2011.xml: Update unordered containers
+ status.
+
+2011-12-08 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/atomic_base.h (__calculate_memory_order): Rename to...
+ (__cmpexch_failure_order): This, and rewrite as constexpr function.
+ (compare_exchange_strong, compare_exchange_weak): Use it.
+ * include/std/atomic (compare_exchange_strong, compare_exchange_weak):
+ Likewise.
+
+2011-12-07 François Dumont <fdumont@gcc.gnu.org>
+
+ PR libstdc++/51386
+ * include/bits/hashtable_policy.h (_Prime_rehash_policy::_M_next_bkt):
+ Fix computation of _M_prev_resize so that hashtable do not keep on
+ being rehashed when _M_max_load_factor is lower than 1.
+
+2011-12-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/51438
+ * libsupc++/nested_exception.h (nested_exception::~nested_exception):
+ Declare noexcept.
+ * libsupc++/nested_exception.cc: Adjust.
+ * testsuite/18_support/nested_exception/51438.cc: New.
+ * testsuite/18_support/nested_exception/throw_with_nested.cc: Adjust.
+ * testsuite/18_support/nested_exception/rethrow_if_nested.cc:
+ Likewise.
+
+ * src/shared_ptr.cc: Use noexcept where appropriate.
+ * include/std/system_error: Likewise.
+ * include/std/functional: Likewise.
+ * include/bits/shared_ptr_base.h: Likewise.
+ * src/stdexcept.cc: Use _GLIBCXX_USE_NOEXCEPT where appropriate.
+ * include/std/stdexcept: Likewise.
+ * libsupc++/bad_cast.cc: Likewise.
+ * libsupc++/bad_typeid.cc: Likewise.
+ * libsupc++/eh_exception.cc: Likewise.
+ * libsupc++/typeinfo: Likewise.
+ * libsupc++/exception: Likewise.
+ * libsupc++/eh_ptr.cc: Likewise.
+ * libsupc++/bad_alloc.cc: Likewise.
+ * libsupc++/exception_ptr.h: Likewise.
+
+ * include/std/chrono: Use noexcept where appropriate.
+ * src/chrono.cc: Likewise.
+
+2011-12-06 Jonathan Wakely <jwakely.gcc@gmail.com>
+ Chris Jefferson <chris@bubblescope.net>
+
+ PR libstdc++/51183
+ * include/std/stl_pair.h (pair<>::__cons, pair<>::__do_cons): Remove.
+ (pair<>::pair(piecewise_construct_t, tuple<>, tuple<>): Only declare.
+ (pair<>::pair(tuple<>&, tuple<>&, _Index_tuple<>, _Index_tuple<>)):
+ Declare.
+ * include/std/tuple (pair<>::__cons, pair<>::__do_cons): Remove.
+ (pair<>::pair(tuple<>&, tuple<>&, _Index_tuple<>, _Index_tuple<>)):
+ Define.
+ (pair<>::pair(piecewise_construct_t, tuple<>, tuple<>): Define,
+ delegating to the latter.
+ * testsuite/20_util/pair/piecewise2.cc: New.
+
+2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * libsupc++/initializer_list: Do not declare anything if
+ __GXX_EXPERIMENTAL_CXX0X__ is not defined.
+
+2011-12-04 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/type_traits: Doxygen improvements.
+ * include/bits/move.h: Likewise.
+ * include/tr1/type_traits: Likewise.
+ * include/tr2/type_traits: Likewise.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
+ line numbers
+ * testsuite/20_util/forward/c_neg.cc: Likewise.
+ * testsuite/20_util/forward/f_neg.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+
+2011-12-04 Markus Trippelsdorf <markus@trippelsdorf.de>
+ Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/stl_heap.h (pop_heap): Check for non-empty range in
+ overload taking a predicate.
+ * testsuite/25_algorithms/pop_heap/empty2_neg.cc: New.
+
+2011-12-03 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/debug/macros.h (__glibcxx_check_non_empty_range): Define.
+ * include/debug/debug.h (__glibcxx_requires_non_empty_range): Define.
+ * include/debug/formatter.h (__msg_non_empty_range): Add.
+ * src/debug.cc: Message text for __msg_non_empty_range.
+ * include/bits/stl_heap.h (pop_heap): Check for non-empty range.
+ * testsuite/25_algorithms/pop_heap/empty_neg.cc: New.
+
+2011-12-03 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/utilities.xml: Remove outdated text.
+
+2011-12-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/iomanip (put_money): Fix thinko, use __err local,
+ like in, eg, basic_ostream::_M_insert.
+
+2011-11-30 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Remove
+ size-specific macros. _GLIBCXX_ATOMIC_BUILTINS_1,
+ _GLIBCXX_ATOMIC_BUILTINS_2, _GLIBCXX_ATOMIC_BUILTINS_4,
+ _GLIBCXX_ATOMIC_BUILTINS_8. Use _GLIBCXX_ATOMIC_BUILTINS to
+ indicate use of C++11 atomic builtins.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+ * include/Makefile.am (bits_sup_headers): Add atomic_lockfree_defines.h.
+ * include/Makefile.in: Regenerate.
+ * libsupc++/Makefile.am: Compile C++11 support with -std=gnu++0x.
+ * libsupc++/Makefile.in: Regenerate.
+
+ * include/bits/atomic_base.h: Move lock-free property macros...
+ * libsupc++/atomic_lockfree_defines.h: ...here.
+ * include/std/future: Use C++11 macros.
+ * libsupc++/eh_ptr.cc: Same.
+ * libsupc++/eh_throw.cc: Same.
+ * libsupc++/exception: Same.
+ * libsupc++/exception_ptr.h: Same.
+ * libsupc++/guard.cc: Same.
+ * libsupc++/nested_exception.cc: Same.
+ * libsupc++/nested_exception.h: Same.
+ * src/future.cc: Same.
+
+ * include/ext/atomicity.h: Use _GLIBCXX_ATOMIC_BUILTINS.
+
+ * doc/doxygen/user.cfg.in: Adjust.
+ * doc/xml/manual/concurrency_extensions.xml: Add note.
+
+ * testsuite/18_support/exception_ptr/lifespan.cc: Tweak.
+ * testsuite/lib/libstdc++.exp: Same.
+
+2011-11-29 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/bits/hashtable.h (_Hashtable<>::_M_rehash): Remove code
+ useless now that the hashtable implementation put the hash code in
+ cache if the hash functor throws.
+ * testsuite/23_containers/unordered_set/erase/1.cc: Enhance test by
+ checking also distance between begin and end iterators to validate
+ underlying data model.
+ * testsuite/23_containers/unordered_multiset/erase/1.cc: Likewise.
+ * testsuire/23_containers/unordered_map/erase/1.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/erase/1.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/erase/2.cc: New.
+ * testsuite/23_containers/unordered_multimap/erase/2.cc: New.
+
+2011-11-28 Andrew MacLeod <amacleod@redhat.com>
+
+ * include/bits/atomic_base.h (ATOMIC_*_LOCK_FREE): Use new cpp
+ predefined macros.
+ * testsuite/29_atomics/headers/atomic/macros.cc: Add BOOL and POINTER
+ macro checks. Check for expected compile time values.
+
+2011-11-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/51288
+ * include/std/iomanip (get_money, put_money): Use sentry.
+ * testsuite/27_io/manipulators/extended/get_money/char/51288.cc: New.
+ * testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc:
+ Likewise.
+ * testsuite/27_io/manipulators/extended/put_money/char/51288.cc:
+ Likewise.
+ * testsuite/27_io/manipulators/extended/put_money/wchar_t/51288.cc:
+ Likewise.
+
+2011-11-27 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/manual/using.xml (Prerequisites): Refer to x86 instead
+ of i386.
+
+2011-11-27 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * scripts/run_doxygen (problematic): Change Linux reference to
+ GNU/Linux.
+
+2011-11-26 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/manual/abi.xml (Prerequisites): Refer to GNU/Linux.
+ Fix reference to GCC.
+
+2011-11-26 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51296
+ * testsuite/30_threads/thread/native_handle/typesizes.cc: Do not run
+ on alpha*-*-osf*.
+ * testsuite/30_threads/future/cons/constexpr.cc: Disable debug
+ symbols.
+ * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
+
+2011-11-23 François Dumont <fdumont@gcc.gnu.org>
+
+ PR libstdc++/41975
+ * include/bits/hashtable.h (_Hashtable<>): Major data model
+ modification to limit performance impact of empty buckets in
+ erase(iterator) implementation.
+ * include/bits/hashtable_policy.h (_Hashtable_iterator,
+ _Hashtable_const_iterator): Remove not used anymore.
+ * include/bits/hashtable_policy.h (_Prime_rehash_policy): Remove
+ _M_grow_factor, just use natural evolution of prime numbers. Add
+ _M_prev_size to know when the number of buckets can be reduced.
+ * include/bits/unordered_set.h (__unordered_set<>,
+ __unordered_multiset<>), unordered_map.h (__unordered_map<>,
+ __unordered_multimap<>): Change default value of cache hash code
+ template parameter, false for integral types with noexcept hash
+ functor, true otherwise.
+ * include/debug/unordered_map, unordered_set: Adapt transformation
+ from iterator/const_iterator to respectively
+ local_iterator/const_local_iterator.
+ * testsuite/performance/23_containers/copy_construct/unordered_set.cc:
+ New.
+ * testsuite/23_containers/unordered_set/instantiation_neg.cc: New.
+ * testsuite/23_containers/unordered_set/hash_policy/rehash.cc: New.
+ * testsuite/23_containers/unordered_multiset/cons/copy.cc: New.
+ * testsuite/23_containers/unordered_multiset/erase/1.cc,
+ 24061-multiset.cc: Add checks on the number of bucket elements.
+ * testsuite/23_containers/unordered_multiset/insert/multiset_range.cc,
+ multiset_single.cc, multiset_single_move.cc: Likewise.
+
+2011-11-21 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/functional (is_placeholder, is_bind_expression): Add
+ partial specializations for cv-qualified types.
+ * include/tr1/functional (is_placeholder, is_bind_expression): Add
+ partial specializations for std::bind and std::placeholders and for
+ cv-qualified types.
+ * testsuite/20_util/bind/cv_quals_3.cc: New.
+ * testsuite/tr1/3_function_objects/bind/cv_quals.cc: New.
+ * testsuite/tr1/3_function_objects/bind/mixed.cc: New.
+
+2011-11-21 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-11-21 Daniel Krugler <daniel.kruegler@googlemail.com>
+
+ PR libstdc++/51185
+ * include/std/type_traits (__is_base_to_derived_ref,
+ __is_lvalue_to_rvalue_ref): Fix.
+ * testsuite/20_util/is_constructible/51185.cc: New.
+ * testsuite/20_util/is_constructible/value-2.cc: Extend.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
+ line number.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
+ Likewise.
+
+2011-11-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/tuple (__conv_types, __one_by_one_convertible,
+ __all_convertible): Remove.
+ (tuple<>::tuple(_UElements&&...),
+ tuple<>::tuple(const tuple<_UElements...>&),
+ tuple<>::tuple(tuple<_UElements...>&&)): Remove wa for c++/48322.
+ * testsuite/20_util/uses_allocator/cons_neg.cc: Adjust dg-error
+ line number.
+
+2011-11-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/48322
+ * include/std/tuple (tuple(_UElements&&...)): Fix SFINAE.
+
+ * testsuite/20_util/bind/ref_neg.cc: Adjust error markings.
+
+2011-11-20 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/backward/binders.h: Fix examples in doxygen comments and
+ suggest using std::bind instead.
+
+2011-11-20 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/status_cxx2011.xml: Fix docbook markup.
+
+2011-11-20 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/appendix_contributing.xml: Do not use "here" as link
+ text.
+ * doc/xml/faq.xml: Likewise. Do not request standard library issues
+ to be reported to the libstdc++ mailing list.
+ * doc/xml/manual/status_cxx2011.xml: Document implementation-defined
+ behaviour.
+ * doc/xml/manual/status_cxxtr1.xml: Likewise.
+ * doc/xml/manual/utilities.xml: Fix grammar, probably caused by a
+ global search and replace of "part" by "chapter".
+ * doc/xml/manual/shared_ptr.xml: Remove outdated information.
+ * doc/xml/manual/messages.xml: Be more specific about systems where
+ using 'int' for catalog handle is not a problem, mention LWG issue.
+
+2011-11-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/debug/bitset (operator[](size_t) const): Declare constexpr.
+ * include/profile/bitset: Likewise.
+ * testsuite/23_containers/bitset/operations/constexpr.cc: Split out
+ non portable bits to...
+ * testsuite/23_containers/bitset/operations/constexpr-2.cc: ... here.
+
+2011-11-18 Harti Brandt <hartmut.brandt@dlr.de>
+
+ PR libstdc++/51209
+ * include/bits/hashtable.h (_Hashtable<>::_M_find_node): Return
+ nullptr when no node is found.
+ * include/tr1/hashtable.h (_Hashtable<>::_M_find_node): Return
+ zero when no node is found.
+
+2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * src/hash-long-double-aux.cc: Rename to...
+ * src/hash-long-double-tr1-aux.cc: ... this.
+ * src/compatibility-ldbl.cc: Adjust.
+ * src/hash_tr1.cc: Likewise.
+ * src/hash_c++0x.cc: Don't use src/hash-long-double-aux.cc.
+ * include/bits/functional_hash.h (hash<_Tp*>::operator(), specs
+ for integer types, hash<float>::operator(), hash<double>::operator(),
+ hash<long double>::operator()): Declare noexcept.
+ * include/debug/bitset (hash<__debug::bitset>::operator()): Likewise.
+ * include/debug/vector (hash<__debug::vector>::operator()): Likewise.
+ * include/std/system_error (hash<error_code>::operator()): Likewise.
+ * include/std/thread (hash<thread::id>::operator()): Likewise.
+ * include/std/bitset (hash<bitset>::operator()): Likewise.
+ * include/std/typeindex (hash<type_index>::operator()): Likewise.
+ * include/profile/bitset (hash<__profile::vector>::operator()):
+ Likewise.
+ * include/profile/vector (hash<__profile::vector>::operator()):
+ Likewise.
+ * include/ext/vstring.h (hash<__vstring>::operator(),
+ hash<__wvstring>::operator(), hash<__u16vstring>::operator(),
+ hash<__u32vstring>::operator()): Likewise.
+ * include/bits/shared_ptr.h (hash<shared_ptr>::operator()): Likewise.
+ * include/bits/shared_ptr_base.h (hash<__shared_ptr>::operator()):
+ Likewise.
+ * include/bits/unique_ptr.h (hash<unique_ptr>::operator()): Likewise.
+ * include/bits/basic_string.h (hash<string>::operator(),
+ hash<wstring>::operator(), hash<u16string>::operator(),
+ hash<u32string>::operator()): Likewise.
+ * include/bits/vector.tcc (hash<vector>::operator()): Likewise.
+ * include/bits/stl_bvector.h (hash<vector>::operator()): Likewise.
+ * libsupc++/typeinfo (type_info::hash_code): Use noexcept instead of
+ throw().
+
+2011-11-17 Richard Henderson <rth@redhat.com>
+
+ PR libstdc++/51181
+ * libsupc++/eh_tm.cc (free_any_cxa_exception): Protect the use
+ of __sync_sub_and_fetch with _GLIBCXX_ATOMIC_BUILTINS_4.
+
+2011-11-18 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/30_threads/thread/native_handle/typesizes.cc: Do not run
+ on darwin.
+
+2011-11-17 Jason Merrill <jason@redhat.com>
+
+ * testsuite/21_strings/basic_string/cons/char/moveable2.cc
+ (tstring): Add defaulted move assignment.
+ * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
+ (tstring): Add defaulted move assignment.
+ * testsuite/util/testsuite_tr1.h (NoexceptMoveConsClass): Add
+ defaulted move assignment operator.
+ (NoexceptMoveAssignClass): Add defaulted move constructor.
+
+2011-11-17 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/status_cxx2011.xml: Status of piecewise construction
+ and ios_base::failure.
+ * doc/xml/manual/backwards_compatibility.xml: List headers in
+ alphabetical order.
+
+2011-11-16 Andrew MacLeod <amacleod@redhat.com>
+
+ PR libstdc++/51102
+ * include/bits/atomic_base.h (ATOMIC_BOOL_LOCK_FREE,
+ ATOMIC_POINTER_LOCK_FREE): New. Add missing macros.
+
+2011-11-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/51142
+ * include/debug/unordered_map (unordered_map<>::erase(iterator),
+ unordered_multimap<>::erase(iterator)): Add, consistently with
+ LWG 2059.
+ * include/debug/unordered_set (unordered_set<>::erase(iterator),
+ unordered_multiset<>::erase(iterator)): Likewise.
+ * include/debug/map.h (map<>::erase(iterator)): Likewise.
+ * include/debug/multimap.h (multimap<>::erase(iterator)): Likewise.
+ * include/profile/map.h (map<>::erase(iterator)): Likewise.
+ * include/profile/multimap.h (multimap<>::erase(iterator)): Likewise.
+ * include/bits/hashtable.h (_Hashtable<>::erase(iterator)): Likewise.
+ * include/bits/stl_map.h (map<>::erase(iterator)): Likewise.
+ * include/bits/stl_multimap.h (multimap<>::erase(iterator)): Likewise.
+ * include/bits/stl_tree.h (_Rb_tree<>::erase(iterator)): Likewise.
+ * testsuite/23_containers/unordered_map/erase/51142.cc: New.
+ * testsuite/23_containers/multimap/modifiers/erase/51142.cc: Likewise.
+ * testsuite/23_containers/set/modifiers/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_set/erase/51142.cc: Likewise.
+ * testsuite/23_containers/multiset/modifiers/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/erase/51142.cc: Likewise.
+ * testsuite/23_containers/map/modifiers/erase/51142.cc: Likewise.
+
+2011-11-15 Jason Dick <dickphd@gmail.com>
+
+ PR libstdc++/51133
+ * include/tr1/poly_hermite.tcc (__poly_hermite_recursion): Fix
+ wrong sign in recursion relation.
+
+2011-11-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/c_global/cmath (frexp, modf, remquo): Do not mark constexpr,
+ not viable anyway due to the pointer parameter.
+
+2011-11-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/c_global/cmath (atan2, fmod, pow, copysign, fdim,
+ fma, fmax, fmin, hypot, nextafter, remainder, remquo): Simplify
+ constraining on the return type.
+ * include/tr1/cmath (copysign, fdim, fma, fmax, fmin, hypot,
+ nextafter, remainder, remquo): Likewise.
+
+2011-11-13 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * using.xml: Use GNU/Linux.
+
+2011-11-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/51060
+ * testsuite/25_algorithms/max/1.cc (test01): Drop references.
+ * testsuite/25_algorithms/min/1.cc (test01): Drop references.
+ * testsuite/25_algorithms/minmax/1.cc (test01): Drop references.
+
+2011-11-12 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51083
+ * include/ext/type_traits.h (__promote): Only define __type member
+ for integral and floating point types, to prevent math functions
+ participating in overload resolution for other types.
+ (__promote_2, __promote_3, __promote_4): Use __promote in default
+ template argument values, so deduction only succeeds for integral and
+ floating point types.
+ * testsuite/26_numerics/cmath/51083.cc: New.
+ * testsuite/26_numerics/complex/51083.cc: New.
+ * testsuite/tr1/8_c_compatibility/cmath/51083.cc: New.
+ * testsuite/tr1/8_c_compatibility/complex/51083.cc: New.
+
+2011-11-10 Andrew MacLeod <amacleod@redhat.com>
+
+ PR middle-end/51038
+ * include/bits/atomic_base.h (atomic_thread_fence): Call built-in.
+ (atomic_signal_fence): Call built-in.
+ (test_and_set, clear): Call new atomic built-ins.
+
+2011-11-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/allocator.h (__shrink_to_fit_aux::_S_do_it): Create
+ the new object with the same allocator.
+ * testsuite/23_containers/vector/capacity/shrink_to_fit2.cc: New.
+
+2011-11-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/profile/unordered_map: Add missing copy constructors.
+ * include/profile/unordered_set: Likewise.
+
+2011-11-09 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/51027
+ * include/ext/pointer.h (rebind): Append missing ';'.
+
+2011-11-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/stl_vector.h (vector::_Alloc_traits): Make private.
+ * include/debug/vector: Add allocator-extended constructors, ensure
+ move assignment and swap have same allocator propagation semantics
+ and exceptions specification as base class.
+ * include/profile/vector: Likewise.
+ (vector::push_back(_Tp&&)): Forward argument as rvalue.
+ * testsuite/23_containers/vector/debug/alloc_prop.cc: New.
+ * doc/xml/manual/status_cxx2011.xml: Clarify status of container
+ requirements with respect to allocators.
+ (status.iso.200x): Add anchor for old ID to preserve existing links.
+
+2011-11-08 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/shared_ptr_base.h (_Sp_counted_ptr): Make 'final'.
+ (_Sp_counted_deleter): Make 'final'. Use allocator_traits.
+ (_Sp_counted_ptr_inplace): Make 'final'. Use allocator_traits.
+ Derive from _Sp_counted_ptr instead of _Sp_counted_deleter to use EBO
+ for the allocator.
+ (__shared_count, __shared_ptr): Use allocator_traits.
+ * include/std/future (__future_base::_Result_alloc): Make 'final'. Use
+ allocator traits.
+ (__future_base::_Task_state): Make 'final'.
+ (__future_base::_Deferred_state): Likewise.
+ (__future_base::_Async_state): Likewise.
+ * testsuite/20_util/shared_ptr/cons/alloc_min.cc: New.
+ * testsuite/20_util/shared_ptr/creation/alloc_min.cc: New.
+ * testsuite/20_util/shared_ptr/creation/private.cc: New.
+ * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers.
+ * testsuite/30_threads/packaged_task/cons/alloc_min.cc: New.
+ * testsuite/30_threads/promise/cons/alloc_min.cc: New.
+
+2011-11-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * acinclude.m4 ([GLIBCXX_ENABLE_VISIBILITY]): Rename to
+ [GLIBCXX_ENABLE_LIBSTDCXX_VISIBILITY], likewise for the
+ option itself, to --enable-libstdcxx-visibility.
+ * configure.ac: Adjust call.
+ * doc/xml/manual/configure.xml: Update.
+ * configure: Regenerate.
+
+2011-11-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/29_atomics/headers/atomic/macros.cc: Avoid -Wall
+ warnings.
+ * testsuite/29_atomics/atomic/cons/user_pod.cc: Likewise.
+
+2011-11-08 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51018
+ * testsuite/30_threads/thread/native_handle/typesizes.cc: Do not run
+ on netbsd.
+
+2011-11-07 Aldy Hernandez <aldyh@redhat.com>
+ Richard Henderson <rth@redhat.com>
+
+ Merged from transactional-memory.
+
+ * testsuite/util/testsuite_abi.cc (check_version): Add CXXABI_TM_1.
+ * libsupc++/eh_tm.cc: New file.
+ * libsupc++/unwind-cxx.h (__cxa_tm_cleanup): Declare.
+ * config/abi/pre/gnu.ver: Export __cxa_tm_cleanup.
+ * config/abi/pre/gnu-versioned-namespace.ver: Likewise.
+ * libsupc++/Makefile.am (sources): Add eh_tm.cc.
+ * libsupc++/Makefile.in: Rebuild.
+
+2011-11-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/51018
+ * include/profile/impl/profiler_node.h (__stack_hash::
+ operator()(__stack_t)): Just use std::size_t everywhere.
+
+2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/future (__future_base::_Ptr): Use alias-declaration.
+ (__is_same_pkgdtask): Rename to __constrain_pkgdtask and use decay
+ instead of remove_reference so that cv-quals are removed.
+
+2011-11-07 Ed Smith-Rowland <3dw4rd@verizon.net>
+
+ * include/precompiled/stdc++.h: Add cstdalign.
+
+2011-11-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/complex (complex<>::real(), complex<>::imag()):
+ Remove redundant const qualifiers.
+
+2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/ptr_traits.h (__rebind): Replace with...
+ (rebind): Implement using alias-declaration.
+ * include/ext/pointer.h (__rebind): Replace with...
+ (rebind): Implement using alias-declaration.
+ * include/bits/alloc_traits.h (__rebind_alloc, __rebind_traits):
+ Replace with...
+ (rebind_alloc, rebind_traits): Implement using alias-declaration.
+ * include/ext/alloc_traits.h (rebind): Use rebind_alloc instead of
+ __rebind_alloc.
+ * include/std/scoped_allocator (rebind): Likewise.
+
+2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/mutex (call_once): Store closure in __once_functor
+ as bound function wrapper might not be copyable.
+
+2011-11-07 Andrew MacLeod <amacleod@redhat.com>
+
+ * include/bits/atomic_base.h (atomic_thread_fence): Revert.
+ (atomic_signal_fence): Revert.
+
+2011-11-07 Andrew MacLeod <amacleod@redhat.com>
+
+ * include/bits/atomic_base.h (atomic_thread_fence): Call builtin.
+ (atomic_signal_fence): Call builtin.
+ (atomic_flag::test_and_set): Call __atomic_exchange when it is lockfree,
+ otherwise fall back to call __sync_lock_test_and_set.
+ (atomic_flag::clear): Call __atomic_store when it is lockfree,
+ otherwise fall back to call __sync_lock_release.
+
+2011-11-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR bootstrap/50982
+ * include/Makefile.am (${host_builddir}/gthr-posix.h): Reflect
+ gthr-posix.h move.
+ * include/Makefile.in: Regenerate.
+
+2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * acinclude.m4 (GLIBCXX_CHECK_SC_NPROC_ONLN): Define.
+ (GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP): Define.
+ (GLIBCXX_CHECK_SYSCTL_HW_NCPU): Define.
+ * configure.ac: Use new checks.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+ * src/thread.cc: Check new config macros.
+ * testsuite/lib/libstdc++.exp: Likewise.
+
+2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * config/abi/pre/gnu.ver: Fix exports for string::pop_back.
+
+2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * acinclude.m4: Check for <stdalign.h>
+ * configure: Regenerate.
+ * config.h.in: Likewise.
+ * include/Makefile.am: Add <cstdalign>.
+ * include/Makefile.in: Regenerate.
+ * include/c_global/cstdalign: New.
+ * testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: New.
+ * doc/xml/manual/backwards_compatibility.xml: Update.
+ * doc/xml/manual/status_cxx2011.xml: Update.
+
+2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/50982
+ * include/std/mutex (__once_proxy): Use void parameter list to
+ work on implicit extern "C" systems.
+
+2011-11-07 Xinliang David Li <davidxl@google.com>
+
+ * include/backward/hashtable.h: Make __stl_prime_list
+ in comdat section.
+
+2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/basic_string.h (basic_string::at): Move adjacent to other
+ overload.
+ (basic_string::pop_back): Define.
+ * include/debug/string (__gnu_debug::basic_string::pop_back): Likewise.
+ * include/ext/vstring.h (__versa_string::pop_back): Likewise.
+ * config/abi/pre/gnu.ver: Add new symbols.
+ * testsuite/21_strings/basic_string/modifiers/char/pop_back.cc: New.
+ * testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc: New.
+ * testsuite/21_strings/basic_string/range_access.cc: Split to ...
+ * testsuite/21_strings/basic_string/range_access/char/1.cc: Here and ...
+ * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc: Here.
+ * testsuite/ext/vstring/modifiers/char/pop_back.cc: New.
+ * testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc: New.
+
+2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/backwards_compatibility.xml: Fix autoconf tests for
+ C++11 compiler features and library headers. Add stable id
+ attributes. Use <filename> element for headers and surround in angle
+ brackets. Use <classname> for classes.
+ * doc/html/*: Regenerate.
+
+2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/status_cxx2011.xml: Document <cuchar> and
+ <cstdalign> as missing.
+
+2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/faq.xml: Replace references to C++0x with C++11.
+ * doc/xml/manual/intro.xml: Likewise.
+ * doc/xml/manual/backwards_compatibility.xml: Likewise.
+ * doc/xml/manual/shared_ptr.xml: Likewise.
+ * doc/xml/manual/configure.xml: Likewise.
+ * doc/xml/manual/evolution.xml: Likewise.
+ * doc/xml/manual/using.xml: Likewise.
+ * doc/xml/manual/strings.xml: Likewise.
+ * doc/xml/manual/debug_mode.xml: Likewise.
+ * doc/xml/manual/policy_data_structures.xml: Likewise.
+ * doc/xml/manual/extensions.xml: Likewise.
+ * doc/xml/manual/diagnostics.xml: Likewise.
+ * doc/xml/manual/test.xml: Likewise.
+ * doc/xml/manual/status_cxx200x.xml: Likewise, and rename to...
+ * doc/xml/manual/status_cxx2011.xml: Here.
+ * doc/Makefile.am: Rename status_cxx200x.xml.
+ * doc/Makefile.in: Regenerate.
+ * doc/html/*: Regenerate.
+
+2011-11-06 François Dumont <fdumont@gcc.gnu.org>
+
+ * testsuite/performance/23_containers/insert_erase/41975.cc: Add
+ tests to check performance with or without cache of hash code and with
+ string type that has a costlier hash functor than int type.
+
+2011-11-06 Benjamin Kosnik <bkoz@redhat.com>
+ Andrew MacLeod <amacleod@redhat.com>
+
+ Merged from cxx-mem-model.
+
+ * include/Makefile.am (bits_headers): Remove atomic_0.h, atomic_2.h.
+ * include/Makefile.in: Regenerate.
+ * src/Makefile.am (sources): Rename atomic.cc to
+ compatibility-atomic-c++0x.cc.
+ * src/Makefile.in: Regenerate.
+ * include/bits/atomic_0.h: Remove.
+ * include/bits/atomic_2.h: Incorporate into...
+ * include/bits/atomic_base.h: ...this. Use new __atomic routines.
+ * include/std/atomic: Add generic atomic calls to basic atomic class.
+ * src/atomic.cc: Move...
+ * src/compatibility-atomic-c++0x.cc: ...here.
+ * src/compatibility-c++0x.cc: Tweak.
+ * testsuite/29_atomics/atomic/cons/user_pod.cc: Fix.
+ * testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc:
+ Same.
+ * testsuite/29_atomics/headers/atomic/macros.cc: Same.
+
+2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/test.xml: Fix dg-warning examples.
+
+2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/44436
+ * doc/xml/manual/status_cxx200x.xml: Document emplace members are
+ missing.
+
+2011-11-05 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/49894
+ PR bootstrap/50982
+ * include/std/mutex (once_flag): Use NSDMI.
+
+2011-11-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * scripts/run_doxygen: Fix sed quoting.
+
+2011-11-03 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/doxygen/doxygroups.cc: Add markup for namespace tr2.
+ * include/tr2/bool_set: Adjust doxygen markup.
+ * include/tr2/dynamic_bitset: Same.
+ * include/tr2/type_traits: Same.
+
+2011-11-03 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/html/*: Regenerate.
+
+2011-11-02 Richard B. Kreckel <kreckel@ginac.de>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50880
+ * include/std/complex (__complex_acosh): Fix in a better way,
+ use Kahan's formula.
+ * include/tr1/complex (__complex_acosh): Likewise.
+
+2011-11-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50951
+ * include/bits/random.tcc (operator<<(basic_ostream<>&,
+ const mersenne_twister_engine<>&): Output _M_p too.
+ (operator<<(basic_ostream<>&, const
+ subtract_with_carry_engine<>&): Likewise.
+ (operator>>(basic_istream<>&, mersenne_twister_engine<>&):
+ Reload it.
+ (operator>>(basic_istream<>&, subtract_with_carry_engine<>&):
+ Likewise.
+ * include/bits/random.h (mersenne_twister_engine<>::operator==):
+ Compare _M_p too.
+ (subtract_with_carry_engine<>::operator==): Compare _M_carry
+ and _M_p too.
+ (shuffle_order_engine<>::operator==): Compare _M_v(s) and _M_y too.
+ * testsuite/26_numerics/random/independent_bits_engine/
+ operators/serialize.cc: Extend.
+ * testsuite/26_numerics/random/subtract_with_carry_engine/
+ operators/serialize.cc: Likewise.
+ * testsuite/26_numerics/random/discard_block_engine/
+ operators/serialize.cc: Likewise.
+ * testsuite/26_numerics/random/mersenne_twister_engine/
+ operators/serialize.cc: Likewise.
+ * testsuite/26_numerics/random/linear_congruential_engine/
+ operators/serialize.cc: Likewise.
+ * testsuite/26_numerics/random/shuffle_order_engine/
+ operators/serialize.cc: Likewise.
+
+2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * acinclude.m4 (GLIBCXX_CONFIGURE): Determine and substitute
+ toplevel_builddir.
+ (GLIBCXX_ENABLE_THREADS): Remove glibcxx_thread_h,
+ HAVE_GTHR_DEFAULT, enable_thread.
+ (GLIBCXX_CHECK_GTHREADS): Reflect gthr move to libgcc.
+ * include/Makefile.am (thread_host_headers): Remove
+ ${host_builddir}/gthr-tpf.h.
+ (${host_builddir}/gthr.h): Reflect gthr move to libgcc.
+ Use $<.
+ (${host_builddir}/gthr-single.h): Likewise.
+ (${host_builddir}/gthr-posix.h): Likewise.
+ (${host_builddir}/gthr-tpf.h): Remove.
+ (${host_builddir}/gthr-default.h): Likewise.
+ * configure, config.h.in: Regenerate.
+ * Makefile.in, doc/Makefile.in, include/Makefile.in,
+ libsupc++/Makefile.in, po/Makefile.in, python/Makefile.in,
+ src/Makefile.intestsuite/Makefile.in: Regenerate.
+
+2011-11-02 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/c++config: Add tr2 to versioned namespaces.
+ * scripts/run_doxygen: Adjust generated man files as well.
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.
+
+2011-11-02 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/future (promise): Add constructors for uses-allocator
+ construction from rvalue promise.
+ (packaged_task): Implement LWG 2067. Add additional constructors for
+ uses-allocator construction.
+ * testsuite/30_threads/packaged_task/cons/3.cc: New.
+ * testsuite/30_threads/packaged_task/cons/alloc2.cc: New.
+ * testsuite/30_threads/promise/cons/alloc2.cc: New.
+
+2011-10-31 Jason Merrill <jason@redhat.com>
+
+ * include/Makefile.am (install-freestanding-headers): Install
+ c++0x_warning.h.
+ * libsupc++/initializer_list: Include it.
+
+2011-10-31 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * acinclude.m4 (GLIBCXX_CONFIGURE): Refer to GNU/Linux.
+ * configure: Regenerate.
+
+2011-10-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/50920
+ * include/bits/c++0x_warning.h: Change -std=c++0x to -std=c++11.
+
+2011-10-30 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * prerequisites.xml: Refer to GCC (instead of gcc) and GNU/Linux.
+ Remove an obsolete reference to a Red Hat release we do not
+ support any longer.
+ Refer to Debian GNU/Linux.
+
+2011-10-30 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * faq.xml (Who's in charge of it?): Refer to the Linux kernel
+ instead of just Linux.
+ (How do I install libstdc++?): Refer to GNU/Linux instead of
+ just Linux.
+
+2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/30_threads/condition_variable_any/50862.cc: Trivial
+ formatting fixes.
+
+2011-10-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/23_containers/unordered_map/operations/count.cc: New.
+ * testsuite/23_containers/multimap/operations/count.cc: Likewise.
+ * testsuite/23_containers/set/operations/count.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/operations/count.cc:
+ Likewise.
+ * testsuite/23_containers/unordered_set/operations/count.cc: Likewise.
+ * testsuite/23_containers/multiset/operations/count.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/operations/count.cc:
+ Likewise.
+ * testsuite/23_containers/map/operations/count.cc: Likewise.
+
+2011-10-28 Richard B. Kreckel <kreckel@ginac.de>
+
+ * include/std/complex (__complex_acosh): Just use '< _Tp()'.
+ * include/tr1/complex (__complex_acosh): Likewise.
+
+2011-10-27 Richard B. Kreckel <kreckel@ginac.de>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50880
+ * include/std/complex (__complex_acosh): Fix for __z.real() < 0.
+ * include/tr1/complex (__complex_acosh): Likewise.
+ * testsuite/26_numerics/complex/50880.cc: New.
+ * testsuite/tr1/8_c_compatibility/complex/50880.cc: Likewise.
+
+2011-10-27 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/50862
+ * include/std/condition_variable (condition_variable_any::wait): Avoid
+ terminating if relocking user mutex throws during stack-unwinding.
+ * testsuite/30_threads/condition_variable_any/50862.cc: Add dg-require.
+
+2011-10-25 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/condition_variable (condition_variable_any): Remove
+ unused native_handle_type typedef.
+ * src/condition_variable.cc (condition_variable): Add missing noexcept
+ specifications.
+ * testsuite/30_threads/condition_variable_any/requirements/
+ typedefs.cc: Remove.
+
+2011-10-25 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/50862
+ * include/std/condition_variable (condition_variable_any::wait): Fix
+ deadlock and ensure _Lock::lock() is called on exit.
+ (condition_variable_any::native_handle): Remove, as per LWG 1500.
+ * testsuite/30_threads/condition_variable_any/50862.cc: New.
+
+2011-10-25 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/49894
+ * include/std/mutex (__mutex_base,__recursive_mutex_base): Define new
+ base classes to manage construction/destruction of native mutexes,
+ using NSDMI when INIT macros are defined.
+ (mutex,recursive_mutex,timed_mutex,recursive_timed_mutex): Derive from
+ new base classes.
+ * include/std/condition_variable (condition_variable): Use NSDMI when
+ INIT macro is defined. Use noexcept.
+ * src/condition_variable.cc (condition_variable): Explicitly-default
+ constructor/destructor when using NSDMI. Use noexcept.
+ (condition_variable_any): Likewise.
+
+2011-10-24 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/30_threads/async/49668.cc: Add missing dg-require.
+ * testsuite/30_threads/packaged_task/49668.cc: Likewise.
+
+2011-10-22 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/50834
+ * doc/xml/manual/using.xml: Update thread safety docs w.r.t. C++11.
+
+2011-10-22 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/50196
+ * acinclude.m4 (GLIBCXX_HAS_GTHREADS): Don't depend on _POSIX_TIMEOUTS.
+ * configure: Regenerate.
+ * include/std/mutex (timed_mutex, recursive_timed_mutex): Define
+ conditionally on GTHREADS_HAS_MUTEX_TIMEDLOCK.
+ * testsuite/lib/libstdc++.exp (check_v3_target_gthreads_timed): Define.
+ * testsuite/lib/dg-options.exp (dg-require-gthreads-timed): Define.
+ * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
+ Use dg-require-gthreads-timed instead of dg-require-gthreads.
+ * testsuite/30_threads/recursive_timed_mutex/native_handle/
+ typesizes.cc: Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
+ Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
+ Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
+ Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
+ Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
+ Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
+ Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
+ Likewise.
+ * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
+ Likewise.
+ * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
+ Likewise.
+ * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/requirements/standard_layout.cc:
+ Likewise.
+ * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
+ * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
+ * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
+ * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
+ * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
+ * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
+
+2011-10-19 Ed Smith-Rowland <3dw4rd@verizon.net>
+
+ * include/tr2/bool_set (bool_set): New.
+ * include/tr2/bool_set.tcc: New.
+ * include/tr2/dynamic_bitset (dynamic_bitset): New.
+ * include/tr2/ratio (kibi, mebi, gibi, tebi, pebi, exbi): New.
+ * include/Makefile.am: Add files.
+ * include/Makefile.in: Regenerate.
+
+2011-10-19 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/doxygen/user.cfg.in: Add tr2 files.
+ * testsuite/tr2/headers/all.cc: New.
+ * testsuite/tr2/headers/using_namespace_std_tr2.cc: New.
+
+ * include/tr2/type_traits: Tweak.
+
+2011-10-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/50500
+ * include/bits/shared_ptr.h: Default copy ctor and assignment.
+ * testsuite/util/testsuite_allocator.h: Define copy assignment.
+ * testsuite/util/testsuite_rvalref.h: Default copy assignment.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Remove note tags.
+
+2011-10-17 Michael Spertus <mike_spertus@symantec.com>
+
+ * include/tr2/type_traits (bases, direct_bases, typelist): New.
+
+2011-10-17 Benjamin Kosnik <bkoz@redhat.com>
+
+ * libstdc++-v3/include/Makefile.am: Add tr2 directory and includes.
+ * libstdc++-v3/include/Makefile.in: Regenerate.
+
+ * scripts/create_testsuite_files: Search tr2 directory.
+ * testsuite/libstdc++-dg/conformance.exp: Same.
+
+ * testsuite/tr2/bases/requirements/explicit_instantiation.cc: New.
+ * testsuite/tr2/bases/requirements/typedefs.cc: New.
+ * testsuite/tr2/bases/value.cc: New.
+ * testsuite/tr2/direct_bases/requirements/
+ explicit_instantiation.cc: New.
+ * testsuite/tr2/direct_bases/requirements/typedefs.cc: New.
+ * testsuite/tr2/direct_bases/value.cc: New.
+
+2011-10-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR bootstrap/50715
+ * config/abi/pre/gnu.ver (CXXABI_1.3.6): Remove duplicate
+ __cxa_get_exception_ptr.
+
+2011-10-14 François Dumont <francois.cppdevs@free.fr>
+
+ * testsuite/performance/23_containers/insert_erase/41975.cc: New.
+
+2011-10-14 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/22_locale/codecvt_byname/50714.cc: Fix mychar.
+
+2011-10-14 Jonathan Yong <jon_y@users.sourceforge.net>
+
+ * configure.host: Use config/os/mingw32-w64 instead of
+ config/os/mingw32 if vendor key is "w64".
+ * config/os/mingw32-w64: Duplicate from config/os/mingw32.
+ * config/os/mingw32-w64/os_defines.h: Enable
+ _GLIBCXX_FULLY_DYNAMIC_STRING if undefined.
+ * acinclude.m4: Set fully-dynamic-string to 1 when enabled,
+ 0 when disabled or undefined if unset by user.
+ * include/bits/basic_string.h: Check if
+ _GLIBCXX_FULLY_DYNAMIC_STRING is set to 0 instead of undefined.
+ include/bits/basic_string.tcc: Likewise.
+ * configure: Regenerated.
+ * config.h.in: Likewise.
+
+2011-10-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50714
+ * include/bits/codecvt.h (codecvt<>::codecvt(size_t)): Initialize
+ _M_c_locale_codecvt member.
+ * testsuite/22_locale/codecvt_byname/50714.cc: New.
+
+2011-10-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50594
+ * libsupc++/new (operator new, operator delete): Decorate with
+ __attribute__((__externally_visible__)).
+ * include/bits/c++config: Add _GLIBCXX_THROW.
+ * libsupc++/del_op.cc: Adjust.
+ * libsupc++/del_opv.cc: Likewise.
+ * libsupc++/del_opnt.cc: Likewise.
+ * libsupc++/del_opvnt.cc: Likewise.
+ * libsupc++/new_op.cc: Likewise.
+ * libsupc++/new_opv.cc: Likewise.
+ * libsupc++/new_opnt.cc: Likewise.
+ * libsupc++/new_opvnt.cc: Likewise.
+ * testsuite/18_support/50594.cc: New.
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error
+ line number.
+
+2011-10-11 Emil Wojak <emil@wojak.eu>
+
+ PR c++/50661
+ * include/bits/stl_algobase.h (equal): Compare arrays of pointers
+ too with memcmp.
+
+2011-10-10 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/49818
+ * config/abi/pre/gnu.ver (CXXABI_1.3.6): Add symbols.
+ * testsuite/util/testsuite_abi.cc: Same.
+ * libsupc++/unwind-cxx.h: Move required eh API...
+ * libsupc++/cxxabi.h: ... to here. Add required forward declarations.
+ Use _GLIBCXX_NOTHROW.
+ * libsupc++/pure.cc (__cxa_deleted_virtual): Add.
+ * libsupc++/eh_alloc.cc: Use _GLIBCXX_NOTHROW.
+ * libsupc++/eh_catch.cc: Same.
+ * libsupc++/eh_globals.cc: Same.
+ * libsupc++/eh_type.cc: Same.
+
+2011-10-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/util/testsuite_allocator.h (uneq_allocator): Add
+ propagate_on_container_swap typedef for C++0x testing.
+
+2011-10-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: Tidy dg- directives,
+ for C++0x testing too.
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: Likewise.
+ * testsuite/ext/pb_ds/example/hash_resize_neg.cc: Likewise.
+ * testsuite/24_iterators/istreambuf_iterator/requirements/
+ base_classes.cc: Adjust for C++0x testing.
+ * testsuite/ext/codecvt/char-1.cc: Avoid warnings in C++0x mode.
+ * testsuite/ext/codecvt/char-2.cc: Likewise.
+ * testsuite/ext/codecvt/wchar_t.cc: Likewise.
+
+2011-10-05 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/ext/pod_char_traits.h: Avoid warnings in C++0x mode
+ when int_type is unsigned.
+
+2011-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49561
+ * include/bits/stl_list.h (_List_base<>::_List_impl::_M_size):
+ Add in C++0x mode.
+ (_List_base<>::_List_impl, _List_base<>::_M_get_node,
+ _List_base<>::_M_put_node, _List_base<>::_List_base(_List_base&&),
+ list<>::size, list<>::swap, list<>::splice): Use it.
+ (operator==(const list<>&, const list<>&)): Rewrite in C++0x mode.
+ * include/bits/list.tcc (list<>::erase): Likewise.
+ (list<>::merge): Adjust in C++0x mode.
+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+ Adjust dg-error line number.
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+
+2011-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/20_util/bind/48698.cc (g): Fix return type, avoid -Wall
+ warning.
+
+2011-10-04 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/ext/alloc_traits.h (__alloc_traits::max_size): Define.
+ (__alloc_traits::rebind): Define.
+ * include/bits/stl_vector.h: Use them.
+ * testsuite/util/testsuite_allocator.h (SimpleAllocator): Define.
+ * testsuite/23_containers/vector/allocator/minimal.cc: New.
+ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+ Adjust dg-error line numbers.
+ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+
+2011-10-03 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/20_util/pointer_traits/pointer_to.cc: Define equality
+ operator and use.
+
+2011-10-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/hashtable.h (_Hashtable<>::insert(value_type&&),
+ insert(const_iterator, value_type&&)): Don't define here...
+ * include/bits/unordered_set.h (__unordered_set<>,
+ __unordered_multiset<>): ... define here instead.
+
+2011-09-29 Jason Merrill <jason@redhat.com>
+
+ * testsuite/util/testsuite_tr1.h (test_property): Avoid
+ ambiguity.
+
+2011-10-01 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/debug/vector (vector<>::erase(iterator, iterator): Check
+ iterators equality using normal iterators.
+ * include/debug/deque (deque<>::erase(iterator, iterator): Likewise.
+
+2011-09-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
+ Remove noexcept from declaration too.
+
+2011-09-27 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/html/*: Regenerate.
+
+ * doc/Makefile.am: Un-nest the ext output directory.
+ * doc/Makefile.in: Regenerate.
+ * spine.xml: Remove authors, add abstract for short
+ contents. Rename to index.html for html output.
+ * manual/spine.xml: Authors here, manual starts with index.html.
+ * api.xml: Update.
+ * faq.xml: Same.
+
+2011-09-27 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * libsupc++/tinfo.cc (type_info::operator==): Test __name instead
+ of name().
+
+2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50529
+ * include/bits/vector.tcc (vector<>::erase(iterator, iterator)):
+ Fix to do nothing if the range is empty.
+ * include/bits/stl_bvector.h: Likewise.
+ * include/bits/deque.tcc: Likewise.
+ * include/debug/vector: Adjust.
+ * include/debug/deque: Likewise.
+ * testsuite/23_containers/vector/modifiers/erase/50529.cc: New.
+ * testsuite/23_containers/deque/modifiers/erase/50529.cc: Likewise.
+ * testsuite/23_containers/deque/modifiers/erase/3.cc: Adjust.
+
+2011-09-25 Benjamin Kosnik <bkoz@redhat.com>
+ Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/48698
+ * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Set libtool_VERSION here.
+ * configure.ac: Move AC_SUBST of libtool_VERSION past call to
+ GLIBCXX_ENABLE_SYMVERS.
+ * configure: Regenerate.
+ * include/bits/c++config: Use __7 as versioned namespace name.
+ * config/abi/pre/gnu-versioned-namespace.ver: Change mangling as
+ per above.
+ * include/c_global/cwchar: Adjust nested namespaces.
+ * testsuite/20_util/bind/48698.cc: Add test case.
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Change line number.
+
+2011-09-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ Revert (no longer necessary post r179130):
+
+ 2010-04-27 Fabien Chêne <fabien.chene@gmail.com>
+
+ * testsuite/util/testsuite_error.h: Add empty default constructor
+ to __gnu_test::test_category and
+ __gnu_test::test_derived_category.
+ * src/future.cc: Add empty default constructor to
+ future_error_category.
+ * src/system_error.cc: Add default ctor to generic_error_category
+ and system_error_category.
+
+2011-09-24 John Salmon <john.salmon@deshaw.com>
+
+ PR libstdc++/50510
+ * include/bits/random.tcc (seed_seq::generate): Fix computation.
+
+2011-09-24 John Salmon <john.salmon@deshaw.com>
+
+ PR libstdc++/50509
+ * include/bits/random.tcc (seed_seq::generate): Fix computation.
+
+2011-09-21 Benjamin Kosnik <bkoz@redhat.com
+
+ * doc/Makefile.am (stamp-epub-docbook): Fix image directory location.
+ * doc/Makefile.in: Regenerate.
+
+2011-09-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * src/limits.cc: Replace everywhere __int128_t -> __int128, and
+ __uint128_t -> unsigned __int128.
+ * include/std/type_traits: Likewise.
+ * include/std/limits: Likewise.
+ * testsuite/18_support/numeric_limits/dr559.cc: Likewise.
+ * testsuite/18_support/numeric_limits/lowest.cc: Likewise.
+ * testsuite/18_support/numeric_limits/40856.cc: Likewise.
+ * testsuite/18_support/numeric_limits/max_digits10.cc: Likewise.
+ * testsuite/util/testsuite_common_types.h: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs-1.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Likewise.
+ * testsuite/20_util/is_floating_point/value.cc: Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Likewise.
+ * testsuite/20_util/is_signed/value.cc: Likewise.
+ * testsuite/20_util/is_unsigned/value.cc: Likewise.
+ * testsuite/20_util/is_integral/value.cc: Likewise.
+ * config/abi/pre/gnu.ver: Likewise.
+ * acinclude.m4: Likewise.
+ * configure: Regenerate.
+ * config.h.in: Likewise.
+
+2011-09-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/40856
+ * include/std/limits (numeric_limits<__int128_t>,
+ numeric_limits<__uint128_t>): Add.
+ * src/limits.cc:Define.
+ * config/abi/pre/gnu.ver: Export.
+ * include/ext/typelist.h (_GLIBCXX_TYPELIST_CHAIN16, 20): Add.
+ * testsuite/util/testsuite_common_types.h (integral_types_gnu): Add
+ (limits_tl): Use it.
+ * testsuite/18_support/numeric_limits/requirements/
+ constexpr_functions.cc: Likewise.
+ * testsuite/18_support/numeric_limits/40856.cc: New.
+ * testsuite/18_support/numeric_limits/dr559.cc: Extend.
+ * testsuite/18_support/numeric_limits/lowest.cc: Likewise.
+ * testsuite/18_support/numeric_limits/max_digits10.cc: Likewise.
+ * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error
+ line numbers.
+ * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
+ * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
+ * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
+ * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
+ Likewise.
+ * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
+ Likewise.
+ * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
+ Likewise.
+
+2011-09-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50441
+ * acinclude.m4 ([GLIBCXX_ENABLE_INT128_FLOAT128]): Add.
+ * configure.ac: Call it.
+ * include/std/type_traits (__is_integral_helper<__int128_t>,
+ __is_integral_helper<__uint128_t>,
+ __is_floating_point_helper<__float128>,
+ __make_unsigned<__int128_t>, __make_signed<__uint128_t>): Add.
+ * testsuite/20_util/make_signed/requirements/typedefs-1.cc: Extend.
+ * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc: Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc: Likewise.
+ * testsuite/20_util/is_signed/value.cc: Likewise.
+ * testsuite/20_util/is_unsigned/value.cc: Likewise.
+ * testsuite/20_util/is_integral/value.cc: Likewise.
+ * testsuite/20_util/is_floating_point/value.cc: New.
+ * testsuite/20_util/is_floating_point/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/is_floating_point/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+ dg-error line numbers.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+ * configure: Regenerate.
+ * config.h.in: Likewise.
+
+2011-09-17 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/bits/hashtable.h (_Hashtable<>::__rehash_policy(const
+ _RehashPolicy&)): Commit the modification of the policy only if no
+ exception occured.
+ * testsuite/23_containers/unordered_set/max_load_factor/robustness.cc:
+ New.
+
+2011-09-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/23_containers/array/comparison_operators/
+ less_or_equal.cc: New.
+ * testsuite/23_containers/array/comparison_operators/
+ greater_or_equal.cc: Likewise.
+ * testsuite/23_containers/array/comparison_operators/less.cc: Likewise.
+ * testsuite/23_containers/array/comparison_operators/equal.cc: Likewise.
+ * testsuite/23_containers/array/comparison_operators/not_equal.cc:
+ Likewise.
+ * testsuite/23_containers/array/comparison_operators/greater.cc:
+ Likewise.
+ * testsuite/23_containers/array/iterators/end_is_one_past.cc: Likewise.
+ * testsuite/23_containers/array/capacity/empty.cc: Likewise.
+ * testsuite/23_containers/array/capacity/max_size.cc: Likewise.
+ * testsuite/23_containers/array/capacity/size.cc: Likewise.
+ * testsuite/23_containers/array/tuple_interface/tuple_element.cc:
+ Likewise.
+ * testsuite/23_containers/array/tuple_interface/tuple_size.cc:
+ Likewise.
+ * testsuite/23_containers/array/element_access/at_out_of_range.cc:
+ Likewise.
+ * testsuite/23_containers/array/element_access/back.cc: Likewise.
+ * testsuite/23_containers/array/element_access/front.cc: Likewise.
+ * testsuite/23_containers/array/element_access/data.cc: Likewise.
+ * testsuite/23_containers/array/cons/aggregate_initialization.cc:
+ Likewise.
+ * testsuite/23_containers/array/requirements/zero_sized_arrays.cc:
+ Likewise.
+ * testsuite/23_containers/array/requirements/contiguous.cc: Likewise.
+ * testsuite/23_containers/array/requirements/member_swap.cc: Likewise.
+ * testsuite/23_containers/array/specialized_algorithms/swap.cc:
+ Likewise.
+ * testsuite/23_containers/array/constexpr_get.cc: Move...
+ * testsuite/23_containers/array/tuple_interface/constexpr_get.cc:
+ ... here.
+ * testsuite/23_containers/array/requirements/get.cc: Move...
+ * testsuite/23_containers/array/tuple_interface/get: ... here.
+ * testsuite/23_containers/array/at_neg.cc: Move...
+ * testsuite/23_containers/array/element_access: ... here.
+ * testsuite/23_containers/array/requirements/constexpr_functions.cc:
+ Move...
+ * testsuite/23_containers/array/capacity: ... here.
+ * testsuite/23_containers/array/requirements/
+ constexpr_element_access.cc: Move...
+ * testsuite/23_containers/array/element_access: ... here.
+
+ * testsuite/20_util/duration/cons/1_neg.cc: Avoid -Wall warnings.
+ * testsuite/20_util/tuple/creation_functions/constexpr.cc: Likewise.
+ * testsuite/20_util/pair/make_pair/constexpr.cc: Likewise.
+ * testsuite/20_util/time_point/nonmember/constexpr.cc: Likewise.
+ * testsuite/23_containers/bitset/operations/constexpr.cc: Likewise.
+
+ * testsuite/20_util/duration/cons/1_neg.cc: Discard bogus warning.
+ * testsuite/20_util/forward/1_neg.cc: Likewise.
+
+2011-09-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/tuple (make_tuple, forward_as_tuple): Declare constexpr.
+ (_Tuple_impl<>::_Tuple_impl(_Tuple_impl<>&&)): Likewise.
+ * testsuite/20_util/tuple/creation_functions/constexpr.cc: Enable
+ make_tuple test.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
+ line number.
+
+2011-09-14 François Dumont <fdumont@gcc.gnu.org>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/hashtable.h (_Hashtable<>::_M_rehash): Take and restore
+ hash policy _M_prev_resize on exception.
+ (_Hashtable<>::_M_insert_bucket): Capture hash policy next resize
+ before using it and use latter method to have it restored on exception.
+ (_Hashtable<>::_M_insert(_Arg&& __v, std::false_type): Likewise.
+ (_Hashtable<>::insert(_InputIterator, _InputIterator): Likewise.
+ (_Hashtable<>::rehash): Likewise.
+ * testsuite/23_containers/unordered_set/insert/hash_policy.cc: New.
+ * testsuite/23_containers/unordered_multiset/insert/hash_policy.cc:
+ Likewise.
+
+2011-09-13 Paul Brook <paul@codesourcery.com>
+
+ * libsupc++/eh_arm.cc (__cxa_end_cleanup): Add C6X implementation.
+ * libsupc++/eh_call.cc (__cxa_call_unexpected): Set rtti_base.
+ * libsupc++/eh_personality.cc (NO_SIZE_OF_ENCODED_VALUE): Remove
+ __ARM_EABI_UNWINDER__ check.
+ (parse_lsda_header): Check _GLIBCXX_OVERRIDE_TTYPE_ENCODING.
+ (get_ttype_entry): Use generic implementation on ARM EABI.
+ (check_exception_spec): Use _Unwind_decode_typeinfo_ptr and
+ UNWIND_STACK_REG.
+ (PERSONALITY_FUNCTION): Set ttype_base.
+
+2011-09-12 Daniel Krugler <daniel.kruegler@googlemail.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/tuple (_Head_base<>::_M_head, _Head_base<>::_M_tail,
+ _Tuple_impl<>::_M_head, _Tuple_impl<>::_M_tail): Change to static
+ constexpr functions; adjust everywhere.
+ (__get_helper, get): Declare constexpr all three overloads.
+ (tuple_cat): Declare constexpr; use late return type to improve
+ error messages.
+ * include/std/utility (__pair_get<>::__get, __pair_get<>::__move_get,
+ __pair_get<>::__const_get, get): Declare all constexpr.
+ * include/std/array (get): Likewise.
+ * testsuite/20_util/tuple/creation_functions/constexpr.cc: Re-enable
+ tuple_cat test.
+ * testsuite/23_containers/array/constexpr_get.cc: New.
+ * testsuite/20_util/tuple/element_access/constexpr_get.cc: Likewise.
+ * testsuite/20_util/pair/constexpr_get.cc: Likewise.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+ line number.
+
+2011-09-12 Jason Merrill <jason@redhat.com>
+
+ * testsuite/20_util/is_constructible/value-2.cc: Adjust
+ expected values.
+
+2011-09-11 Daniel Krugler <daniel.kruegler@googlemail.com>
+
+ PR libstdc++/50159
+ * include/std/tuple (tuple_cat): Reimplement according to the
+ resolution of LWG 1385.
+ * include/std/type_traits: Define __and_ and __or_ for zero
+ arguments too; minor tweaks.
+ * testsuite/20_util/tuple/creation_functions/tuple_cat.cc: New.
+ * testsuite/20_util/tuple/creation_functions/constexpr.cc: Disable
+ for now tuple_cat test.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
+ line numbers.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+ * doc/xml/manual/status_cxx200x.xml: Update.
+
+2011-09-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/tuple: Use everywhere std::size_t... instead of int...
+ * include/std/functional: Likewise.
+ * include/std/scoped_allocator: Likewise.
+ * include/bits/stl_pair.h: Likewise.
+
+2011-09-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50336
+ * include/bits/streambuf_iterator.h (class istreambuf_iterator):
+ Implement LWG 445 in C++0x mode.
+ * testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc:
+ New.
+
+2011-09-08 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/33255 - Support -Wunused-local-typedefs warning
+ * include/ext/bitmap_allocator.h
+ (__detail::__mini_vector::__lower_bound): Remove unused typedef.
+ * src/istream.cc (std::operator>>(basic_istream<char>& __in,
+ basic_string<char>& __str)): Likewise.
+ (std::getline): Likewise.
+ * src/valarray.cc (__valarray_product): Likewise.
+
+2011-09-07 François Dumont <francois.cppdevs@free.fr>
+
+ * testsuite/23_containers/array/at.cc: Revert to...
+ * testsuite/23_containers/array/at_neg.cc: ...this.
+
+2011-09-07 Jason Merrill <jason@redhat.com>
+
+ * testsuite/20_util/bind/ref_neg.cc: Adjust errors.
+ * testsuite/20_util/duration/cons/1_neg.cc: Adjust errors.
+
+2011-09-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/tuple (_Tuple_impl::_M_head, _M_tail): Mark constexpr.
+ (tuple(tuple&&)): Same.
+ (tuple(const tuple<_UElements...>& __in)): Same.
+ (tuple(tuple<_UElements...>&& __in)): Same.
+ (tuple_cat(const tuple<_TElements...>&, const tuple<_UElements...>&)):
+ Same.
+ (get): Same.
+ * include/std/array: Consolidate array::data usage.
+ * testsuite/23_containers/array/requirements/constexpr_functions.cc:
+ Remove extra include.
+ * testsuite/20_util/tuple/creation_functions/constexpr.cc: New.
+ * testsuite/20_util/tuple/cons/constexpr-2.cc: Add tests.
+ * testsuite/20_util/tuple/cons/constexpr-3.cc: Same.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust line numbers.
+
+2011-09-06 François Dumont <fdumont@gcc.gnu.org>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/hashtable_policy.h (_Prime_rehash_policy::
+ _M_next_bkt): Cast _M_max_load_factor to long double.
+ (_Prime_rehash_policy::_M_bkt_for_elements): Use _M_next_bkt.
+ (_Prime_rehash_policy::_M_need_rehash): Likewise; cast all
+ float quantities to long double.
+
+2011-09-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50257
+ * include/bits/hashtable_policy.h (_Prime_rehash_policy::
+ _M_next_bkt): Optimize for small argument.
+
+2011-09-02 François Dumont <fdumont@gcc.gnu.org>
+
+ * testsuite/util/testsuite_allocator.h (tracker_allocator_counter::
+ allocate): Update allocation count only if allocation succeeded.
+
+2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/bitset: Trivial formatting fixes.
+
+2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
+ Marc Glisse <marc.glisse@normalesup.org>
+
+ * include/std/bitset (_Base_bitset<>::_M_are_all_aux): Remove.
+ (_Base_bitset<>::_M_are_all): Add.
+ (bitset<>::all): Use the latter, improve implementation.
+
+2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
+ Marc Glisse <marc.glisse@normalesup.org>
+
+ PR libstdc++/50268
+ * include/std/bitset (struct _Sanitize_val): Add.
+ (bitset<>::bitset(unsigned long long)): Fix.
+ * testsuite/23_containers/bitset/cons/50268.cc: New.
+
+2011-09-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
+ Remove noexcept, the move constructor allocates memory; rearrange
+ the code in the body to consistently update __ht._M_rehash_policy
+ before using _M_next_bkt on it.
+ * include/debug/unordered_map: Adjust.
+ * include/debug/unordered_set: Likewise.
+ * include/profile/unordered_map: Likewise.
+ * include/profile/unordered_set: Likewise.
+ * testsuite/23_containers/unordered_map/cons/
+ noexcept_move_construct.cc: Remove.
+ * testsuite/23_containers/unordered_set/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/cons/
+ noexcept_move_construct.cc: Likewise.
+
+2011-08-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/chrono (operator*(const _Rep1&, const duration<>&)):
+ Fix order of template parameters per LWG 2004.
+
+2011-08-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/stl_iterator.h (make_move_iterator): Implement DR2061.
+ * testsuite/24_iterators/move_iterator/dr2061.cc: New.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
+ line numbers.
+
+2011-08-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * config/os/mingw32/error_constants.h: Fix commas.
+
+2011-08-29 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/20_util/duration/arithmetic/constexpr.cc: Add.
+
+2011-08-29 Kai Tietz <ktietz@redhat.com>
+
+ * configure: Regenerated.
+ * config.h.in: Regenerated.
+ * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR) Add
+ checks for ECHILD, ENOSPC, EPERM, ETIMEDOUT, and
+ EWOULDBLOCK.
+ * config/os/mingw32/error_constants.h (errc): Add
+ enumerator values no_child_process, no_space_on_device,
+ not_supported, operation_not_permitted, operation_would_block,
+ timed_out, and value_too_large,
+
+2011-08-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50118
+ * include/bits/stl_list.h (_List_base<>::
+ _List_base(const allocator_type&)): Remove.
+ (_List_base<>::_List_base(const _Node_alloc_type&)): Add.
+ (list<>:list(const allocator_type&), list(size_type, const
+ value_type&, const allocator_type&),
+ list(initializer_list<, const allocator_type&),
+ list(_InputIterator, _InputIterator, const allocator_type&),
+ insert(iterator, size_type, const value_type&),
+ insert(iterator, _InputIterator, _InputIterator)): Adjust.
+ * include/bits/stl_tree.h (_Rb_tree<>::_Rb_tree(const _Compare&,
+ const allocator_type&)): Fix.
+ * include/bits/stl_map.h (map<>::map(const _Compare&,
+ const allocator_type&), map(initializer_list<>,
+ const _Compare&, const allocator_type&), map(_InputIterator,
+ _InputIterator, const _Compare&, const allocator_type&),
+ get_allocator): Adjust.
+ * include/bits/stl_set.h (set<>::set(const _Compare&,
+ const allocator_type&), set(initializer_list<>,
+ const _Compare&, const allocator_type&), set(_InputIterator,
+ _InputIterator, const _Compare&, const allocator_type&),
+ get_allocator): Likewise.
+ * include/bits/stl_multimap.h (multimap<>::multimap(const _Compare&,
+ const allocator_type&), multimap(initializer_list<>,
+ const _Compare&, const allocator_type&), multimap(_InputIterator,
+ _InputIterator, const _Compare&, const allocator_type&),
+ get_allocator): Likewise.
+ * include/bits/stl_multiset.h (multiset<>::multiset(const _Compare&,
+ const allocator_type&), multiset(initializer_list<>,
+ const _Compare&, const allocator_type&), multiset(_InputIterator,
+ _InputIterator, const _Compare&, const allocator_type&),
+ get_allocator): Likewise.
+ * include/bits/forward_list.h (_Fwd_list_base<>::
+ _Fwd_list_base(const _Alloc&), _Fwd_list_base(const _Fwd_list_base&,
+ const _Alloc&), _Fwd_list_base(_Fwd_list_base&&, const _Alloc&)):
+ Remove.
+ (_Fwd_list_base<>::_Fwd_list_base(const _Node_alloc_type&),
+ _Fwd_list_base(const _Fwd_list_base&,
+ const _Node_alloc_type&), _Fwd_list_base(_Fwd_list_base&&,
+ const _Node_alloc_type&)): Add.
+ (forward_list<>::forward_list(const _Alloc&),
+ forward_list(const forward_list&, const _Alloc&),
+ forward_list(forward_list&&, const _Alloc&),
+ forward_list(size_type, const _Tp&, const _Alloc&),
+ forward_list(_InputIterator, _InputIterator, const _Alloc&),
+ forward_list(std::initializer_list<>, const _Alloc&),
+ get_allocator): Adjust.
+ * include/bits/forward_list.tcc: Adjust.
+ * testsuite/util/testsuite_allocator.h (ExplicitConsAlloc): Add.
+ * testsuite/23_containers/unordered_map/requirements/
+ explicit_instantiation/5.cc: New.
+ * testsuite/23_containers/multimap/requirements/
+ explicit_instantiation/5.cc: Likewise.
+ * testsuite/23_containers/multimap/requirements/
+ explicit_instantiation/5_c++0x.cc: Likewise.
+ * testsuite/23_containers/set/requirements/explicit_instantiation/
+ 5.cc: Likewise.
+ * testsuite/23_containers/set/requirements/explicit_instantiation/
+ 5_c++0x.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/requirements/
+ explicit_instantiation/5.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/
+ explicit_instantiation/5.cc: Likewise.
+ * testsuite/23_containers/unordered_set/requirements/
+ explicit_instantiation/5.cc: Likewise.
+ testsuite/23_containers/multiset/requirements/explicit_instantiation/
+ 5.cc: Likewise.
+ * testsuite/23_containers/multiset/requirements/
+ explicit_instantiation/5_c++0x.cc: Likewise.
+ * testsuite/23_containers/list/requirements/explicit_instantiation/
+ 5_c++0x.cc: Likewise.
+ * testsuite/23_containers/list/requirements/explicit_instantiation/
+ 5.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/requirements/
+ explicit_instantiation/5.cc: Likewise.
+ * testsuite/23_containers/map/requirements/explicit_instantiation/
+ 5.cc: Likewise.
+ * testsuite/23_containers/map/requirements/explicit_instantiation/
+ 5_c++0x.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ assign_neg.cc: Adjust dg-error line number.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+ Likewise.
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+
+2011-08-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * acinclude.m4 (GLIBCXX_CHECK_MATH_PROTO)
+ (GLIBCXX_CHECK_STDLIB_PROTO): New tests.
+ * configure.ac (GLIBCXX_CHECK_MATH_PROTO)
+ (GLIBCXX_CHECK_STDLIB_PROTO): Call them.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+ * config/os/solaris/solaris2.8/os_defines.h
+ (__CORRECT_ISO_CPP_MATH_H_PROTO2): Don't define.
+ * config/os/solaris/solaris2.9: Remove.
+ * configure.host (solaris2.8): Merge with ...
+ (solaris2.9, solaris2.1[0-9]): ... this.
+ Always use os/solaris/solaris2.8.
+
+2011-08-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/move.h (swap(_Tp(&)[_Nm], _Tp(&)[_Nm])): Remove
+ workaround for c++/49045.
+ * include/bits/algorithmfwd.h: Likewise.
+
+2011-08-25 Tom Tromey <tromey@redhat.com>
+
+ * testsuite/libstdc++-prettyprinters/simple.cc: New file.
+ * testsuite/lib/gdb-test.exp: New file.
+ * testsuite/libstdc++-prettyprinters/prettyprinters.exp: New
+ file.
+
+2011-08-18 Marc Glisse <marc.glisse@normalesup.org>
+
+ * include/tr1/cmath: Extend/update comment.
+
+2011-08-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50119
+ * include/bits/stl_algo.h (__copy_n(_InputIterator, _Size,
+ _OutputIterator, input_iterator_tag)): Fix.
+ * testsuite/25_algorithms/copy_n/50119.cc: New.
+
+2011-08-18 Marc Glisse <marc.glisse@normalesup.org>
+ Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR libstdc++/1773
+ * config/os/solaris2.7: Rename to config/os/solaris2.9.
+ * config/os/solaris/solaris2.9/os_defines.h
+ (__CORRECT_ISO_CPP_MATH_H_PROTO1)
+ (__CORRECT_ISO_CPP_STDLIB_H_PROTO)
+ (__CORRECT_ISO_CPP_STRING_H_PROTO)
+ (__CORRECT_ISO_CPP_WCHAR_H_PROTO): Define.
+ * config/os/solaris2.8/ctype_base.h,
+ config/os/solaris2.8/ctype_configure_char.cc,
+ config/solaris2.8/ctype_inline.h,
+ config/os/solaris2.8/os_defines.h: New files.
+
+ * configure.host (solaris2.[89], solaris2.1[0-9]):
+ Split into ...
+ (solaris2.8): ... this.
+ Use os/solaris/solaris2.8.
+ (solaris2.9, solaris2.1[0-9]): ... and this.
+ Use os/solaris/solaris2.9.
+
+ * include/c_global/cmath (double abs(double)): Wrap in
+ !__CORRECT_ISO_CPP_MATH_H_PROTO1 &&
+ !__CORRECT_ISO_CPP_MATH_H_PROTO2.
+ (float abs(float), long double abs(long double): Wrap in
+ !__CORRECT_ISO_CPP_MATH_H_PROTO1.
+ (float acos(float), long double acos(long double)): Likewise.
+ (float asin(float), long double asin(long double)): Likewise.
+ (float atan(float), long double atan(long double)): Likewise.
+ (float atan2(float, float), long double atan2(long double, long
+ double)): Likewise.
+ (float ceil(float), long double ceil(long double)): Likewise.
+ (float cos(float), long double cos(long double)): Likewise.
+ (float cosh(float), long double cosh(long double)): Likewise.
+ (float exp(float), long double exp(long double)): Likewise.
+ (float fabs(float), long double fabs(long double)): Likewise.
+ (float floor(float), long double floor(long double)): Likewise.
+ (float fmod(float, float), long double fmod(long double, long
+ double)): Likewise.
+ (float frexp(float, int*), long double frexp(long double, int*)):
+ Likewise.
+ (float ldexp(float, int), long double ldexp(long double, int)):
+ Likewise.
+ (float log(float), long double log(long double)): Likewise.
+ (float log10(float), long double log10(long double)): Likewise.
+ (float modf(float, float*), long double modf(long double, long
+ double*))): Likewise.
+ (float pow(float, float), long double pow(long double, long
+ double)): Likewise.
+ (float sin(float), long double sin(long double)): Likewise.
+ (float sinh(float), long double sinh(long double)): Likewise.
+ (float sqrt(float), long double sqrt(long double)): Likewise.
+ (float tan(float), long double tan(long double)): Likewise.
+ (float tanh(float), long double tanh(long double)): Likewise.
+ * include/c_global/cstdlib (long abs(long), ldiv_t div(long,
+ long)): Wrap in !__CORRECT_ISO_CPP_STDLIB_H_PROTO.
+ * include/tr1/cmath (float fabs(float), long double fabs(long
+ double)): Wrap in !__CORRECT_ISO_CPP_MATH_H_PROTO1.
+
+2011-08-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/xml/images/*: Image and image filename changes.
+
+2011-08-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/data/make_graph_test_infos.xml: Edit.
+ * testsuite/data/make_graph_htmls.xml: Remove
+ * scripts/make_graph.py: Edit, fix.
+ * scripts/make_graphs.py: Remove.
+
+ * doc/Makefile.am (doc-svg-performance): New.
+ (doc-html-performance): Remove.
+ * doc/Makefile.in: Regenerate.
+
+ * doc/xml/manual/test_policy_data_structures.xml: Markup changes.
+ * doc/xml/manual/policy_data_structures.xml: Same.
+ * doc/xml/manual/locale.xml: Same.
+
+ Testsuite renames.
+ * performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc:
+ Rename.
+ * performance/ext/pb_ds/random_int_find_timing.cc: Same.
+ * performance/ext/pb_ds/multimap_text_insert_mem_usage.hpp
+ * performance/ext/pb_ds/multimap_text_find_timing.hpp
+ * performance/ext/pb_ds/priority_queue_random_int_push_timing.cc: Same.
+ * performance/ext/pb_ds/priority_queue_text_modify_timing.hpp
+ * performance/ext/pb_ds/tree_order_statistics_timing.cc: Same.
+ * performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc: Same.
+ * performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc: Same.
+ * performance/ext/pb_ds/priority_queue_text_join_timing.cc: Same.
+ * performance/ext/pb_ds/multimap_text_insert_timing_small.cc: Same.
+ * performance/ext/pb_ds/random_int_subscript_insert_timing.cc: Same.
+ * performance/ext/pb_ds/tree_text_lor_find_timing.cc: Same.
+ * performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc: Same.
+ * performance/ext/pb_ds/multimap_text_find_timing_small.cc: Same.
+ * performance/ext/pb_ds/text_find_timing.cc: Same.
+ * performance/ext/pb_ds/tree_text_insert_timing.cc: Same.
+ * performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc: Same.
+ * performance/ext/pb_ds/random_int_subscript_find_timing.cc: Same.
+ * performance/ext/pb_ds/priority_queue_text_push_timing.cc: Same.
+ * performance/ext/pb_ds/tree_split_join_timing.cc: Same.
+ * performance/ext/pb_ds/multimap_text_insert_timing_large.cc: Same.
+ * performance/ext/pb_ds/priority_queue_text_modify_up_timing.cc: Same.
+ * performance/ext/pb_ds/multimap_text_find_timing_large.cc: Same.
+ * performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc:
+ Same.
+ * performance/ext/pb_ds/multimap_text_insert_timing.hpp
+ * performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc: Same.
+ * performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc: Same.
+
+ * performance/ext/pb_ds/all_int_find.cc: To these new files...
+ * performance/ext/pb_ds/all_int_subscript_find.cc: ...this.
+ * performance/ext/pb_ds/all_int_subscript_insert.cc: ...this.
+ * performance/ext/pb_ds/all_text_find.cc: ...this.
+ * performance/ext/pb_ds/hash_int_erase_mem.cc: ...this.
+ * performance/ext/pb_ds/hash_zlob_int_find.cc: ...this.
+ * performance/ext/pb_ds/multimap_text_find.hpp
+ * performance/ext/pb_ds/multimap_text_find_large.cc: ...this.
+ * performance/ext/pb_ds/multimap_text_find_small.cc: ...this.
+ * performance/ext/pb_ds/multimap_text_insert.hpp
+ * performance/ext/pb_ds/multimap_text_insert_large.cc: ...this.
+ * performance/ext/pb_ds/multimap_text_insert_mem.hpp
+ * performance/ext/pb_ds/multimap_text_insert_mem_large.cc: ...this.
+ * performance/ext/pb_ds/multimap_text_insert_mem_small.cc: ...this.
+ * performance/ext/pb_ds/multimap_text_insert_small.cc: ...this.
+ * performance/ext/pb_ds/priority_queue_int_push.cc: ...this.
+ * performance/ext/pb_ds/priority_queue_int_push_pop.cc: ...this.
+ * performance/ext/pb_ds/priority_queue_text_join.cc: ...this.
+ * performance/ext/pb_ds/priority_queue_text_modify_down.cc: ...this.
+ * performance/ext/pb_ds/priority_queue_text_modify.hpp
+ * performance/ext/pb_ds/priority_queue_text_modify_up.cc: ...this.
+ * performance/ext/pb_ds/priority_queue_text_pop_mem.cc: ...this.
+ * performance/ext/pb_ds/priority_queue_text_push.cc: ...this.
+ * performance/ext/pb_ds/priority_queue_text_push_pop.cc: ...this.
+ * performance/ext/pb_ds/tree_order_statistics.cc: ...this.
+ * performance/ext/pb_ds/tree_split_join.cc: ...this.
+ * performance/ext/pb_ds/tree_text_insert.cc: ...this.
+ * performance/ext/pb_ds/tree_text_lor_find.cc: ...this.
+
+ * doc/xml/images/*: Image and image filename changes.
+
+2011-08-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/c_global/cmath (fmod(_Tp, _Up)): Add.
+ * include/c_std/cmath: Likewise.
+
+2011-08-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/future: constexpr functions are implicitly inline.
+ * include/std/chrono: Likewise.
+ * include/std/complex: Likewise.
+ * include/bits/move.h: Likewise.
+ * include/bits/stl_pair.h: Likewise.
+
+2011-08-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/alloc_traits.h: Fix doxygen @headername.
+
+2011-08-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/doxygen/user.cfg.in (PDF_HYPERLINKS): To NO.
+
+2011-08-06 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/doxygen/user.cfg.in: Add scoped_allocator.
+
+ * include/debug/safe_sequence.h: Fix doxygen markup.
+ * include/debug/safe_unordered_base.h: Same.
+ * include/debug/safe_local_iterator.tcc: Same.
+ * include/debug/safe_unordered_container.h: Same.
+ * include/std/valarray: Same.
+ * include/std/iomanip: Same.
+ * include/std/streambuf: Same.
+ * include/std/bitset: Same.
+ * include/std/fstream: Same.
+ * include/std/functional: Same.
+ * include/std/istream: Same.
+ * include/std/ostream: Same.
+ * include/std/scoped_allocator: Same.
+ * include/std/sstream: Same.
+ * include/parallel/multiway_merge.h: Same.
+ * include/parallel/base.h: Same.
+ * include/parallel/for_each_selectors.h: Same.
+ * include/parallel/multiway_mergesort.h: Same.
+ * include/parallel/search.h: Same.
+ * include/parallel/partial_sum.h: Same.
+ * include/parallel/queue.h: Same.
+ * include/parallel/sort.h: Same.
+ * include/parallel/random_number.h: Same.
+ * include/ext/vstring.h: Same.
+ * include/ext/algorithm: Same.
+ * include/ext/pb_ds/assoc_container.h: Same.
+ * include/ext/bitmap_allocator.h: Same.
+ * include/ext/stdio_filebuf.h: Same.
+ * include/ext/memory: Same.
+ * include/ext/functional: Same.
+ * include/bits/basic_ios.h: Same.
+ * include/bits/stl_list.h: Same.
+ * include/bits/stl_map.h: Same.
+ * include/bits/stl_algobase.h: Same.
+ * include/bits/stl_queue.h: Same.
+ * include/bits/gslice.h: Same.
+ * include/bits/locale_classes.h: Same.
+ * include/bits/stl_set.h: Same.
+ * include/bits/locale_facets.h: Same.
+ * include/bits/stl_stack.h: Same.
+ * include/bits/stl_heap.h: Same.
+ * include/bits/forward_list.h: Same.
+ * include/bits/stream_iterator.h: Same.
+ * include/bits/basic_string.h: Same.
+ * include/bits/stl_multimap.h: Same.
+ * include/bits/stl_pair.h: Same.
+ * include/bits/ios_base.h: Same.
+ * include/bits/stl_numeric.h: Same.
+ * include/bits/stl_vector.h: Same.
+ * include/bits/stl_deque.h: Same.
+ * include/bits/codecvt.h: Same.
+ * include/bits/stl_multiset.h: Same.
+ * include/bits/stl_uninitialized.h: Same.
+ * include/bits/ptr_traits.h: Same.
+ * include/bits/slice_array.h: Same.
+ * include/bits/stl_iterator_base_funcs.h: Same.
+ * include/bits/stl_algo.h: Same.
+ * include/bits/stl_iterator.h: Same.
+ * include/bits/stl_tempbuf.h: Same.
+ * include/bits/regex.h: Same.
+ * include/bits/range_access.h: Same.
+ * include/bits/random.h: Same.
+ * include/bits/alloc_traits.h: Same.
+ * include/bits/regex_error.h: Same.
+ * include/bits/locale_facets_nonio.h: Same.
+ * include/bits/stl_relops.h: Same.
+ * include/backward/auto_ptr.h: Same.
+ * libsupc++/initializer_list: Same.
+
+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+ Adjust line numbers.
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
+ * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
+ Same.
+ * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
+ Same.
+
+2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * acinclude.m4 (GLIBCXX_EXPORT_INCLUDES): Point TOPLEVEL_INCLUDES
+ to $(toplevel_srcdir)/libgcc.
+ * configure: Regenerate.
+
+2011-08-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/xml/manual/build_hacking.xml: Use relative fileref for PNG
+ imagedata.
+ * doc/xml/manual/test_policy_data_structures.xml: Same.
+ * doc/xml/manual/policy_data_structures.xml: Same.
+
+ * doc/Makefile.am (stamp-html-docbook-images)
+ (stamp-html-docbook-lwg, stamp-html-docbook-data): New.
+ (xml_extra): Add lwg html file dependencies.
+ (xml_images): Add image html file dependencies.
+ * doc/Makefile.in: Regenerate.
+ (stamp-html): Change to stamp-html-docbook-data.
+ (stamp-html-copy): Remove.
+
+2011-08-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * src/atomic.cc: Use noexcept.
+ * include/std/atomic: Likewise.
+ * include/bits/atomic_0.h: Likewise.
+ * include/bits/atomic_2.h: Likewise.
+ * include/bits/atomic_base.h: Likewise.
+
+2011-08-03 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/performance/27_io/filebuf_sputn_unbuf.cc: Include
+ unistd.h for unlink.
+ * testsuite/performance/27_io/ofstream_insert_int.cc: Same.
+ * testsuite/performance/27_io/ifstream_extract_int.cc: Same.
+ * testsuite/performance/27_io/ifstream_getline-2.cc: Same.
+ * testsuite/performance/27_io/fstream_seek_write.cc: Same.
+ * testsuite/performance/27_io/ifstream_extract_chars.cc: Same.
+ * testsuite/performance/27_io/ofstream_insert_float.cc: Same.
+ * testsuite/performance/27_io/ifstream_extract_float.cc: Same.
+ * testsuite/performance/27_io/filebuf_sputc.cc: Same.
+
+2011-08-03 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/tuple: Mark more constructors constexpr.
+ * testsuite/20_util/tuple/cons/constexpr.cc: Split into and extend as:
+ * testsuite/20_util/tuple/cons/constexpr-2.cc: ...this.
+ * testsuite/20_util/tuple/cons/constexpr-3.cc: ... and this.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust line numbers.
+
+2011-08-03 Benjamin Kosnik <bkoz@redhat.com>
+ François Dumont <francois.cppdevs@free.fr>
+
+ * testsuite/23_containers/array/at_neg.cc: Move...
+ * testsuite/23_containers/array/at.cc: ...here. Remove
+ -fno-exceptions, call const at member function.
+
+2011-08-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Generated.
+
+2011-08-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/49813
+ * include/c_global/cmath (isinf): Remove workaround.
+
+2011-07-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49925
+ * include/bits/shared_ptr.h (make_shared): Qualify allocate_shared
+ with std::.
+ * include/bits/shared_ptr_base.h (__make_shared): Likewise.
+
+2011-07-29 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/xml/manual/build_hacking.xml: Markup imagedata changes.
+ * doc/xml/manual/policy_data_structures.xml: Same.
+
+ * doc/xml/class.txml: Remove biblioid.
+ * doc/xml/manual/allocator.xml: Same.
+ * doc/xml/manual/ctype.xml: Same.
+ * doc/xml/manual/codecvt.xml: Same.
+ * doc/xml/manual/backwards_compatibility.xml: Same.
+ * doc/xml/manual/abi.xml: Same.
+ * doc/xml/manual/shared_ptr.xml: Same.
+ * doc/xml/manual/using_exceptions.xml: Same.
+ * doc/xml/manual/messages.xml: Same.
+
+2011-07-29 Benjamin Kosnik <bkoz@redhat.com>
+
+ Docbook conversion of existing ext/pb_ds documentation.
+ * doc/Makefile.am (xml_sources_manual): Add
+ policy_data_structures.xml and
+ test_policy_data_structures.xml.
+ (stamp-html-copy): Remove special-case for ext/pb_ds directory.
+ (XSLTPROC_FLAGS): Split into XSLT_FLAGS and XSLT_PARAM, use.
+ * doc/Makefile.in: Regenerate.
+ * doc/xml/manual/policy_data_structures.xml: New, adapted from
+ previous html-only instance in doc/html/ext/pb_ds.
+ * doc/xml/manual/test_policy_data_structures.xml: New, same as above.
+
+ * doc/xml/spine.xml: Update copyright.
+ * doc/xml/manual/spine.xml: Same.
+ * doc/xml/manual/extensions.xml: Adjust set, chapter, sections.
+ * doc/xml/manual/bitmap_allocator.xml: Same.
+ * doc/xml/manual/mt_allocator.xml: Same.
+
+ Populate image directory.
+ * doc/xml/images/(pbds_balls_and_bins.png,
+ pbds_binary_priority_queue_random_int_push_timing_test_local.pdf,
+ pbds_binary_priority_queue_random_int_push_timing_test_local.png,
+ pbds_binary_priority_queue_random_int_push_timing_test_local.svg,
+ pbds_cc_hash_random_int_find_timing_test_local.pdf,
+ pbds_cc_hash_random_int_find_timing_test_local.png,
+ pbds_cc_hash_random_int_find_timing_test_local.svg,
+ pbds_cc_hash_random_int_subscript_timing_test_find_local.pdf,
+ pbds_cc_hash_random_int_subscript_timing_test_find_local.png,
+ pbds_cc_hash_random_int_subscript_timing_test_find_local.svg,
+ pbds_cc_hash_random_int_subscript_timing_test_insert_local.pdf,
+ pbds_cc_hash_random_int_subscript_timing_test_insert_local.png,
+ pbds_cc_hash_random_int_subscript_timing_test_insert_local.svg,
+ pbds_container_tag_hierarchy.pdf,
+ pbds_container_tag_hierarchy.png,
+ pbds_container_tag_hierarchy.svg,
+ pbds_different_underlying_dss_1.png,
+ pbds_different_underlying_dss_2.png,
+ pbds_embedded_lists_1.png, pbds_embedded_lists_2.png,
+ pbds_embedded_lists_3.png, pbds_exception_hierarchy.pdf,
+ pbds_exception_hierarchy.png, pbds_exception_hierarchy.svg,
+ pbds_gp_hash_random_int_find_timing_test_local.pdf,
+ pbds_gp_hash_random_int_find_timing_test_local.png,
+ pbds_gp_hash_random_int_find_timing_test_local.svg,
+ pbds_gp_hash_random_int_subscript_timing_test_find_local.pdf,
+ pbds_gp_hash_random_int_subscript_timing_test_find_local.png,
+ pbds_gp_hash_random_int_subscript_timing_test_find_local.svg,
+ pbds_gp_hash_random_int_subscript_timing_test_insert_local.pdf,
+ pbds_gp_hash_random_int_subscript_timing_test_insert_local.png,
+ pbds_gp_hash_random_int_subscript_timing_test_insert_local.svg,
+ pbds_hash_policy_cd.png,
+ pbds_hash_random_int_erase_mem_usage_test_local.pdf,
+ pbds_hash_random_int_erase_mem_usage_test_local.png,
+ pbds_hash_random_int_erase_mem_usage_test_local.svg,
+ pbds_hash_ranged_hash_range_hashing_fns.png,
+ pbds_hash_range_hashing_seq_diagram2.png,
+ pbds_hash_range_hashing_seq_diagram.png,
+ pbds_hash_zlob_random_int_find_timing_test_local.pdf,
+ pbds_hash_zlob_random_int_find_timing_test_local.png,
+ pbds_hash_zlob_random_int_find_timing_test_local.svg,
+ pbds_insert_resize_sequence_diagram1.png,
+ pbds_insert_resize_sequence_diagram2.png,
+ pbds_insert_resize_sequence_diagram3.png,
+ pbds_invalidation_guarantee_erase.png,
+ pbds_invalidation_tag_hierarchy.pdf,
+ pbds_invalidation_tag_hierarchy.png,
+ pbds_invalidation_tag_hierarchy.svg, pbds_list_update.png,
+ pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf,
+ pbds_multimap_text_find_timing_test_large_s2p_hash_local.png,
+ pbds_multimap_text_find_timing_test_large_s2p_hash_local.svg,
+ pbds_multimap_text_find_timing_test_large_s2p_tree_local.pdf,
+ pbds_multimap_text_find_timing_test_large_s2p_tree_local.png,
+ pbds_multimap_text_find_timing_test_large_s2p_tree_local.svg,
+ pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf,
+ pbds_multimap_text_find_timing_test_small_s2p_hash_local.png,
+ pbds_multimap_text_find_timing_test_small_s2p_hash_local.svg,
+ pbds_multimap_text_find_timing_test_small_s2p_tree_local.pdf,
+ pbds_multimap_text_find_timing_test_small_s2p_tree_local.png,
+ pbds_multimap_text_find_timing_test_small_s2p_tree_local.svg,
+ pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.pdf,
+ pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.png,
+ pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.svg,
+ pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.pdf,
+ pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.png,
+ pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.svg,
+ pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.pdf,
+ pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.png,
+ pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.svg,
+ pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.pdf,
+ pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.png,
+ pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.svg,
+ pbds_multimap_text_insert_timing_test_large_s2p_hash_local.pdf,
+ pbds_multimap_text_insert_timing_test_large_s2p_hash_local.png,
+ pbds_multimap_text_insert_timing_test_large_s2p_hash_local.svg,
+ pbds_multimap_text_insert_timing_test_large_s2p_tree_local.pdf,
+ pbds_multimap_text_insert_timing_test_large_s2p_tree_local.png,
+ pbds_multimap_text_insert_timing_test_large_s2p_tree_local.svg,
+ pbds_multimap_text_insert_timing_test_small_s2p_hash_local.pdf,
+ pbds_multimap_text_insert_timing_test_small_s2p_hash_local.png,
+ pbds_multimap_text_insert_timing_test_small_s2p_hash_local.svg,
+ pbds_multimap_text_insert_timing_test_small_s2p_tree_local.pdf,
+ pbds_multimap_text_insert_timing_test_small_s2p_tree_local.png,
+ pbds_multimap_text_insert_timing_test_small_s2p_tree_local.svg,
+ pbds_node_invariants.png,
+ pbds_pairing_priority_queue_text_push_pop_timing_test_local.pdf,
+ pbds_pairing_priority_queue_text_push_pop_timing_test_local.png,
+ pbds_pairing_priority_queue_text_push_pop_timing_test_local.svg,
+ pbds_pairing_priority_queue_text_push_timing_test_local.pdf,
+ pbds_pairing_priority_queue_text_push_timing_test_local.png,
+ pbds_pairing_priority_queue_text_push_timing_test_local.svg,
+ pbds_pat_trie.png, pbds_point_iterator_hierarchy.png,
+ pbds_point_iterators_range_ops_1.png,
+ pbds_point_iterators_range_ops_2.png,
+ pbds_priority_queue_different_underlying_dss.png,
+ pbds_priority_queue_random_int_push_pop_timing_test_local.pdf,
+ pbds_priority_queue_random_int_push_pop_timing_test_local.png,
+ pbds_priority_queue_random_int_push_pop_timing_test_local.svg,
+ pbds_priority_queue_random_int_push_timing_test_local.pdf,
+ pbds_priority_queue_random_int_push_timing_test_local.png,
+ pbds_priority_queue_random_int_push_timing_test_local.svg,
+ pbds_priority_queue_tag_hierarchy.pdf,
+ pbds_priority_queue_tag_hierarchy.png,
+ pbds_priority_queue_tag_hierarchy.svg,
+ pbds_priority_queue_text_join_timing_test_local.pdf,
+ pbds_priority_queue_text_join_timing_test_local.png,
+ pbds_priority_queue_text_join_timing_test_local.svg,
+ pbds_priority_queue_text_modify_down_timing_test_local.pdf,
+ pbds_priority_queue_text_modify_down_timing_test_local.png,
+ pbds_priority_queue_text_modify_down_timing_test_local.svg,
+ pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.pdf,
+ pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.png,
+ pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.svg,
+ pbds_priority_queue_text_modify_up_timing_test_local.pdf,
+ pbds_priority_queue_text_modify_up_timing_test_local.png,
+ pbds_priority_queue_text_modify_up_timing_test_local.svg,
+ pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.pdf,
+ pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.png,
+ pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.svg,
+ pbds_priority_queue_text_pop_mem_usage_test_local.pdf,
+ pbds_priority_queue_text_pop_mem_usage_test_local.png,
+ pbds_priority_queue_text_pop_mem_usage_test_local.svg,
+ pbds_priority_queue_text_push_pop_timing_test_local.pdf,
+ pbds_priority_queue_text_push_pop_timing_test_local.png,
+ pbds_priority_queue_text_push_pop_timing_test_local.svg,
+ pbds_priority_queue_text_push_timing_test_local.pdf,
+ pbds_priority_queue_text_push_timing_test_local.png,
+ pbds_priority_queue_text_push_timing_test_local.svg,
+ pbds_rationale_null_node_updator.png,
+ pbds_resize_policy_cd.png, pbds_restoring_node_invariants.png,
+ pbds_simple_list.png,
+ pbds_text_find_timing_test_hash_local.pdf,
+ pbds_text_find_timing_test_hash_local.png,
+ pbds_text_find_timing_test_hash_local.svg,
+ pbds_text_find_timing_test_tree_like_local.pdf,
+ pbds_text_find_timing_test_tree_like_local.png,
+ pbds_text_find_timing_test_tree_like_local.svg,
+ pbds_tree_node_invalidations.png,
+ pbds_tree_node_invariants.png,
+ pbds_tree_node_updator_policy_cd.png,
+ pbds_tree_order_statistics_timing_test_local.pdf,
+ pbds_tree_order_statistics_timing_test_local.png,
+ pbds_tree_order_statistics_timing_test_local.svg,
+ pbds_tree_split_join_timing_test_local.pdf,
+ pbds_tree_split_join_timing_test_local.png,
+ pbds_tree_split_join_timing_test_local.svg,
+ pbds_tree_text_insert_timing_test_node_tree_local.pdf,
+ pbds_tree_text_insert_timing_test_node_tree_local.png,
+ pbds_tree_text_insert_timing_test_node_tree_local.svg,
+ pbds_tree_text_insert_timing_test_pat_trie_local.pdf,
+ pbds_tree_text_insert_timing_test_pat_trie_local.png,
+ pbds_tree_text_insert_timing_test_pat_trie_local.svg,
+ pbds_tree_text_insert_timing_test_vector_tree_local.pdf,
+ pbds_tree_text_insert_timing_test_vector_tree_local.png,
+ pbds_tree_text_insert_timing_test_vector_tree_local.svg,
+ pbds_tree_text_lor_find_timing_test_local.pdf,
+ pbds_tree_text_lor_find_timing_test_local.png,
+ pbds_tree_text_lor_find_timing_test_local.svg,
+ pbds_trie_node_updator_policy_cd.png,
+ pbds_update_seq_diagram.png): Add.
+
+ * doc/html/ext/pb_ds: Remove.
+ * doc/html/ext/pb_ds/(acks.html, assoc_container_tag_cd.png,
+ assoc_container_tag_cd.svg, assoc_container_traits.html,
+ assoc_design.html, assoc_examples.html,
+ associative_container_tag.html, assoc_performance_tests.html,
+ assoc_regression_tests.html, assoc_tests.html,
+ balls_and_bins.png, basic_hash_table.html,
+ basic_hash_tag.html, basic_invalidation_guarantee.html,
+ basic_tree_assoc_container_const_node_iterator.html,
+ basic_tree.html, basic_tree_tag.html, binary_heap_tag.html,
+ binary_priority_queue_random_int_push_timing_test_gcc.png,
+ binary_priority_queue_random_int_push_timing_test_local.png,
+ binary_priority_queue_random_int_push_timing_test_msvc.png,
+ binomial_heap_tag.html,
+ ccgp_hash_random_int_subscript_timing_test_insert_gcc.png,
+ ccgp_hash_random_int_subscript_timing_test_insert_local.png,
+ ccgp_hash_random_int_subscript_timing_test_insert_msvc.png,
+ cc_hash_max_collision_check_resize_trigger.html,
+ cc_hash_random_int_find_timing_test_gcc.png,
+ cc_hash_random_int_find_timing_test_local.png,
+ cc_hash_random_int_find_timing_test_msvc.png,
+ cc_hash_random_int_subscript_timing_test_find_gcc.png,
+ cc_hash_random_int_subscript_timing_test_find_local.png,
+ cc_hash_random_int_subscript_timing_test_find_msvc.png,
+ cc_hash_random_int_subscript_timing_test_insert_gcc.png,
+ cc_hash_random_int_subscript_timing_test_insert_local.png,
+ cc_hash_random_int_subscript_timing_test_insert_msvc.png,
+ cc_hash_table.html, cc_hash_tag.html, checked_by_tidy.gif
+ concepts.html, contact.html, container_base.html,
+ container_cd.png, container_cd.svg, container_tag.html,
+ counter_lu_policy.html, design.html,
+ different_underlying_dss.png, direct_mask_range_hashing.html,
+ direct_mod_range_hashing.html, disclaimer.html, ds_gen.html,
+ embedded_lists_1.png, embedded_lists_2.png,
+ embedded_lists_3.png, examples.html, exceptions.html,
+ gp_hash_random_int_find_timing_test_gcc.png,
+ gp_hash_random_int_find_timing_test_local.png,
+ gp_hash_random_int_find_timing_test_msvc.png,
+ gp_hash_random_int_subscript_timing_test_find_gcc.png,
+ gp_hash_random_int_subscript_timing_test_find_local.png,
+ gp_hash_random_int_subscript_timing_test_find_msvc.png,
+ gp_hash_random_int_subscript_timing_test_insert_gcc.png,
+ gp_hash_random_int_subscript_timing_test_insert_local.png,
+ gp_hash_random_int_subscript_timing_test_insert_msvc.png,
+ gp_hash_table.html, gp_hash_tag.html,
+ hash_based_containers.html, hash_exponential_size_policy.html,
+ hash_load_check_resize_trigger.html, hash_policy_cd.png,
+ hash_prime_size_policy.html,
+ hash_random_int_erase_mem_usage_test_gcc.png,
+ hash_random_int_erase_mem_usage_test.html,
+ hash_random_int_erase_mem_usage_test_local.png,
+ hash_random_int_erase_mem_usage_test_msvc.png,
+ hash_random_int_find_find_timing_test.html,
+ hash_random_int_subscript_find_timing_test.html,
+ hash_random_int_subscript_insert_timing_test.html,
+ hash_ranged_hash_range_hashing_fns.png,
+ hash_range_hashing_seq_diagram2.png,
+ hash_range_hashing_seq_diagram.png,
+ hash_standard_resize_policy.html,
+ hash_text_find_find_timing_test.html,
+ hash_zlob_random_int_find_find_timing_test.html,
+ hash_zlob_random_int_find_timing_test_gcc.png,
+ hash_zlob_random_int_find_timing_test_local.png,
+ hash_zlob_random_int_find_timing_test_msvc.png, index.html,
+ insert_error.html, insert_resize_sequence_diagram1.png,
+ insert_resize_sequence_diagram2.png,
+ insert_resize_sequence_diagram3.png, interface.html,
+ introduction.html, invalidation_guarantee_cd.png,
+ invalidation_guarantee_erase.png, join_error.html,
+ linear_probe_fn.html, list_update.html, list_update_tag.html,
+ lu_based_containers.html, lu.png, misc.html, motivation.html,
+ move_to_front_lu_policy.html,
+ multimap_text_find_timing_test_large.html,
+ multimap_text_find_timing_test_large_s2p_hash_gcc.png,
+ multimap_text_find_timing_test_large_s2p_hash_local.png,
+ multimap_text_find_timing_test_large_s2p_hash_msvc.png,
+ multimap_text_find_timing_test_large_s2p_tree_gcc.png,
+ multimap_text_find_timing_test_large_s2p_tree_local.png,
+ multimap_text_find_timing_test_large_s2p_tree_msvc.png,
+ multimap_text_find_timing_test_small.html,
+ multimap_text_find_timing_test_small_s2p_hash_gcc.png,
+ multimap_text_find_timing_test_small_s2p_hash_local.png,
+ multimap_text_find_timing_test_small_s2p_hash_msvc.png,
+ multimap_text_find_timing_test_small_s2p_tree_gcc.png,
+ multimap_text_find_timing_test_small_s2p_tree_local.png,
+ multimap_text_find_timing_test_small_s2p_tree_msvc.png,
+ multimap_text_insert_mem_usage_test_large.html,
+ multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png,
+ multimap_text_insert_mem_usage_test_large_s2p_hash_local.png,
+ multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png,
+ multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png,
+ multimap_text_insert_mem_usage_test_large_s2p_tree_local.png,
+ multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png,
+ multimap_text_insert_mem_usage_test_small.html,
+ multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png,
+ multimap_text_insert_mem_usage_test_small_s2p_hash_local.png,
+ multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png,
+ multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png,
+ multimap_text_insert_mem_usage_test_small_s2p_tree_local.png,
+ multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png,
+ multimap_text_insert_timing_test_large.html,
+ multimap_text_insert_timing_test_large_s2p_hash_gcc.png,
+ multimap_text_insert_timing_test_large_s2p_hash_local.png,
+ multimap_text_insert_timing_test_large_s2p_hash_msvc.png,
+ multimap_text_insert_timing_test_large_s2p_tree_gcc.png,
+ multimap_text_insert_timing_test_large_s2p_tree_local.png,
+ multimap_text_insert_timing_test_large_s2p_tree_msvc.png,
+ multimap_text_insert_timing_test_small.html,
+ multimap_text_insert_timing_test_small_s2p_hash_gcc.png,
+ multimap_text_insert_timing_test_small_s2p_hash_local.png,
+ multimap_text_insert_timing_test_small_s2p_hash_msvc.png,
+ multimap_text_insert_timing_test_small_s2p_tree_gcc.png,
+ multimap_text_insert_timing_test_small_s2p_tree_local.png,
+ multimap_text_insert_timing_test_small_s2p_tree_msvc.png,
+ node_invariant_invalidations.png, node_invariants.png,
+ null_hash_fn.html, null_lu_metadata.html,
+ null_mapped_type.html, null_probe_fn.html,
+ null_tree_node_update.html, null_trie_node_update.html,
+ ov_tree_tag.html, pairing_heap_tag.html,
+ pairing_priority_queue_text_push_pop_timing_test_gcc.png,
+ pairing_priority_queue_text_push_pop_timing_test_local.png,
+ pairing_priority_queue_text_push_pop_timing_test_msvc.png,
+ pairing_priority_queue_text_push_timing_test_gcc.png,
+ pairing_priority_queue_text_push_timing_test_local.png,
+ pairing_priority_queue_text_push_timing_test_msvc.png,
+ pat_trie.png, pat_trie_tag.html,
+ point_invalidation_guarantee.html, point_iterators_cd.png,
+ point_iterators_range_ops_1.png,
+ point_iterators_range_ops_2.png, pq_container_traits.html,
+ pq_design.html, pq_different_underlying_dss.png,
+ pq_examples.html, pq_performance_tests.html,
+ pq_regression_tests.html, pq_tests.html, prerequisites.html,
+ priority_queue.html,
+ priority_queue_random_int_push_pop_timing_test_gcc.png,
+ priority_queue_random_int_push_pop_timing_test.html,
+ priority_queue_random_int_push_pop_timing_test_local.png,
+ priority_queue_random_int_push_pop_timing_test_msvc.png,
+ priority_queue_random_int_push_timing_test_gcc.png,
+ priority_queue_random_int_push_timing_test.html,
+ priority_queue_random_int_push_timing_test_local.png,
+ priority_queue_random_int_push_timing_test_msvc.png,
+ priority_queue_tag_cd.png, priority_queue_tag_cd.svg,
+ priority_queue_tag.html,
+ priority_queue_text_join_timing_test_gcc.png,
+ priority_queue_text_join_timing_test.html,
+ priority_queue_text_join_timing_test_local.png,
+ priority_queue_text_join_timing_test_msvc.png,
+ priority_queue_text_modify_down_timing_test_gcc.png,
+ priority_queue_text_modify_down_timing_test.html,
+ priority_queue_text_modify_down_timing_test_local.png,
+ priority_queue_text_modify_down_timing_test_msvc.png,
+ priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png,
+ priority_queue_text_modify_down_timing_test_pairing_thin_local.png,
+ priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png,
+ priority_queue_text_modify_up_timing_test_gcc.png,
+ priority_queue_text_modify_up_timing_test.html,
+ priority_queue_text_modify_up_timing_test_local.png,
+ priority_queue_text_modify_up_timing_test_msvc.png,
+ priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png,
+ priority_queue_text_modify_up_timing_test_pairing_thin_local.png,
+ priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png,
+ priority_queue_text_pop_mem_usage_test_gcc.png,
+ priority_queue_text_pop_mem_usage_test.html,
+ priority_queue_text_pop_mem_usage_test_local.png,
+ priority_queue_text_pop_mem_usage_test_msvc.png,
+ priority_queue_text_push_pop_timing_test_gcc.png,
+ priority_queue_text_push_pop_timing_test.html,
+ priority_queue_text_push_pop_timing_test_local.png,
+ priority_queue_text_push_pop_timing_test_msvc.png,
+ priority_queue_text_push_timing_test_gcc.png,
+ priority_queue_text_push_timing_test.html,
+ priority_queue_text_push_timing_test_local.png,
+ priority_queue_text_push_timing_test_msvc.png,
+ PythonPoweredSmall.gif quadratic_probe_fn.html,
+ random_int_find_find_timing_test_tree_gcc.png,
+ random_int_find_find_timing_test_tree_local.png,
+ random_int_find_find_timing_test_tree_msvc.png,
+ range_invalidation_guarantee.html,
+ rationale_null_node_updator.png, rb_tree_tag.html,
+ rc_binomial_heap_tag.html, references.html, resize_error.html,
+ resize_policy_cd.png, restoring_node_invariants.png,
+ sample_probe_fn.html, sample_ranged_hash_fn.html,
+ sample_ranged_probe_fn.html, sample_range_hashing.html,
+ sample_resize_policy.html, sample_resize_trigger.html,
+ sample_size_policy.html, sample_tree_node_update.html,
+ sample_trie_access_traits.html, sample_trie_node_update.html,
+ sample_update_policy.html, simple_list.png,
+ splay_tree_tag.html, tests.html,
+ text_find_timing_test_hash_gcc.png,
+ text_find_timing_test_hash_local.png,
+ text_find_timing_test_hash_msvc.png,
+ text_find_timing_test_tree_like_gcc.png,
+ text_find_timing_test_tree_like_local.png,
+ text_find_timing_test_tree_like_msvc.png, thin_heap_tag.html,
+ tree_based_containers.html, tree.html,
+ tree_node_iterator.html, tree_node_updator_policy_cd.png,
+ tree_order_statistics_node_update.html,
+ tree_order_statistics_timing_test_gcc.png,
+ tree_order_statistics_timing_test.html,
+ tree_order_statistics_timing_test_local.png,
+ tree_order_statistics_timing_test_msvc.png,
+ tree_random_int_find_find_timing_test.html,
+ tree_split_join_timing_test_gcc.png,
+ tree_split_join_timing_test.html,
+ tree_split_join_timing_test_local.png,
+ tree_split_join_timing_test_msvc.png, tree_tag.html,
+ tree_text_find_find_timing_test.html,
+ tree_text_insert_timing_test.html,
+ tree_text_insert_timing_test_node_tree_gcc.png,
+ tree_text_insert_timing_test_node_tree_local.png,
+ tree_text_insert_timing_test_node_tree_msvc.png,
+ tree_text_insert_timing_test_pat_trie_gcc.png,
+ tree_text_insert_timing_test_pat_trie_local.png,
+ tree_text_insert_timing_test_pat_trie_msvc.png,
+ tree_text_insert_timing_test_vector_tree_gcc.png,
+ tree_text_insert_timing_test_vector_tree_local.png,
+ tree_text_insert_timing_test_vector_tree_msvc.png,
+ tree_text_lor_find_find_timing_test.html,
+ tree_text_lor_find_timing_test_gcc.png,
+ tree_text_lor_find_timing_test_local.png,
+ tree_text_lor_find_timing_test_msvc.png,
+ trie_based_containers.html, trie_const_node_iterator.html,
+ trie.html, trie_node_iterator.html,
+ trie_node_updator_policy_cd.png,
+ trie_order_statistics_node_update.html,
+ trie_prefix_search_node_update.html,
+ trie_string_access_traits.html, trie_tag.html,
+ trivial_iterator_tag.html, tutorial.html,
+ update_policy_cd.png, update_seq_diagram.png): Remove.
+
+2011-07-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/49813
+ * include/c_global/cmath: Use _GLIBCXX_CONSTEXPR and constexpr.
+
+2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
+
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Updated.
+
+2011-07-25 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/array (at): Remove constexpr when -fno-exceptions.
+ * testsuite/23_containers/array/at_neg.cc: Test.
+
+2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
+ Nathan Ridge <zeratul976@hotmail.com>
+
+ PR libstdc++/49836
+ * include/bits/stl_vector.h (vector<>::_M_emplace_back_aux):
+ Declare.
+ (vector<>::push_back(const value_type&)): Use it.
+ * include/bits/vector.tcc: Define.
+ (vector<>::emplace_back(_Args&&...)): Use it.
+ * testsuite/util/testsuite_tr1.h (CopyConsOnlyType, MoveConsOnlyType):
+ Add.
+ * testsuite/23_containers/vector/modifiers/push_back/49836.cc: New.
+ * testsuite/23_containers/deque/modifiers/push_back/49836.cc:
+ Likewise.
+ * testsuite/23_containers/deque/modifiers/push_front/49836.cc:
+ Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+ Adjust dg-error line number.
+ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+
+2011-07-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/hashtable_policy.h (_Prime_rehash_policy::_M_next_bkt,
+ _M_bkt_for_elements, _M_need_rehash): Fix typos in the last commit.
+
+2011-07-24 François Dumont <francois.cppdevs@free.fr>
+
+ * include/bits/hashtable_policy.h (_Prime_rehash_policy): Use
+ __builtin_floor rather than __builtin_ceil to compute next resize
+ value.
+ * testsuite/23_containers/unordered_set/hash_policy/load_factor.cc:
+ New.
+
+2011-07-22 Benjamin Kosnik <bkoz@redhat.com>
+ Daniel Krugler <daniel.kruegler@googlemail.com>
+
+ * include/bits/move.h (move, forward): Mark constexpr.
+ * include/bits/stl_pair.h (pair): Mark move ctors constexpr.
+ * testsuite/20_util/pair/make_pair/constexpr.cc: New.
+ * testsuite/20_util/pair/cons/constexpr.cc: Add tests.
+
+2011-07-22 Ian Lance Taylor <iant@google.com>
+
+ * fragment.am (CONFIG_CXXFLAGS): Add -frandom-seed.
+ * Makefile.in: Rebuild.
+ * doc/Makefile.in: Rebuild.
+ * include/Makefile.in: Rebuild.
+ * libsupc++/Makefile.in: Rebuild.
+ * po/Makefile.in: Rebuild.
+ * python/Makefile.in: Rebuild.
+ * src/Makefile.in: Rebuild.
+ * testsuite/Makefile.in: Rebuild.
+
+2011-07-21 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Move...
+ * testsuite/ext/pb_ds/regression/tree_set_rand.cc: ... here.
+ * testsuite/ext/pb_ds/regression/tree_no_data_map_rand_debug.cc: Move...
+ * testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc: ... here.
+ * testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Move...
+ * testsuite/ext/pb_ds/regression/tree_map_rand.cc: ... here.
+ * testsuite/ext/pb_ds/regression/tree_data_map_rand_debug.cc: Move...
+ * testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc: ... here.
+
+ * testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Move...
+ * testsuite/ext/pb_ds/regression/trie_set_rand.cc: ... here.
+ * testsuite/ext/pb_ds/regression/trie_no_data_map_rand_debug.cc: Move...
+ * testsuite/ext/pb_ds/regression/trie_set_rand_debug.cc: ... here.
+ * testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Move...
+ * testsuite/ext/pb_ds/regression/trie_map_rand.cc: ... here.
+ * testsuite/ext/pb_ds/regression/trie_data_map_rand_debug.cc: Move...
+ * testsuite/ext/pb_ds/regression/trie_map_rand_debug.cc: ... here.
+
+ * testsuite/ext/pb_ds/regression/list_update_no_data_map_rand.cc: Move.
+ * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: ...here.
+ * testsuite/ext/pb_ds/regression/list_update_no_data_map_rand_debug.cc:
+ Move...
+ * testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc: ...here.
+ * testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Move...
+ * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: ...here.
+ * testsuite/ext/pb_ds/regression/list_update_data_map_rand_debug.cc:
+ Move...
+ * testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc: ...here.
+
+ * testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Move...
+ * testsuite/ext/pb_ds/regression/hash_set_rand.cc: ...here.
+ * testsuite/ext/pb_ds/regression/hash_no_data_map_rand_debug.cc: Move...
+ * testsuite/ext/pb_ds/regression/hash_set_rand_debug.cc: ...here.
+
+ * testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Move...
+ * testsuite/ext/pb_ds/regression/hash_map_rand.cc: ...here.
+ * testsuite/ext/pb_ds/regression/hash_data_map_rand_debug.cc: Move...
+ * testsuite/ext/pb_ds/regression/hash_map_rand_debug.cc: ...here.
+
+2011-07-21 François Dumont <francois.cppdevs@free.fr>
+
+ * include/debug/safe_unordered_sequence.h,
+ safe_unordered_sequence.tcc: Rename respectively in...
+ * include/debug/safe_unordered_container.h,
+ safe_unordered_container.tcc: ...those. _Safe_unordered_sequence
+ rename _Safe_unordered_container.
+ * include/debug/safe_unordered_base.h: _Safe_unordered_sequence_base
+ rename _Safe_unordered_container_base.
+ * include/debug/unordered_map, unordered_set: Adapt to previous
+ modifications.
+ * config/abi/pre/gnu.ver: Likewise.
+ * src/debug.cc: Likewise.
+ * include/Makefile.am: Likewise.
+ * include/Makefile.in: Regenerate.
+
+2011-07-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/mutex (timed_mutex, recursive_timed_mutex): Update
+ to use steady_clock instead of monotonic_clock.
+ * config/abi/pre/gnu.ver: Export steady_clock::now.
+
+2011-07-20 Benjamin Kosnik <bkoz@redhat.com>
+ Daniel Krugler <daniel.kruegler@googlemail.com>
+
+ * include/std/array (array::at, array::operator[]): Mark constexpr.
+ * testsuite/23_containers/array/requirements/
+ constexpr_element_access.cc: Add.
+
+2011-07-20 Benjamin Kosnik <bkoz@redhat.com>
+ Daniel Krugler <daniel.kruegler@googlemail.com>
+
+ * include/std/chrono: (system_clock::is_steady): Update to N3291
+ from is_monotonic.
+ (time_point): Mark nonmember arithmetic operators constexpr.
+ * src/chrono.cc: Modify for above.
+ * src/compatibility-c++0x.cc: Same.
+ * testsuite/20_util/time_point/nonmember/constexpr.cc: New.
+ * testsuite/20_util/time_point/1.cc: Modify.
+ * testsuite/20_util/system_clock/constexpr_data.cc: Modify.
+ * testsuite/20_util/system_clock/1.cc: Modify.
+ * testsuite/20_util/monotonic_clock/constexpr_data.cc: Move to...
+ * testsuite/20_util/steady_clock/constexpr_data.cc: ...here.
+ * testsuite/30_threads/condition_variable/members/2.cc: Modify.
+ * testsuite/30_threads/condition_variable_any/members/2.cc: Modify.
+
+2011-07-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/system_error: Use noexcept.
+ * src/system_error.cc: Likewise.
+ * testsuite/19_diagnostics/error_condition/modifiers/39881.cc: Adjust.
+ * testsuite/19_diagnostics/error_condition/cons/39881.cc: Likewise.
+ * testsuite/19_diagnostics/error_code/modifiers/39882.cc: Likewise.
+ * testsuite/19_diagnostics/error_code/cons/39882.cc: Likewise.
+ * testsuite/util/testsuite_error.h: Likewise.
+
+ * include/std/system_error (error_code::error_code(_ErrorCodeEnum)):
+ Use enable_if on template parameter default.
+ (error_condition::error_condition(_ErrorConditionEnum)): Likewise.
+
+2011-07-20 Ed Smith-Rowland <3dw4rd@verizon.net>
+
+ * include/precompiled/stdc++.h: Add scoped_allocator.
+
+2011-07-20 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/bitset (operator[]): Make constexpr.
+ * testsuite/23_containers/bitset/operations/constexpr.cc: New.
+
+2011-07-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::
+ _Safe_local_iterator(const _Iterator&, size_type, const _Sequence*)):
+ Fix typo.
+
+2011-07-19 François Dumont <francois.cppdevs@free.fr>
+
+ * include/debug/safe_unordered_base.h, safe_unordered_sequence.h,
+ safe_unordered_sequence.tcc, safe_local_iterator.h,
+ safe_local_iterator.tcc: New, support for unordered sequence safe
+ local iterators.
+ * include/Makefile.am: Add previous files.
+ * include/Makefile.in: Regenerate.
+ * include/debug/unordered_map, unordered_set: Implement
+ _Safe_unordered_sequence and expose _Safe_local_iterator.
+ * include/debug/safe_iterator.h, safe_iterator.tcc: Refactor
+ _Safe_iterator::_M_get_distance static method to expose it as
+ __get_distance function and use it in _Safe_local_iterator type.
+ * include/debug/formatter.h: Add __msg_local_iter_compare_bad
+ _Debug_msg_id enum entry to notify invalid comparison between local
+ iterators from different buckets. Add _Parameter constructor from
+ _Safe_local_iterator.
+ * include/debug/functions.h: Add __valid_range overload for
+ _Safe_local_iterator.
+ * src/debug.cc: Add _Safe_unordered_sequence_base and
+ _Safe_local_iterator_base methods implementations.
+ * config/abi/pre/gnu.ver: Add export of some
+ _Safe_unordered_sequence_base and _Safe_local_iterator_base methods.
+ * testsuite/util/debug/checks.h: Add use_invalid_iterator function to
+ simulate use of a singular iterator.
+ * testsuite/util/debug/unordered_checks.h: New, several functions
+ to simulate classic invalid usage of unordered sequence local
+ iterators.
+ * testsuite/23_containers/unordered_map/debug/
+ use_erased_local_iterator_neg.cc, invalid_local_iterator_range_neg.cc,
+ use_invalid_local_iterator_neg.cc, use_invalid_iterator_neg.cc,
+ invalid_local_iterator_compare_neg.cc: New.
+ * testsuite/23_containers/unordered_multimap/debug/
+ use_erased_local_iterator_neg.cc, invalid_local_iterator_range_neg.cc,
+ use_invalid_local_iterator_neg.cc, use_invalid_iterator_neg.cc,
+ invalid_local_iterator_compare_neg.cc: New.
+ * testsuite/23_containers/unordered_set/debug/
+ use_erased_local_iterator_neg.cc, invalid_local_iterator_range_neg.cc,
+ use_invalid_local_iterator_neg.cc, use_invalid_iterator_neg.cc,
+ invalid_local_iterator_compare_neg.cc: New.
+ * testsuite/23_containers/unordered_multiset/debug/
+ use_erased_local_iterator_neg.cc, invalid_local_iterator_range_neg.cc,
+ use_invalid_local_iterator_neg.cc, use_invalid_iterator_neg.cc,
+ invalid_local_iterator_compare_neg.cc: New.
+
+2011-07-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/48430
+ * include/bits/shared_ptr.h (struct hash<shared_ptr<>>): Use
+ __hash_base.
+ * include/bits/unique_ptr.h (struct hash<unique_ptr<>>): Likewise.
+
+2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * crossconfig.m4 (*-netware): Remove.
+ * configure: Regenerate.
+
+2011-07-15 Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * config/locale/newlib/ctype_members.cc: New file.
+ * acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Add a new C locale
+ kind: newlib. Configure to use the newlib specific
+ ctype_members.cc when with_newlib is enabled.
+ * configure: Regenerate.
+
+2011-07-15 Paolo Carlini <paolo.carlini@oracle.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR libstdc++/49745
+ * acinclude.m4 ([GLIBCXX_CHECK_GTHREADS]): Check separately for
+ _POSIX_TIMEOUTS and define _GTHREADS_USE_MUTEX_TIMEDLOCK.
+ * libsupc++/guard.cc: Include <unistd.h>.
+ * testsuite/17_intro/headers/c++1998/49745.cc: New.
+ * configure: Regenerate.
+ * config.h.in: Likewise.
+
+2011-07-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49559
+ * include/bits/stl_algo.h (__move_merge_backward): Remove.
+ (__move_merge_adaptive, __move_merge_adaptive_backward): New.
+ (__merge_adaptive): Use the latter two.
+ (__rotate_adaptive): Avoid self move-assignment.
+ * include/bits/stl_algobase.h (move_backward): Fix comment.
+ * testsuite/25_algorithms/stable_sort/49559.cc: New.
+ * testsuite/25_algorithms/inplace_merge/49559.cc: Likewise.
+ * testsuite/25_algorithms/inplace_merge/moveable.cc: Extend.
+ * testsuite/25_algorithms/inplace_merge/moveable2.cc: Likewise.
+ * testsuite/util/testsuite_rvalref.h (rvalstruct::operator=
+ (rvalstruct&&)): Check for self move-assignment.
+
+2011-07-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/util/testsuite_allocator.h (propagating_allocator<>::
+ operator=(const propagating_allocator<>&)): Retun *this.
+
+2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/Makefile.am: Add new header.
+ * include/Makefile.in: Regenerate.
+ * include/std/scoped_allocator: New.
+ * doc/xml/manual/status_cxx200x.xml: Update.
+ * testsuite/20_util/scoped_allocator/1.cc: New.
+ * testsuite/20_util/scoped_allocator/propagation.cc: New.
+ * testsuite/20_util/scoped_allocator/requirements/typedefs.cc: New.
+ * testsuite/20_util/scoped_allocator/requirements/
+ explicit_instantiation.cc: New.
+
+2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/stl_vector.h: Use new allocator model in C++0x mode.
+ * include/bits/vector.tcc: Likewise.
+ * testsuite/util/testsuite_allocator.h (propagating_allocator): Define.
+ * testsuite/23_containers/vector/allocator/copy_assign.cc: New.
+ * testsuite/23_containers/vector/allocator/noexcept.cc: New.
+ * testsuite/23_containers/vector/allocator/copy.cc: New.
+ * testsuite/23_containers/vector/allocator/swap.cc: New.
+ * testsuite/23_containers/vector/allocator/move_assign.cc: New.
+ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+ Adjust dg-error line numbers.
+ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+
+2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/ext/alloc_traits.h (__allocator_always_compares_equal): New
+ trait, provide partial specializations for known allocators.
+ (__alloc_traits::construct, __alloc_traits::destroy): Overload for
+ non-standard pointer types.
+ (__alloc_traits::_S_always_equal): New trait for use with noexcept.
+ (__alloc_traits::_S_nothrow_move): Likewise.
+ (__alloc_traits::_S_nothrow_swap): Likewise.
+
+2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/ext/cast.h: Fix typo in include guard.
+ * include/ext/pointer.h (_Unqualified_type): Remove redundant
+ partial specializations for volatile types. Fix typos in comments.
+ (pointer_traits<_Pointer_adaptor<Tp>>::pointer_to): Define.
+
+2011-07-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/49668
+ * include/std/functional (__bind_simple): Define.
+ * include/std/future (_Task_setter): Parameterize by type of result
+ pointer instead of state object.
+ (_S_task_setter): Type deduction helper.
+ (_Task_state): Use _S_task_setter and __bind_simple.
+ (_Deferred_state, _Async_state): Store call wrapper directly not as
+ std::function. Use _S_task_setter and __bind_simple.
+ (_S_make_deferred_state, _S_make_async_state): Type deduction helpers.
+ (async): Use new functions and __bind_simple.
+ * include/std/mutex (call_once): Use __bind_simple.
+ * include/std/thread (thread): Likewise. Remove unused headers.
+ * src/thread.cc: Add header.
+ * testsuite/30_threads/async/49668.cc: New.
+ * testsuite/30_threads/call_once/49668.cc: New.
+ * testsuite/30_threads/thread/cons/49668.cc: New.
+ * testsuite/30_threads/thread/cons/moveable.cc: Remove unused bool.
+
+2011-07-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * configure.host (abi_baseline_subdir_switch): Describe.
+ Provide default.
+ (*-*-solaris2.[89], *-*-solaris2.1[0-9]): Override.
+ * acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Substitute
+ baseline_subdir_switch.
+ * testsuite/Makefile.am (site.exp): Emit it.
+ (baseline_subdir): Use it.
+ * testsuite/libstdc++-abi/abi.exp: Use it.
+ * configure: Regenerate.
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * libsupc++/Makefile.in: Regenerate.
+ * po/Makefile.in: Regenerate.
+ * python/Makefile.in: Regenerate.
+ * src/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2011-06-29 François Dumont <francois.cppdevs@free.fr>
+
+ * include/debug/set.h, unordered_map, multiset.h, forward_list,
+ unordered_set, vector, deque, string, list, multimap.h: Remove
+ base class default constructor calls.
+ * include/debug/map.h: Likewise and cleanup several redefinition of
+ base iterator typedef.
+
+2011-06-29 Nathan Sidwell <nathan@codesourcery.com>
+
+ * libsupc++/eh_arm.c (__cxa_type_match): Construct address of
+ thrown object here. Return succeded_with_ptr_to_base for all
+ pointer cases.
+
+2011-06-23 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc: Fix for
+ C++0x mode.
+ * testsuite/25_algorithms/sort/35588.cc: Likewise.
+ * testsuite/26_numerics/headers/complex/synopsis.cc: Likewise.
+
+2011-06-22 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/20_util/bind/socket.cc: Use variable and remove attribute.
+
+2011-06-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: Avoid -Wall
+ warning.
+
+2011-06-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/20_util/reference_wrapper/invoke.cc: Avoid -Wall warnings.
+ * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
+ * testsuite/20_util/reference_wrapper/invoke-2.cc: Likewise.
+ * testsuite/20_util/allocator_traits/members/allocate_hint.cc:
+ Likewise.
+ * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
+ * testsuite/20_util/bind/socket.cc: Likewise.
+ * testsuite/20_util/pointer_traits/pointer_to.cc: Likewise.
+ * testsuite/util/testsuite_random.h: Likewise.
+
+2011-06-22 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/Makefile.am: Add alloc_traits.h headers.
+ * include/Makefile.in: Regenerate.
+ * include/std/memory: Include uses_allocator.h explicitly.
+ * include/bits/allocator.h (allocator_traits): Move to ...
+ * include/bits/alloc_traits.h: New header.
+ * include/ext/alloc_traits.h (__alloc_traits): Extension to provide
+ a common allocator interface for C++98 and C++0x.
+ * include/bits/stl_construct.h: Use __alloc_traits.
+ * include/bits/stl_uninitialized.h: Likewise.
+
+2011-06-22 Daniel Krugler <daniel.kruegler@googlemail.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/move.h (__is_nothrow_swappable): Add.
+ (swap(_Tp(&)[_Nm], _Tp(&)[_Nm])): Use noexcept.
+ * include/bits/algorithmfwd.h: Adjust.
+ * testsuite/25_algorithms/swap/noexcept.cc: New.
+
+2011-06-21 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/Makefile.am (check_DEJAGNU_normal_targets): Add
+ check-DEJAGNUnormal[4-9].
+ (check-DEJAGNU): Split into 10 jobs for parallel testing instead of 4.
+ * testsuite/Makefile.in: Regenerated.
+
+2011-06-20 Daniel Krugler <daniel.kruegler@googlemail.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/tuple (__conv_types, __one_by_one_convertible,
+ __all_convertible): Add.
+ (tuple): Use the latter.
+ (tuple<_T1>): Remove.
+ * testsuite/20_util/uses_allocator/cons_neg.cc: Adjust dg-error
+ line number.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2011-06-14 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/ptr_traits.h (pointer_traits<T*>::pointer_to): Use
+ noexcept.
+
+2011-06-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/valarray (~valarray): Use noexcept.
+ * include/bits/unique_ptr.h (~unique_ptr): Likewise.
+ * testsuite/26_numerics/valarray/noexcept_move_construct.cc: New.
+ * testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc:
+ Likewise.
+ * testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc:
+ Likewise.
+ * testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc:
+ Likewise.
+
+2011-06-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/functional: Use noexcept.
+ * include/bits/stl_tempbuf.h: Likewise.
+
+2011-06-12 François Dumont <francois.cppdevs@free.fr>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/allocator.h (__shrink_to_fit): Rename to
+ __shrink_to_fit_aux, fix.
+ * include/bits/stl_vector.h (_M_shrink_to_fit): Declare.
+ (shrink_to_fit): Use the latter.
+ * include/debug/vector (shrink_to_fit): Likewise.
+ * include/bits/vector.tcc (_M_shrink_to_fit): Define.
+ * include/bits/stl_deque.h (_M_shrink_to_fit): Declare.
+ (shrink_to_fit): Use the latter.
+ * include/debug/deque (shrink_to_fit): Likewise.
+ * include/bits/deque.tcc (_M_shrink_to_fit): Define.
+ * include/bits/vector.tcc (vector<bool>::_M_reallocate): Add.
+ * include/bits/stl_bvector.h (_M_shrink_to_fit): Declare.
+ (shrink_to_fit): Use the latter.
+ (reserve): Use _M_reallocate, move inline.
+ (_Bvector_base<>::_S_nword): Add, use it throughout.
+ * include/debug/string (shrink_to_fit): Redo.
+ * include/ext/vstring.h (shrink_to_fit): Optimize.
+ * include/bits/basic_string.h (shrink_to_fit): Likewise.
+ * testsuite/21_strings/debug/shrink_to_fit.cc: New.
+ * testsuite/23_containers/vector/debug/shrink_to_fit.cc: Likewise.
+ * testsuite/23_containers/vector/debug/bool/shrink_to_fit.cc:
+ Likewise.
+ * testsuite/23_containers/vector/bool/capacity/shrink_to_fit.cc:
+ Likewise.
+ * testsuite/23_containers/deque/debug/shrink_to_fit.cc: Likewise.
+
+2011-06-11 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/ext/extptr_allocator.h (construct, destroy): Fix for C++0x
+ mode by overloading to take allocator's pointer type.
+ * testsuite/23_containers/vector/ext_pointer/types/2.cc: New.
+ * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
+ 2.cc: New.
+
+2011-06-11 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/20_util/allocator_traits/requirements/
+ explicit_instantiation.cc: Add another instantiation.
+
+2011-06-11 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/20_util/allocator_traits/requirements/typedefs.cc: Check
+ for allocator_type and value_type.
+
+2011-06-11 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/30_threads/packaged_task/uses_allocator.cc: New.
+ * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
+
+2011-06-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/ext/throw_allocator.h: Use noexcept.
+ * include/ext/pool_allocator.h: Likewise.
+ * include/ext/bitmap_allocator.h: Likewise.
+ * include/ext/new_allocator.h: Likewise.
+ * include/ext/malloc_allocator.h: Likewise.
+ * include/ext/array_allocator.h: Likewise.
+ * include/ext/mt_allocator.h: Likewise.
+ * include/ext/extptr_allocator.h: Likewise.
+ * testsuite/util/testsuite_allocator.h: Likewise; do not include
+ <cassert> directly, include <testsuite_hooks.h> instead.
+
+2011-06-10 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/ext/pb_ds/*: Doxygen markup redo.
+ * include/Makefile.am: Fold in constructors_destructor_fn_imps.hpp.
+ * include/Makefile.in: Regenerate.
+
+2011-06-10 Jason Merrill <jason@redhat.com>
+
+ * testsuite/20_util/bind/ref_neg.cc: Remove wrong test lines.
+
+ * testsuite/20_util/bind/ref_neg.cc: Remove dg-excess-errors,
+ fix dg-error markup.
+
+2011-06-09 Jason Merrill <jason@redhat.com>
+
+ * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust.
+
+ * testsuite/lib/prune.exp (libstdc++-dg-prune): Prune notes.
+ * testsuite/20_util/duration/cons/1_neg.cc: Remove dg-excess-errors.
+ * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
+ * testsuite/20_util/forward/1_neg.cc: Likewise.
+ * testsuite/20_util/function/cmp/cmp_neg.cc: Likewise.
+ * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
+ * testsuite/20_util/reference_wrapper/ref_neg.cc: Likewise.
+ * testsuite/20_util/tuple/comparison_operators/35480_neg.cc: Likewise.
+ * testsuite/tr1/6_containers/tuple/comparison_operators/35480_neg.cc:
+ Likewise.
+ * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
+ * testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc: Likewise.
+ * testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
+ Likewise.
+ * testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc: Likewise.
+ * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Likewise.
+ * testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_neg.cc:
+ Likewise.
+ * testsuite/tr1/2_general_utilities/shared_ptr/assign/
+ auto_ptr_rvalue_neg.cc: Likewise.
+ * testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr_neg.cc:
+ Likewise.
+ * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+ Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/map/operators/1_neg.cc: Likewise.
+ * testsuite/29_atomics/atomic_integral/operators/
+ bitwise_neg.cc: Likewise.
+ * testsuite/decimal/mixed-mode-arith_neg.cc: Likewise.
+ * testsuite/decimal/mixed-mode-cmp_neg.cc: Likewise.
+ * testsuite/decimal/operator_neg.cc: Likewise.
+
+2011-06-09 Simon Baldwin <simonb@google.com>
+
+ * scripts/extract_symvers.in: Handle processor/OS specific or
+ unknown symbol binding strings from readelf.
+
+2011-06-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/type_traits (__is_copy_assignable_impl,
+ __is_nt_copy_assignable_impl): Fix typo.
+
+2011-06-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/ext/extptr_allocator.h: Include <ext/numeric_traits.h>
+ instead of <limits>.
+ * include/bits/allocator.h: Likewise.
+
+ * include/std/chrono (duration_values<>::min): Call lowest, not min.
+
+2011-06-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/allocator.h (__shrink_to_fit): Simplify.
+ * include/bits/stl_vector.h (vector<>::shrink_to_fit): Adjust.
+ * include/bits/stl_deque.h: Likewise.
+ * include/bits/stl_bvector.h: Likewise.
+
+2011-06-07 Jason Merrill <jason@redhat.com>
+
+ * testsuite/lib/prune.exp: s/required/instantiated/.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+ * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
+ * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
+ * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
+ * testsuite/20_util/forward/1_neg.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
+ * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
+ * testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Likewise.
+ * testsuite/ext/ext_pointer/1_neg.cc: Likewise.
+ * testsuite/ext/pb_ds/example/hash_resize_neg.cc: Likewise.
+ * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Likewise.
+ * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise.
+ * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise.
+ * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Likewise.
+ * testsuite/tr1/2_general_utilities/shared_ptr/assign/
+ shared_ptr_neg.cc: Likewise.
+
+2011-06-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/move.h (struct __move_if_noexcept_cond): Add.
+ (move_if_noexcept): Use the latter.
+ * include/bits/stl_iterator.h (__make_move_if_noexcept_iterator,
+ _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR): Add.
+ * include/bits/stl_uninitialized.h
+ (__uninitialized_move_if_noexcept_a): Add.
+ * include/bits/vector.tcc (vector<>::reserve): Use
+ _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR.
+ (vector<>::_M_insert_aux, _M_fill_insert, _M_default_append,
+ _M_range_insert): Use __uninitialized_move_if_noexcept_a.
+ * testsuite/util/testsuite_rvalref.h (throwing_move_constructor):
+ Add.
+ (copycounter::copycounter(copycounter&&)): Use noexcept.
+ * testsuite/23_containers/vector/modifiers/moveable2.cc: New.
+ * testsuite/23_containers/vector/capacity/resize/moveable2.cc:
+ Likewise.
+ * testsuite/23_containers/vector/capacity/reserve/moveable2.cc:
+ Likewise.
+
+2011-06-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49293
+ * testsuite/22_locale/time_get/get_weekday/char/38081-1.cc: Tweak
+ for glibc 2.14.
+ * testsuite/22_locale/time_get/get_weekday/char/38081-2.cc: Likewise.
+
+2011-06-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/move.h (move_if_noexcept): Use __and_ and __not_.
+
+2011-06-05 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/ptr_traits.h (pointer_traits): Fix typos.
+ * include/ext/pointer.h (pointer_traits): Add partial specialization
+ for _Pointer_adapter.
+
+2011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/util/testsuite_allocator.h (tracker_allocator::construct):
+ Update to C++0x definition using type to construct as template
+ parameter.
+ (tracker_allocator::destroy): Likewise for type to destroy.
+ (uneq_allocator::construct, uneq_allocator::destroy): Likewise.
+
+2011-06-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
+ Use std::move on the allocator, use noexcept.
+ (_Hashtable<>::~_Hashtable): Use noexcept.
+ * include/bits/stl_list.h: Likewise.
+ * include/bits/forward_list.h: Likewise.
+ * include/bits/stl_vector.h: Likewise.
+ * include/bits/stl_bvector.h: Likewise.
+ * include/bits/stl_map.h (map<>::map(map&&)): Use noexcept.
+ * include/bits/stl_set.h: Likewise.
+ * include/bits/stl_multimap.h: Likewise.
+ * include/bits/stl_multiset.h: Likewise.
+ * include/bits/stl_tree.h (_Rb_tree<>::_Rb_tree(_Rb_tree&&)): Use
+ std::move on the allocator.
+ (_Rb_tree<>::~_Rb_tree): Use noexcept.
+ * include/bits/stl_deque.h: Likewise.
+ * include/bits/basic_string.h (basic_string<>::~basic_string): Use
+ noexcept.
+ * include/ext/vstring.h (__versa_string<>::~__versa_string): Likewise.
+ * include/debug/set.h: Adjust.
+ * include/debug/unordered_map: Likewise.
+ * include/debug/multiset.h: Likewise.
+ * include/debug/forward_list: Likewise.
+ * include/debug/vector: Likewise.
+ * include/debug/unordered_set: Likewise.
+ * include/debug/deque: Likewise.
+ * include/debug/map.h: Likewise.
+ * include/debug/string: Likewise.
+ * include/debug/list: Likewise.
+ * include/debug/multimap.h: Likewise.
+ * include/profile/set.h: Likewise.
+ * include/profile/unordered_map: Likewise.
+ * include/profile/multiset.h: Likewise.
+ * include/profile/forward_list: Likewise.
+ * include/profile/unordered_set: Likewise.
+ * include/profile/vector: Likewise.
+ * include/profile/deque: Likewise.
+ * include/profile/map.h: Likewise.
+ * include/profile/list: Likewise.
+ * include/profile/multimap.h: Likewise.
+ * testsuite/21_strings/basic_string/cons/wchar_t/
+ noexcept_move_construct.cc: New.
+ * testsuite/21_strings/basic_string/cons/char/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/ext/vstring/cons/noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/unordered_map/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/multimap/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/set/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/forward_list/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/unordered_set/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/vector/bool/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/vector/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/multiset/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/list/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/cons/
+ noexcept_move_construct.cc: Likewise.
+ * testsuite/23_containers/map/cons/noexcept_move_construct.cc
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ assign_neg.cc: Adjust dg-error line numbers.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+
+ * include/bits/move.h (swap): Use __and_ in the noexcept.
+ * include/bits/algorithmfwd.h: Adjust.
+
+2011-05-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/basic_string.h: Use noexcept per the FDIS (minus
+ compare(const string&), which uses char_traits::compare, which
+ isn't noexcept; also no noexcept in the move assignment operator
+ and move assign, see c++std-lib-30855).
+ * include/bits/basic_string.tcc: Likewise.
+ * include/ext/vstring.h: Likewise.
+ * include/ext/vstring.tcc: Likewise.
+ * include/debug/string: Likewise.
+
+2011-05-31 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/status_cxx200x.xml: Update.
+ * doc/html/*: Regenerate.
+
+2011-05-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/type_traits (__or_, __and_): Add trivial definitions
+ for a single element.
+ * include/bits/stl_pair.h: Use __and_ in noexcept specs and
+ constraints.
+ (pair<>::pair(pair&&)): Define.
+ (pair<>::pair(const pair<>&)): Constrain with is_convertible.
+ (pair<>::pair(pair<>&&)): Likewise, remove noexcept.
+ * include/std/tuple: Use __and_ in noexcept specs and constraints.
+ (_Tuple_impl<>::_Tuple_impl(allocator_arg_t, const _Alloc&,
+ _Tuple_impl&&)): Remove noexcept.
+ (tuple<>::tuple(_UElements&&...), tuple(const tuple<_UElements...>&),
+ tuple(tuple<_UElements...>&&), tuple(const pair<_U1, _U2>&),
+ tuple(pair<_U1, _U2>&&)): Constrain with is_convertible.
+ * testsuite/20_util/tuple/moveable2.cc: Use = delete.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+ Adjust dg-error line numbers.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+ * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2011-05-31 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/tuple: Restore is_convertible constraint.
+ * testsuite/20_util/tuple/cons/allocate_noncopyable.cc: Remove.
+
+2011-05-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49236
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
+ line number.
+
+2011-05-30 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/tuple: Implement uses-allocator construction.
+ * include/bits/allocator.h (uses_allocator): Move to ...
+ * include/bits/uses_allocator.h: New file.
+ * include/Makefile.am: Add new header.
+ * include/Makefile.in: Regenerate.
+ * testsuite/20_util/uses_allocator/cons_neg.cc: New.
+ * testsuite/20_util/uses_allocator/construction.cc: New.
+ * testsuite/20_util/tuple/cons/allocate_noncopyable.cc: New.
+ * testsuite/20_util/tuple/cons/allocators.cc: New.
+
+2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/20_util/pointer_traits/pointer_to.cc: Fix.
+
+2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * acinclude.m4: Define GLIBCXX_CHECK_GET_NPROCS and
+ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN.
+ * configure.ac: Use them. Increase minor version.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+ * include/std/thread (thread::hardware_concurrency): Remove inline
+ definition.
+ * src/thread.cc (thread::hardware_concurrency): Define.
+ * config/abi/pre/gnu.ver: Export new symbol @3.4.17
+ * testsuite/util/testsuite_abi.cc: Add new version.
+ * testsuite/lib/libstdc++.exp (check_v3_target_nprocs): Add.
+ * testsuite/lib/dg-options.exp (dg-require-nprocs): Add.
+ * testsuite/30_threads/thread/members/hardware_concurrency.cc: Use
+ dg-require-nprocs and verify hardware_concurrency returns non-zero.
+
+2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/20_util/pointer_traits/pointer_to.cc: New.
+
+2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/Makefile.am: Add new ptr_traits.h header.
+ * include/Makefile.in: Regenerate.
+ * include/bits/ptr_traits.h (pointer_traits): New.
+ * include/bits/allocator.h (allocator_traits): Add.
+ * include/ext/array_allocator.h (construct, destroy): Update C++0x
+ versions.
+ * include/ext/bitmap_allocator.h (construct, destroy): Likewise.
+ * include/ext/extptr_allocator.h (construct, destroy): Likewise.
+ * include/ext/malloc_allocator.h (construct, destroy): Likewise.
+ * include/ext/mt_allocator.h (construct, destroy): Likewise.
+ * include/ext/new_allocator.h (construct, destroy): Likewise.
+ * include/ext/pool_allocator.h (construct, destroy): Likewise.
+ * include/ext/throw_allocator.h (construct, destroy): Likewise.
+ * testsuite/20_util/allocator_traits/requirements/typedefs.cc: New.
+ * testsuite/20_util/allocator_traits/requirements/
+ explicit_instantiation.cc: New.
+ * testsuite/20_util/allocator_traits/members/max_size.cc: New.
+ * testsuite/20_util/allocator_traits/members/select.cc: New.
+ * testsuite/20_util/allocator_traits/members/construct.cc: New.
+ * testsuite/20_util/allocator_traits/members/allocate_hint.cc: New.
+ * testsuite/20_util/allocator_traits/members/destroy.cc: New.
+ * testsuite/20_util/pointer_traits/requirements/typedefs.cc: New.
+ * testsuite/20_util/pointer_traits/requirements/
+ explicit_instantiation.cc: New.
+
+2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/future (launch): Update enumerators and define
+ operators required for bitmask type. Remove trailing whitespace.
+ * src/future.cc: Remove trailing whitespace.
+ * testsuite/30_threads/async/any.cc: Adjust.
+ * testsuite/30_threads/async/sync.cc: Adjust.
+ * testsuite/30_threads/async/launch.cc: New.
+
+2011-05-28 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/future: Use noexcept.
+ * src/future.cc: Likewise.
+
+2011-05-27 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/thread (this_thread::sleep_until): Move after sleep_for.
+
+2011-05-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49187
+ * include/parallel/losertree.h: Add missing using declarations
+ of _Base::_M_comp.
+ * include/parallel/algobase.h: Include <parallel/algorithmfwd.h>.
+ * include/parallel/multiway_merge.h: Include <parallel/
+ multiseq_selection.h>, forward declare __merge_advance.
+ * include/parallel/multiseq_selection.h: Don't include <parallel/
+ sort.h> here.
+ * include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Fix
+ qualification of upper_bound.
+
+ * testsuite/ext/pb_ds/regression/tree_no_data_map_rand_debug.cc:
+ Use dg-require-debug-mode.
+ * testsuite/ext/pb_ds/regression/tree_data_map_rand_debug.cc:
+ Likewise.
+ * testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc:
+ Likewise.
+ * testsuite/ext/pb_ds/regression/trie_no_data_map_rand_debug.cc:
+ Likewise.
+ * testsuite/ext/pb_ds/regression/trie_data_map_rand_debug.cc:
+ Likewise.
+ * testsuite/ext/pb_ds/regression/list_update_no_data_map_rand_debug.cc:
+ Likewise.
+ * testsuite/ext/pb_ds/regression/list_update_data_map_rand_debug.cc:
+ Likewise.
+ * testsuite/ext/pb_ds/regression/hash_no_data_map_rand_debug.cc:
+ Likewise.
+ * testsuite/ext/pb_ds/regression/hash_data_map_rand_debug.cc:
+ Likewise.
+
+ * include/parallel/algo.h: Minor uglification fixes.
+
+2011-05-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * src/list.cc: Use noexcept per the FDIS.
+ * src/compatibility-list-2.cc: Likewise.
+ * include/debug/set.h: Likewise.
+ * include/debug/unordered_map: Likewise.
+ * include/debug/multiset.h: Likewise.
+ * include/debug/forward_list: Likewise.
+ * include/debug/unordered_set: Likewise.
+ * include/debug/vector: Likewise.
+ * include/debug/map.h: Likewise.
+ * include/debug/deque: Likewise.
+ * include/debug/list: Likewise.
+ * include/debug/multimap.h: Likewise.
+ * include/profile/set.h: Likewise.
+ * include/profile/unordered_map: Likewise.
+ * include/profile/multiset.h: Likewise.
+ * include/profile/forward_list: Likewise.
+ * include/profile/vector: Likewise.
+ * include/profile/unordered_set: Likewise.
+ * include/profile/map.h: Likewise.
+ * include/profile/deque: Likewise.
+ * include/profile/list: Likewise.
+ * include/profile/multimap.h: Likewise.
+ * include/bits/hashtable.h: Likewise.
+ * include/bits/stl_list.h: Likewise.
+ * include/bits/stl_map.h: Likewise.
+ * include/bits/hashtable_policy.h: Likewise.
+ * include/bits/stl_set.h: Likewise.
+ * include/bits/forward_list.h: Likewise.
+ * include/bits/stl_multimap.h: Likewise.
+ * include/bits/stl_vector.h: Likewise.
+ * include/bits/stl_deque.h: Likewise.
+ * include/bits/stl_multiset.h: Likewise.
+ * include/bits/stl_bvector.h: Likewise.
+ * include/bits/stl_tree.h: Likewise.
+
+2011-05-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/stl_queue.h: Use noexcept per the FDIS.
+ * include/bits/stl_stack.h: Likewise.
+
+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.
+
+2011-05-26 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/documentation_hacking.xml: Minor corrections.
+
+2011-05-26 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/mutex: Add doxygen comments.
+
+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.
+
+2011-05-26 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * libsupc++/guard.cc: Fix comments.
+
+2011-05-25 Ian Lance Taylor <iant@google.com>
+
+ PR libstdc++/49060
+ * include/backward/hashtable.h (hashtable::erase): Don't crash if
+ erasing first and another element with a reference to the other
+ element.
+ * testsuite/backward/hash_set/49060.cc: New.
+
+2011-05-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/random.h (random_device::min, max): Specify constexpr.
+
+2011-05-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/thread: Use noexcept throughout per the FDIS.
+ * include/std/mutex: Likewise.
+
+2011-05-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/20_util/duration/arithmetic/dr2020.cc: Fix typo.
+
+2011-05-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49151
+ * include/std/chrono (operator+, operator-, operator*, operator/,
+ operator&): Implement LWG 2020 [WP]; specify constexpr.
+ * testsuite/20_util/duration/arithmetic/dr2020.cc: New.
+
+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/complex/cons/48760_c++0x.cc: Likewise.
+ * testsuite/26_numerics/headers/cmath/19322.cc: Likewise.
+
+2011-05-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/c++config (_GLIBCXX_NOTHROW): Update for noexcept.
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error
+ line number.
+
+2011-05-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/37144
+ PR libstdc++/28457
+ Interface changes for ext/pb_ds.
+ PB_DS_BASE_C_DEC to unique PB_DS_*_BASE macros.
+ * include/ext/pb_ds/assoc_container.hpp (container_base): Remove.
+ (basic_hash_table, basic_branch, list_update): Derive from
+ container_base_dispatch.
+ * include/ext/pb_ds/list_update_policy.hpp (null_lu_metadata): Remove.
+ (move_to_front_lu_policy): To lu_move_to_front_policy.
+ (counter_lu_policy): To lu_counter_policy.
+ * include/ext/pb_ds/tree_policy.hpp (null_tree_node_update): Remove.
+ * include/ext/pb_ds/tag_and_trait.hpp (container_base_dispatch): Adjust
+ template parameters, declare here.
+ (null_mapped_type) Remove.
+ (null_type): Just use this for template tricks everywhere.
+ * include/ext/pb_ds/hash_policy.hpp (null_hash_fn, null_probe_fn):
+ Remove.
+ * include/ext/pb_ds/trie_policy.hpp (null_trie_node_update): Remove.
+ (string_trie_e_access_traits): To trie_string_access_traits.
+ * include/ext/pb_ds/priority_queue.hpp: Use container_base_dispatch.
+
+ File changes.
+ * include/Makefile.am (pb_headers): Removed and changed file names.
+ * include/Makefile.in: Regenerated.
+ * include/ext/pb_ds/detail/basic_types.hpp: Remove.
+ * include/ext/pb_ds/detail/bin_search_tree_/
+ cond_dtor_entry_dealtor.hpp: Remove.
+ * include/ext/pb_ds/detail/bin_search_tree_/
+ cond_key_dtor_entry_dealtor.hpp: Remove.
+ * include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp: Move..
+ * include/ext/pb_ds/detail/binary_heap_/
+ point_const_iterator.hpp: ..here.
+ * include/ext/pb_ds/detail/basic_tree_policy: Move to...
+ * include/ext/pb_ds/detail/branch_policy: This.
+ * include/ext/pb_ds/detail/branch_policy/
+ basic_tree_policy_base.hpp: Move...
+ * include/ext/pb_ds/detail/branch_policy/branch_policy.hpp: ...here.
+ * include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp: Add.
+ * include/ext/pb_ds/detail/branch_policy/traits.hpp: Add.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ null_metadata.hpp: Remove.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ const_point_iterator.hpp: Move...
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ point_const_iterator.hpp: ...here.
+ * include/ext/pb_ds/detail/list_update_policy/
+ counter_lu_metadata.hpp: Move..
+ * include/ext/pb_ds/detail/list_update_policy/
+ lu_counter_metadata.hpp: ...here.
+ * include/ext/pb_ds/detail/list_update_policy/
+ counter_lu_policy_imp.hpp: Remove.
+ * include/ext/pb_ds/detail/list_update_policy/
+ mtf_lu_policy_imp.hpp: Remove.
+ * include/ext/pb_ds/detail/trie_policy/
+ string_trie_e_access_traits_imp.hpp: Move...
+ * include/ext/pb_ds/detail/trie_policy/
+ sample_trie_access_traits.hpp: ...here.
+ * include/ext/pb_ds/detail/trie_policy/
+ sample_trie_e_access_traits.hpp: Move...
+ * include/ext/pb_ds/detail/trie_policy/
+ trie_string_access_traits_imp.hpp: ...here.
+ * include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp: Remove.
+ * include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp: Remove.
+ * include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp: Remove.
+ * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: New, fold all
+ types found in the following files into pat_trie_base.
+ * include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/
+ cond_dtor_entry_dealtor.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/head.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/leaf.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/node_base.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp: Folded.
+ * include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp: Move...
+ * include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp: ...here.
+ * include/ext/pb_ds/detail/unordered_iterator/
+ const_point_iterator.hpp: Move...
+ * include/ext/pb_ds/detail/unordered_iterator/
+ point_const_iterator.hpp: ...here.
+
+
+ Adjust for above changes.
+ * include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp: Same.
+ * include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp: Same.
+ * include/ext/pb_ds/detail/resize_policy/
+ sample_resize_trigger.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_base_/
+ binomial_heap_base_.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_base_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_base_/
+ split_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/container_base_dispatch.hpp: Same. Adjust
+ for template parameter ordering change.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ erase_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ constructor_destructor_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ insert_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ policy_access_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ resize_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ constructor_destructor_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ insert_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ entry_list_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ find_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ debug_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ constructor_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ cond_key_dtor_entry_dealtor.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ debug_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ erase_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ iterators_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ resize_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ standard_policies.hpp: Same.
+ * include/ext/pb_ds/detail/tree_trace_base.hpp: Same.
+ * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Same.
+ * include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp: Same.
+ * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/traits.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/
+ policy_access_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/traits.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/
+ split_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_policy/
+ sample_update_policy.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ trace_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ erase_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ constructor_destructor_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ insert_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ policy_access_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ resize_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ constructor_destructor_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ insert_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ iterator_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ find_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ find_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ debug_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ constructor_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ debug_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ erase_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ resize_no_store_hash_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ standard_policies.hpp: Same.
+ * include/ext/pb_ds/detail/standard_policies.hpp: Same.
+ * include/ext/pb_ds/detail/types_traits.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp: Same.
+ * include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Same.
+ * include/ext/pb_ds/detail/tree_policy/
+ sample_tree_node_update.hpp: Same.
+ * include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp: Same.
+ * include/ext/pb_ds/detail/trie_policy/
+ sample_trie_node_update.hpp: Same.
+ * include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp: Same.
+ * include/ext/pb_ds/detail/trie_policy/
+ prefix_search_node_update_imp.hpp: Same.
+ * include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Same.
+ * include/ext/pb_ds/detail/cond_dealtor.hpp: Same.
+ * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Same.
+ Adjust for template parameter change, fold into
+ container_base_dispatch.
+ * include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pairing_heap_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Same.
+ * include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp: Same.
+ * include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/type_utils.hpp: Same.
+ * include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp: Same.
+ * include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ policy_access_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ left_child_next_sibling_heap_.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ const_iterator.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ node.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ iterators_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Same.
+ * include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/thin_heap_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/traits.hpp: Same.
+ * include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/debug_map_base.hpp: Same.
+ * include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Same.
+ * include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp: Same.
+ * include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp: Same.
+ * include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp: Same.
+ * include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp: Same.
+ * include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Same.
+ * include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/node.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp: Same.
+ * include/ext/pb_ds/detail/splay_tree_/traits.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/
+ entry_metadata_base.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/
+ constructor_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/
+ rc_binomial_heap_.hpp: Same.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Same.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/
+ split_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/rb_tree_map_/traits.hpp: Same.
+
+
+ Documentation changes.
+ * include/ext/pb_ds/*: Add doxygen markup.
+ * doc/doxygen/user.cfg.in: Add details for extracting comments
+ from pb_ds.
+ * scripts/run_doxygen: Fixup __gnu_pb_ds::detail.
+ * scripts/make_graph.py: Move to svg output. Re-format generated tables.
+
+ * doc/Makefile.am (stamp-html-copy): New rule.
+ (stamp-html): Use it to copy non-generated files into html docs.
+ * doc/Makefile.in: Regenerated.
+
+ * doc/html/ext/pb_ds/sample_trie_e_access_traits.html: Move...
+ * doc/html/ext/pb_ds/trie_string_access_traits.html: ...here.
+ * doc/html/ext/pb_ds/string_trie_e_access_traits.html: Move..
+ * doc/html/ext/pb_ds/sample_trie_access_traits.html: ...here.
+
+ * doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png,
+ hash_random_int_erase_mem_usage_test_local.png,
+ multimap_text_insert_mem_usage_test_small_s2p_hash_local.png,
+ tree_text_insert_timing_test_pat_trie_local.png ,
+ multimap_text_insert_mem_usage_test_small_s2p_tree_local.png ,
+ priority_queue_text_modify_down_timing_test_local.png,
+ gp_hash_random_int_subscript_timing_test_find_local.png,
+ text_find_timing_test_hash_local.png,
+ multimap_text_insert_timing_test_small_s2p_hash_local.png,
+ multimap_text_insert_timing_test_small_s2p_tree_local.png,
+ multimap_text_insert_mem_usage_test_large_s2p_hash_local.png,
+ multimap_text_insert_mem_usage_test_large_s2p_tree_local.png,
+ multimap_text_insert_timing_test_large_s2p_hash_local.png,
+ hash_zlob_random_int_find_timing_test_local.png,
+ multimap_text_insert_timing_test_large_s2p_tree_local.png,
+ binary_priority_queue_random_int_push_timing_test_local.png,
+ priority_queue_text_pop_mem_usage_test_local.png,
+ priority_queue_text_modify_down_timing_test_pairing_thin_local.png,
+ tree_split_join_timing_test_local.png,
+ multimap_text_find_timing_test_small_s2p_hash_local.png,
+ ccgp_hash_random_int_subscript_timing_test_insert_local.png,
+ priority_queue_random_int_push_pop_timing_test_local.png,
+ multimap_text_find_timing_test_small_s2p_tree_local.png,
+ gp_hash_random_int_subscript_timing_test_insert_local.png,
+ priority_queue_text_push_timing_test_local.png,
+ cc_hash_random_int_subscript_timing_test_find_local.png,
+ tree_text_insert_timing_test_vector_tree_local.png,
+ multimap_text_find_timing_test_large_s2p_hash_local.png,
+ pairing_priority_queue_text_push_timing_test_local.png,
+ tree_order_statistics_timing_test_local.png,
+ priority_queue_text_push_pop_timing_test_local.png,
+ text_find_timing_test_tree_like_local.png,
+ multimap_text_find_timing_test_large_s2p_tree_local.png,
+ priority_queue_text_modify_up_timing_test_pairing_thin_local.png,
+ cc_hash_random_int_subscript_timing_test_insert_local.png,
+ priority_queue_text_modify_up_timing_test_local.png,
+ random_int_find_find_timing_test_tree_local.png,
+ priority_queue_random_int_push_timing_test_local.png,
+ tree_text_insert_timing_test_node_tree_local.png,
+ pairing_priority_queue_text_push_pop_timing_test_local.png,
+ gp_hash_random_int_find_timing_test_local.png,
+ cc_hash_random_int_find_timing_test_local.png,
+ priority_queue_text_join_timing_test_local.png: Update local pngs.
+
+
+ Testsuite changes.
+ * testsuite/ext/pb_ds/regression/tree_no_data_map_rand_debug.cc: New.
+ * testsuite/ext/pb_ds/regression/tree_data_map_rand_debug.cc: New.
+ * testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc: New.
+ * testsuite/ext/pb_ds/regression/trie_no_data_map_rand_debug.cc: New.
+ * testsuite/ext/pb_ds/regression/trie_data_map_rand_debug.cc: New.
+ * testsuite/ext/pb_ds/regression/list_update_no_data_map_rand_debug.cc:
+ New.
+ * testsuite/ext/pb_ds/regression/list_update_data_map_rand_debug.cc:
+ New.
+ * testsuite/ext/pb_ds/regression/hash_no_data_map_rand_debug.cc: New.
+ * testsuite/ext/pb_ds/regression/hash_data_map_rand_debug.cc: New.
+
+ * testsuite/ext/pb_ds/regression/list_update_data_map_rand.cc: Fix typo.
+
+ * testsuite/ext/pb_ds/example/basic_set.cc: Update.
+ * testsuite/ext/pb_ds/example/ranged_hash.cc: Same.
+ * testsuite/ext/pb_ds/example/tree_order_statistics.cc: Same.
+ * testsuite/ext/pb_ds/example/trie_prefix_search.cc: Same.
+ * testsuite/ext/pb_ds/example/trie_dna.cc: Same.
+ * testsuite/ext/pb_ds/example/tree_intervals.cc: Same.
+ * testsuite/ext/pb_ds/example/basic_multimap.cc: Same.
+ * testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc:
+ Same.
+ * testsuite/performance/ext/pb_ds/tree_split_join_timing.cc: Same.
+ * testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc: Same.
+ * testsuite/data/make_graph_test_infos.xml: Same.
+ * testsuite/util/regression/common_type.hpp: Same.
+ * testsuite/util/regression/trait/assoc/native_type_trait.hpp: Same.
+ * testsuite/util/regression/trait/assoc/trait.hpp: Same.
+ * testsuite/util/regression/trait/assoc/type_trait.hpp: Same.
+ * testsuite/util/regression/rand/priority_queue/
+ rand_regression_test.hpp: Same.
+ * testsuite/util/regression/rand/priority_queue/
+ container_rand_regression_test.tcc: Same.
+ * testsuite/util/regression/rand/assoc/rand_regression_test.hpp: Same.
+ * testsuite/util/regression/rand/assoc/container_rand_regression_test.h
+ * testsuite/util/regression/rand/assoc/
+ container_rand_regression_test.tcc: Same.
+ * testsuite/util/native_type/native_priority_queue.hpp: Same.
+ * testsuite/util/native_type/native_multimap.hpp: Same.
+ * testsuite/util/native_type/native_hash_multimap.hpp: Same.
+ * testsuite/util/native_type/native_set.hpp: Same.
+ * testsuite/util/native_type/native_map.hpp: Same.
+ * testsuite/util/native_type/native_hash_set.hpp: Same.
+ * testsuite/util/native_type/native_hash_map.hpp: Same.
+ * testsuite/util/testsuite_containers.h
+ * testsuite/util/common_type/priority_queue/common_type.hpp: Same.
+ * testsuite/util/common_type/assoc/common_type.hpp: Same.
+ * testsuite/util/common_type/assoc/string_form.hpp: Same.
+ * testsuite/util/common_type/assoc/template_policy.hpp: Same.
+ * testsuite/util/common_type/assoc/detail/
+ trigger_policy_string_form.hpp: Same.
+ * testsuite/util/common_type/assoc/detail/ds_string_form.hpp: Same.
+ * testsuite/util/common_type/assoc/detail/
+ size_policy_string_form.hpp: Same.
+ * testsuite/util/common_type/assoc/detail/
+ probe_fn_string_form.hpp: Same.
+ * testsuite/util/common_type/assoc/detail/
+ tree_supports_order_statistics.hpp: Same.
+ * testsuite/util/common_type/assoc/detail/
+ trie_supports_prefix_search.hpp: Same.
+ * testsuite/util/common_type/assoc/detail/
+ list_update_policy_string_form.hpp: Same.
+ * testsuite/util/common_type/assoc/detail/
+ trie_supports_order_statistics.hpp: Same.
+ * testsuite/util/common_type/assoc/native_set.hpp: Same.
+ * testsuite/util/performance/assoc/timing/common_type.hpp: Same.
+ * testsuite/util/performance/assoc/timing/multimap_find_test.hpp: Same.
+ * testsuite/util/performance/assoc/multimap_common_type.hpp: Same.
+
+2011-05-23 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/streambuf_iterator.h: Use noexcept per the FDIS.
+ (istreambuf_iterator<>::istreambuf_iterator(const
+ istreambuf_iterator&), ~istreambuf_iterator()): Add defaulted
+ in C++0x mode.
+
+2011-05-23 Jason Merrill <jason@redhat.com>
+
+ * libsupc++/exception_ptr.h: Fix compilation in C++0x mode.
+
+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.
+
+2011-05-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/unique_ptr.h: Use noexcept per the FDIS.
+
+2011-05-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/21_strings/basic_string/requirements/exception/
+ propagation_consistent.cc: Fix vs POD-ness of value_type.
+ * testsuite/21_strings/basic_string/requirements/exception/
+ basic.cc: Likewise.
+ * testsuite/ext/vstring/requirements/exception/
+ propagation_consistent.cc: Likewise.
+ * testsuite/ext/vstring/requirements/exception/basic.cc: Likewise.
+
+2011-05-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/char_traits.h: Use noexcept throughout.
+ * include/std/typeindex: Likewise.
+
+ * include/std/tuple (_Tuple_impl<>_Tuple_impl(_Tuple_impl&&)): Use
+ noexcept; adjust callers.
+ * include/bits/stl_pair.h (pair<>::pair(pair<>&&)): Use noexcept.
+ * testsuite/20_util/tuple/cons/noexcept_move_construct.cc: New.
+ * testsuite/20_util/pair/cons/noexcept_move_construct.cc: Likewise.
+ * testsuite/20_util/pair/noexcept_swap.cc: Likewise.
+ * testsuite/20_util/pair/noexcept_move_assign.cc: Likewise.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
+ line numbers.
+
+2011-05-20 Jason Merrill <jason@redhat.com>
+
+ * include/ext/pb_ds/assoc_container.hpp: Explicitly qualify calls to
+ functions from dependent bases.
+ * include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/rb_tree_map_/
+ split_join_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/splay_tree_/
+ split_join_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/tree_policy/
+ order_statistics_imp.hpp: Likewise.
+ * include/ext/pb_ds/detail/trie_policy/
+ prefix_search_node_update_imp.hpp: Likewise.
+ * include/ext/rc_string_base.h: Likewise.
+ * include/ext/rope: Likewise.
+ * include/ext/ropeimpl.h: Likewise.
+ * testsuite/util/exception/safety.h: Likewise.
+ * testsuite/util/native_type/native_priority_queue.hpp: Likewise.
+ * testsuite/util/testsuite_io.h: Likewise.
+ * include/std/functional: Declare mem_fn earlier.
+ * include/tr1/functional: Likewise.
+ * include/tr1/exp_integral.tcc: Declare __expint_E1 earlier.
+
+2011-05-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/tuple (tuple_element<__i, const _Tp>,
+ tuple_element<__i, volatile _Tp>, tuple_element<__i,
+ const volatile _Tp>, tuple_size<const _Tp>, tuple_size<volatile _Tp>,
+ tuple_size<const volatile _Tp>): Add.
+ * include/std/utility (tuple_size<std::pair<_Tp1, _Tp2>>): Tweak.
+ * include/std/array (tuple_size<array<_Tp, _Nm>>): Likewise.
+ * testsuite/20_util/tuple/cv_tuple_size.cc: New.
+ * testsuite/20_util/tuple/cv_tuple_element.cc: Likewise.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Tweak dg-warning
+ line number.
+
+2011-05-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/tuple (tuple<>::operator=(tuple&&)): Specify as
+ noexcept.
+ (__get_helper): Likewise.
+ (_Head_base<>::_M_head, _Tuple_impl<>::_M_head, _M_tail): Likewise.
+ * include/bits/move.h (swap): Likewise.
+ * include/bits/algorithmfwd.h (swap): Adjust.
+ * include/bits/stl_pair.h (pair<>::operator=(pair&&)): Spec noexcept.
+ * testsuite/util/testsuite_allocator.h (uneq_allocator): In C++0x
+ mode, prefer delete to access control to make the type not copy
+ assignable.
+ * testsuite/util/testsuite_tr1.h: Add test classes.
+ * testsuite/20_util/tuple/noexcept_swap.cc: New.
+ * testsuite/20_util/tuple/noexcept_move_assign.cc: Likewise.
+ * testsuite/25_algorithms/reverse/moveable.cc: Likewise, prefer
+ delete to access control.
+ * testsuite/25_algorithms/swap_ranges/moveable.cc: Likewise.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-warning
+ line numbers.
+
+2011-05-19 Daniel Krugler <daniel.kruegler@googlemail.com>
+
+ * testsuite/util/testsuite_tr1.h: Add test classes.
+ * testsuite/20_util/is_nothrow_assignable/value.cc: Add.
+
+2011-05-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/type_traits (is_assignable, is_copy_assignable,
+ is_move_assignable, is_nothrow_assignable, is_nothrow_copy_assignable,
+ is_nothrow_move_assignable): Add; minor tweaks elsewhere.
+ (has_nothrow_copy_assign): Remove.
+ * testsuite/util/testsuite_tr1.h: Add test classes.
+ * testsuite/20_util/is_assignable/requirements/typedefs.cc: Add.
+ * testsuite/20_util/is_assignable/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_nothrow_assignable/value.cc: Likewise.
+ * testsuite/20_util/is_nothrow_assignable/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/is_nothrow_assignable/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_move_assignable/value.cc: Likewise.
+ * testsuite/20_util/is_move_assignable/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/is_move_assignable/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_copy_assignable/value.cc: Likewise.
+ * testsuite/20_util/is_copy_assignable/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/is_copy_assignable/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_nothrow_move_assignable/value.cc: Likewise.
+ * testsuite/20_util/is_nothrow_move_assignable/requirements/
+ typedefs.cc: Likewise.
+ * testsuite/20_util/is_nothrow_move_assignable/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_nothrow_copy_assignable/value.cc: Likewise.
+ * testsuite/20_util/is_nothrow_copy_assignable/requirements/
+ typedefs.cc: Likewise.
+ * testsuite/20_util/is_nothrow_copy_assignable/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+ dg-error line numbers.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+
+2011-05-18 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/shared_ptr_base.h: Use noexcept. Define special member
+ functions as defaulted/deleted.
+ * include/bits/shared_ptr.h: Use noexcept.
+ * 20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error line numbers.
+ * 20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2011-05-18 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/bitmap_allocator.xml: Fix typos.
+
+2011-05-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * libsupc++/initializer_list: Use noexcept specifier.
+ (initializer_list<>::size, begin, end): Qualify as const.
+ * include/bits/move.h (__addressof, forward, move, addressof): Specify
+ as noexcept.
+ * include/std/bitset: Use noexcept specifier throughout.
+ * include/debug/bitset: Update.
+ * include/profile/bitset: Likewise.
+
+2011-05-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/tuple: Use noexcept where appropriate.
+ (tuple<>::swap): Rework implementation.
+ (_Head_base<>::_M_swap_impl): Remove.
+ (get(std::tuple<>&&)): Add.
+ * testsuite/20_util/tuple/element_access/get2.cc: New.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+ line number.
+
+2011-05-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/utility: Simplify the last commit, the whole
+ std::get code is C++0x only.
+
+2011-05-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/utility (get(std::pair<>&&)): Add.
+ * include/bits/stl_pair.h (pair::swap(pair&),
+ swap(pair<>&, pair<>&)): Use noexcept.
+ * include/bits/random.h (discard_block_engine<>::base,
+ independent_bits_engine<>::base, shuffle_order_engine<>::base,
+ random_device::entropy): Use noexcept.
+ * include/std/array: Use noexcept where appropriate.
+ (get(array<>&&)): Add.
+ * testsuite/23_containers/array/requirements/get.cc: New.
+ * testsuite/20_util/pair/get.cc: Likewise.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Tweak dg-error
+ line number.
+
+2011-05-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/c++config (_GLIBCXX_NOEXCEPT, _GLIBCXX_USE_NOEXCEPT):
+ Add.
+ * include/std/limits: Use the latter everywhere.
+ (numeric_limits<char16_t>, numeric_limits<char32_t>): Simplify
+ macro usages, the specializations exist only in C++0x mode.
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error
+ line number.
+
+2011-05-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc: Use
+ dg-require-cmath.
+ * testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc: Likewise.
+
+2011-05-11 François Dumont <francois.cppdevs@free.fr>
+
+ * include/ext/pb_ds/detail/resize_policy/
+ hash_load_check_resize_trigger_imp.hpp (assert_valid): Replace
+ _GLIBCXX_DEBUG_ASSERT calls with PB_DS_DEBUG_VERIFY.
+ * include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp,
+ find_fn_imps.hpp, insert_fn_imps.hpp, binomial_heap_base_.hpp,
+ constructors_destructor_fn_imps.hpp, split_join_fn_imps.hpp
+ (PB_DS_ASSERT_VALID): Rename in PB_DS_ASSERT_VALID_COND.
+ * include/ext/pb_ds/detail/debug_map_base.hpp,
+ splay_tree_/splay_tree_.hpp, ov_tree_map_/ov_tree_map_.hpp,
+ cc_hash_table_map_/cc_ht_map_.hpp, pat_trie_/pat_trie_.hpp,
+ leaf.hpp, internal_node.hpp, gp_hash_table_map_/gp_ht_map_.hpp,
+ bin_search_tree_/bin_search_tree_.hpp, list_update_map_/lu_map_.hpp,
+ rb_tree_map_/rb_tree_.hpp (PB_DS_ASSERT_VALID, PB_DS_DEBUG_VERIFY,
+ PB_DS_CHECK_KEY_EXISTS, PB_DS_CHECK_KEY_DOES_NOT_EXIST): Duplicate
+ macro definitions move...
+ * include/ext/pb_ds/detail/container_base_dispatch.hpp: ... here...
+ * include/ext/pb_ds/detail/basic_tree_policy/traits.hpp: ... and here.
+ * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp,
+ resize_policy.hpp, pairing_heap_/pairing_heap_.hpp,
+ left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp,
+ binomial_heap_/binomial_heap_.hpp, thin_heap_/thin_heap_.hpp,
+ rc_binomial_heap_/rc_binomial_heap_.hpp, rc.hpp (PB_DS_ASSERT_VALID,
+ PB_DS_DEBUG_VERIFY): Duplicate macro definitions move...
+ * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp:
+ ...here.
+
+2011-05-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/48933
+ * include/c_global/cmath (acosh, asinh, atanh, cbrt, copysign,
+ erf, erfc, exp2, expm1, fdim, fma, fmax, hypot, ilogb, lgamma,
+ llrint, llround, log1p, log2, logb, lrint, lround, nearbyint,
+ nextafter, nexttoward, remainder, remquo, rint, round, scalbln,
+ scalbn, tgamma, trunc): Use __enable_if on the return type.
+ * include/tr1/cmath: Likewise.
+ * testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc: New.
+ * testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc: Likewise.
+
+2011-05-07 François Dumont <francois.cppdevs@free.fr>
+
+ * include/debug/macro.h (_GLIBCXX_DEBUG_VERIFY_AT): New.
+ (_GLICXX_DEBUG_VERIFY): Use latter.
+ * include/ext/pb_ds/detail/resize_policy/
+ hash_load_check_resize_trigger_imp.hpp: Emit assertion on the line
+ containing the original assert call.
+ * include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp,
+ find_fn_imps.hpp, insert_fn_imps.hpp, binomial_heap_base_.hpp,
+ constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
+ split_join_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/
+ erase_store_hash_fn_imps.hpp, insert_no_store_hash_fn_imps.hpp,
+ find_fn_imps.hpp, insert_store_hash_fn_imps.hpp, debug_fn_imps.hpp,
+ debug_no_store_hash_fn_imps.hpp, cc_ht_map_.hpp, resize_fn_imps.hpp,
+ constructor_destructor_fn_imps.hpp, debug_store_hash_fn_imps.hpp,
+ erase_no_store_hash_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp,
+ insert_join_fn_imps.hpp, pat_trie_/head.hpp, debug_fn_imps.hpp,
+ constructors_destructor_fn_imps.hpp, pat_trie_.hpp, split_fn_imps.hpp,
+ leaf.hpp, erase_fn_imps.hpp, node_base.hpp, internal_node.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp,
+ r_erase_fn_imps.hpp, constructors_destructor_fn_imps.hpp,
+ debug_fn_imps.hpp, rotate_fn_imps.hpp, erase_fn_imps.hpp,
+ bin_search_tree_.hpp, insert_fn_imps.hpp, split_join_fn_imps.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/
+ erase_store_hash_fn_imps.hpp, insert_no_store_hash_fn_imps.hpp,
+ find_fn_imps.hpp, gp_ht_map_.hpp, insert_store_hash_fn_imps.hpp,
+ debug_fn_imps.hpp, erase_fn_imps.hpp, debug_no_store_hash_fn_imps.hpp,
+ resize_fn_imps.hpp, constructor_destructor_fn_imps.hpp,
+ debug_store_hash_fn_imps.hpp, erase_no_store_hash_fn_imps.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp,
+ constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
+ erase_fn_imps.hpp, insert_fn_imps.hpp, binary_heap_.hpp,
+ resize_policy.hpp, split_join_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp,
+ find_fn_imps.hpp, insert_fn_imps.hpp,
+ constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
+ pairing_heap_.hpp, split_join_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/binomial_heap_/
+ constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
+ binomial_heap_.hpp: Likewise.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ erase_fn_imps.hpp, left_child_next_sibling_heap_.hpp,
+ constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp,
+ find_fn_imps.hpp, thin_heap_.hpp, insert_fn_imps.hpp,
+ constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
+ split_join_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp,
+ ov_tree_map_.hpp, constructors_destructor_fn_imps.hpp,
+ debug_fn_imps.hpp, split_join_fn_imps.hpp, info_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/debug_map_base.hpp: Likewise.
+ * include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp,
+ find_fn_imps.hpp, insert_fn_imps.hpp,
+ constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp,
+ splay_fn_imps.hpp, split_join_fn_imps.hpp, splay_tree_.hpp: Likewise.
+ * include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp,
+ find_fn_imps.hpp, lu_map_.hpp, constructor_destructor_fn_imps.hpp,
+ insert_fn_imps.hpp, debug_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp,
+ rc_binomial_heap_.hpp, insert_fn_imps.hpp,
+ constructors_destructor_fn_imps.hpp, debug_fn_imps.hpp, rc.hpp,
+ split_join_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp,
+ insert_fn_imps.hpp, constructors_destructor_fn_imps.hpp,
+ debug_fn_imps.hpp, rb_tree_.hpp, split_join_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/hash_policy.hpp: Likewise.
+
+2011-05-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/22_locale/messages_byname/named_equivalence.cc: Fix.
+
+2011-05-04 Marc Glisse <marc.glisse@normalesup.org>
+
+ PR libstdc++/47913 (again)
+ * include/std/ratio (ratio_add, ratio_less): Rewrite.
+ * testsuite/20_util/ratio/operations/47913.cc: Extend.
+ * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust dg-error
+ line numbers.
+ * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
+
+2011-05-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/48848
+ * include/std/valarray (valarray<>::valarray(valarray&&),
+ valarray<>::operator=(valarray&&), valarray<>::swap): Add.
+ * doc/xml/manual/status_cxx200x.xml: Update.
+ * testsuite/26_numerics/valarray/moveable.cc: New.
+ * testsuite/26_numerics/valarray/swap.cc: Likewise.
+
+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.
+
+2011-05-03 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/functional (bind): Remove from overload set when first
+ argument type might be a socket file descriptor.
+ * testsuite/20_util/bind/socket.cc: New.
+
+2011-05-03 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/48848
+ * doc/xml/manual/status_cxx200x.xml: Update valarray status.
+ * doc/html/*: Regenerate.
+
+2011-05-02 Ollie Wild <aaw@google.com>
+
+ * include/ext/sso_string_base.h (__sso_string_base<>::_M_construct):
+ Fix unqualified lookup.
+ (__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.
+
+2011-05-02 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.
+
+2011-04-30 Daniel Krugler <daniel.kruegler@googlemail.com>
+
+ * include/std/type_traits (__is_default_constructible_atom,
+ __is_default_constructible_safe<, true>,
+ __is_direct_constructible_new_safe,
+ __is_base_to_derived_ref<,, true>, __is_lvalue_to_rvalue_ref<,, true>,
+ __is_direct_constructible_ref_cast, __is_direct_constructible,
+ __is_nary_constructible): Simplify; add comments throughout.
+
+2011-04-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+ Adjust dg-error line numbers.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+
+2011-04-30 Doug Kwan <dougkwan@google.com>
+
+ * include/Makefile.am (install-freestanding-headers): Also install
+ cxxabi_tweaks.h.
+ * include/Makefile.in: Regenerate.
+
+2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/48760
+ * include/std/complex (complex<float>::complex(float, float),
+ complex<double>::complex(double, double),
+ complex<long double>::complex(long double, long double)): Use
+ list-initialization in C++0x mode, initialize in the body in
+ C++03 mode.
+ * testsuite/26_numerics/complex/cons/48760.cc: New.
+ * testsuite/26_numerics/complex/cons/48760_c++0x.cc: Likewise.
+
+2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/bitset (_Base_bitset(unsigned long long)): Minor
+ tweak, remove redundant round braces.
+
+2011-04-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/move.h (move_if_noexcept): Add.
+ * testsuite/20_util/move_if_noexcept/requirements/
+ explicit_instantiation.cc: New.
+ * testsuite/20_util/move_if_noexcept/1.cc: Likewise.
+
+2011-04-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/type_traits (struct underlying_type): Add.
+ * testsuite/20_util/underlying_type/requirements/typedefs-1.cc: New.
+ * testsuite/20_util/underlying_type/requirements/typedefs-2.cc:
+ Likewise.
+ * testsuite/20_util/underlying_type/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
+ line number.
+
+2011-04-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/parallel/multiway_merge.h: Uglify equally_split
+ and equally_split_point throughout.
+ * include/parallel/par_loop.h: Likewise.
+ * include/parallel/equally_split.h: Likewise.
+ * include/parallel/set_operations.h: Likewise.
+ * include/parallel/unique_copy.h: Likewise.
+ * include/parallel/multiway_mergesort.h: Likewise.
+ * include/parallel/search.h: Likewise.
+ * include/parallel/partial_sum.h: Likewise.
+ * include/parallel/find.h: Likewise.
+
+2011-04-24 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/manual/parallel_mode.xml: Fix link to libgomp online
+ documentation. Expand link text.
+
+2011-04-24 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * libsupc++/cxxabi.h: Adjust link to FAQ entry.
+
+2011-04-22 François Dumont <francois.cppdevs@free.fr>
+
+ * testsuite/lib/libstdc++.exp (check_v3_target_time): Discard
+ unused compilation result thanks to /dev/null.
+ * testsuite/lib/libstdc++.exp (check_v3_target_debug_mode,
+ check_v3_target_profile_mode, check_v3_target_normal_mode,
+ check_v3_target_cstdint, check_v3_target_cmath,
+ check_v3_target_atomic_builtins, check_v3_target_gthreads,
+ check_v3_target_nanosleep, check_v3_target_sched_yield,
+ check_v3_target_string_conversions, check_v3_target_swprintf,
+ check_v3_target_binary_io): Use simple preprocessing rather than
+ compilation. Discard unused preprocessing result thanks to /dev/null.
+
+2011-04-20 Jim Meyering <meyering@redhat.com>
+
+ * libsupc++/del_opnt.cc (operator delete): Remove useless
+ if-before-free.
+
+2011-04-19 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/48521
+ * include/std/type_traits (result_of): Handle pointer to member.
+ * include/std/functional (__invoke): Likewise.
+ (_Function_to_function_pointer): Remove.
+ (_Reference_wrapper_base): Provide nested types independent of
+ unary_function and binary_function.
+ (reference_wrapper::operator()): DR 2017.
+ (ref(const A&&), cref(const A&&): Define as deleted.
+ * include/std/future (async): Simplify SFINAE and use result_of to
+ support pointer to member.
+ * testsuite/20_util/reference_wrapper/invoke.cc: Test pointer to
+ member.
+ * testsuite/20_util/reference_wrapper/24803.cc: Likewise.
+ * testsuite/20_util/reference_wrapper/typedefs.cc: Test for types
+ instead of derivation from unary_function and binary_function.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
+ * testsuite/20_util/reference_wrapper/invoke-2.cc: New.
+ * testsuite/20_util/reference_wrapper/ref_neg.c: New.
+ * testsuite/20_util/reference_wrapper/typedefs-3.c: New.
+
+2011-04-19 Hans-Peter Nilsson <hp@axis.com>
+
+ PR testsuite/48675
+ * testsuite/20_util/hash/chi2_quality.cc (test_document_words): Stub
+ this part if SAMPLES < 100000.
+
+2011-04-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/type_traits (is_nothrow_default_constructible,
+ is_nothrow_copy_constructible, is_nothrow_move_constructible,
+ is_copy_constructible, is_move_constructible): Add.
+ (has_nothrow_default_constructor, has_nothrow_copy_constructor):
+ Remove.
+ (is_nothrow_constructible): Adjust.
+
+ * testsuite/util/testsuite_tr1.h (ThrowDefaultClass,
+ ThrowCopyConsClass, ThrowMoveConsClass, NoexceptDefaultClass,
+ ExceptDefaultClass, NoexceptCopyConsClass, ExceptCopyConsClass,
+ NoexceptMoveConsClass, ExceptMoveConsClass): Add in C++0x mode.
+
+ * testsuite/20_util/has_nothrow_default_constructor: Remove.
+ * testsuite/20_util/has_nothrow_copy_constructor: Likewise.
+
+ * testsuite/20_util/is_nothrow_move_constructible/value.cc: Likewise.
+ * testsuite/20_util/is_nothrow_move_constructible/requirements/
+ typedefs.cc: Likewise.
+ * testsuite/20_util/is_nothrow_move_constructible/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_nothrow_copy_constructible/value.cc: Likewise.
+ * testsuite/20_util/is_nothrow_copy_constructible/requirements/
+ typedefs.cc: Likewise.
+ * testsuite/20_util/is_nothrow_copy_constructible/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_nothrow_default_constructible/value.cc:
+ Likewise.
+ * testsuite/20_util/is_nothrow_default_constructible/requirements/
+ typedefs.cc: Likewise.
+ * testsuite/20_util/is_nothrow_default_constructible/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_move_constructible/value.cc: Likewise.
+ * testsuite/20_util/is_move_constructible/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/is_move_constructible/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_copy_constructible/value.cc: Likewise.
+ * testsuite/20_util/is_copy_constructible/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/is_copy_constructible/requirements/
+ explicit_instantiation.cc: Likewise.
+
+ * testsuite/20_util/is_default_constructible/value.cc: Add tests.
+ * testsuite/20_util/is_nothrow_constructible/value.cc: Likewise.
+
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
+ Adjust dg-error line numbers.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+
+2011-04-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/25_algorithms/partition/moveable.cc: Actually run
+ it in parallel-mode for check-parallel.
+
+2011-04-17 Daniel Krugler <daniel.kruegler@googlemail.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/48635 (again)
+ * include/bits/unique_ptr.h (unique_ptr<>::unique_ptr(unique_ptr<>&&),
+ unique_ptr<_Tp[]>::unique_ptr(unique_ptr<>&&),
+ unique_ptr<>::operator=(unique_ptr<>&&),
+ unique_ptr<_Tp[]>::operator=(unique_ptr<>&&)): Use forward<_Ep>, not
+ forward<_Dp>, to forward the deleter.
+ * testsuite/20_util/unique_ptr/assign/48635_neg.cc: New.
+
+2011-04-15 Daniel Krugler <daniel.kruegler@googlemail.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/48631
+ * include/bits/unique_ptr.h (default_delete<_Tp[]>): Add deleted
+ function call operator.
+ * testsuite/20_util/default_delete/48631_neg.cc: New.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+ line numbers.
+
+2011-04-15 Daniel Krugler <daniel.kruegler@googlemail.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/48635
+ * include/bits/unique_ptr.h (unique_ptr<>::operator=(unique_ptr&&),
+ unique_ptr<>::operator=(unique_ptr<>&&),
+ unique_ptr<_Tp[],>::operator=(unique_ptr&&),
+ unique_ptr<_Tp[],>::operator=(unique_ptr<>&&)): Forward the deleter
+ instead of moving it.
+ * testsuite/20_util/unique_ptr/assign/48635.cc: New.
+
+2011-04-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * scripts/extract_symvers.pl: Handle NOTY.
+
+2011-04-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/std/istream: Fix comments in the light of DR60 + N3168.
+
+2011-04-13 Daniel Krugler <daniel.kruegler@googlemail.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/48526
+ * include/std/type_traits (struct is_constructible): Re-implement,
+ according to n3290.
+ (struct is_default_constructible): Add.
+ (struct is_destructible): Likewise.
+ (struct __and_, __or_, __not_): Add and use throughout; reorder some
+ facilities, other minor tweaks.
+ * testsuite/util/testsuite_tr1.h: Add test types.
+ * testsuite/20_util/is_constructible/value-2.cc: New.
+ * testsuite/20_util/is_default_constructible/value.cc: Likewise.
+ * testsuite/20_util/is_default_constructible/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/is_default_constructible/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_destructible/value.cc: Likewise.
+ * testsuite/20_util/is_destructible/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/is_destructible/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+ dg-error line numbers.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
+ Likewise.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
+ * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
+
+2011-04-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/20_util/is_function/value.cc: Add, adapted from the tr
+ testsuite.
+ * testsuite/20_util/is_function/requirements/typedefs.cc: Likewise.
+ * testsuite/20_util/is_function/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_function/24808.cc: Likewise.
+ * testsuite/20_util/is_function/35637.cc: Likewise.
+ * testsuite/20_util/is_object/value.cc: Likewise.
+ * testsuite/20_util/is_object/requirements/typedefs.cc: Likewise.
+ * testsuite/20_util/is_object/requirements/explicit_instantiation.cc:
+ : Likewise.
+ * testsuite/20_util/is_object/24808.cc: Likewise.
+ * testsuite/20_util/is_compound/value.cc: Likewise.
+ * testsuite/20_util/is_compound/requirements/typedefs.cc: Likewise.
+ * testsuite/20_util/is_compound/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_member_object_pointer/value.cc: Likewise.
+ * testsuite/20_util/is_member_object_pointer/requirements/
+ typedefs.cc: Likewise.
+ * testsuite/20_util/is_member_object_pointer/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_fundamental/value.cc: Likewise.
+ * testsuite/20_util/is_fundamental/requirements/typedefs.cc: Likewise.
+ * testsuite/20_util/is_fundamental/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_member_pointer/value.cc: Likewise.
+ * testsuite/20_util/is_member_pointer/requirements/typedefs.cc:
+ Likewise.
+ * testsuite/20_util/is_member_pointer/requirements/
+ explicit_instantiation.cc: Likewise.
+ * testsuite/20_util/is_member_function_pointer/value.cc: Likewise.
+ * testsuite/20_util/is_member_function_pointer/
+ requirements/typedefs.cc: Likewise.
+ * testsuite/20_util/is_member_function_pointer/requirements/
+ explicit_instantiation.cc: Likewise.
+
+ * testsuite/20_util/is_convertible/value.cc: Minor tweak, adjust
+ Copyright years.
+
+2011-04-12 Takaya Saito <gintensubaru@gmail.com>
+
+ PR libstdc++/48476
+ * include/std/tuple (_Tuple_impl<>::_Tuple_impl(_Tuple_impl<>&&),
+ _Tuple_impl<>::operator=(_Tuple_impl&&), _Tuple_impl<>::operator=
+ (_Tuple_impl<>&&), tuple_cat): Use std::forward where appropriate.
+ * testsuite/20_util/tuple/cons/48476.cc: New.
+ * testsuite/20_util/tuple/48476.cc: Likewise.
+ * testsuite/20_util/tuple/creation_functions/48476.cc: Likewise.
+
+2011-04-12 Allan McRae <allan@archlinux.org>
+
+ PR libstdc++/48566
+ * testsuite/tr1/6_containers/unordered_map/requirements/
+ iterator_null_neg.cc: Include <cstddef>.
+ * testsuite/tr1/6_containers/unordered_set/requirements/
+ iterator_null_neg.cc: Likewise.
+ * testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc: Include
+ <cstring>.
+ * testsuite/util/testsuite_common_types.h: Include <limits>.
+ * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
+ Adjust dg-error line numbers.
+ * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
+ * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
+ Likewise.
+ * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
+ Likewise.
+ * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
+ Likewise.
+ * testsuite/29_atomics/atomic/cons/assign_neg.cc: Likewise.
+ * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
+
+2011-04-11 Jason Merrill <jason@redhat.com>
+
+ * testsuite/20_util/is_convertible/value.cc: Adjust.
+
+2011-04-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/25_algorithms/inplace_merge/moveable.cc: Actually run
+ it in parallel-mode for check-parallel.
+ * testsuite/25_algorithms/rotate/moveable.cc: Likewise.
+ * testsuite/25_algorithms/stable_partition/moveable.cc: Likewise.
+ * testsuite/25_algorithms/remove/moveable.cc: Likewise.
+ * testsuite/25_algorithms/sort_heap/check_compare_by_value.cc:
+ Likewise.
+ * testsuite/25_algorithms/unique/moveable.cc: Likewise.
+ * testsuite/25_algorithms/remove_if/moveable.cc: Likewise.
+ * testsuite/25_algorithms/heap/moveable.cc: Likewise.
+
+ * testsuite/25_algorithms/next_permutation/moveable.cc: Only skip
+ the tests based on std::lexicographical_compare for check-parallel.
+ * testsuite/25_algorithms/prev_permutation/moveable.cc: Likewise.
+
+2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/48541
+ * include/std/functional (_Base_manager::_M_get_pointer): Use
+ addressof.
+ * testsuite/20_util/function/48541.cc: New.
+
+2011-04-10 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/48465
+ * configure.ac (libtool_VERSION): Bump library version to 6:16:0.
+ * configure: Regenerate.
+ * config/abi/pre/gnu.ver (GLIBCXX_3.4.16): Export missing symbols.
+ * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.16.
+
+2011-04-06 Jeffrey Yasskin <jyasskin@google.com>
+
+ * include/ext/algorithm (is_sorted): In C++0x mode import from
+ namespace std.
+ * include/ext/numeric (iota): In C++0x mode import from
+ namespace std.
+ * testsuite/ext/is_sorted/cxx0x.cc: New.
+ * testsuite/ext/iota/cxx0x.cc: New.
+
+2011-04-02 Jonathan Wakely <redi@gcc.gnu.org>
+
+ PR libstdc++/48398
+ * include/bits/unique_ptr.h (__tuple_type): Store pointer type.
+ * testsuite/20_util/unique_ptr/modifiers/48398.cc: New.
+ * testsuite/20_util/unique_ptr/requirements/pointer_type.cc: Remove
+ unused parameter name.
+
+2011-03-31 Jeffrey Yasskin <jyasskin@google.com>
+
+ * libsupc++/exception_ptr.h: Forward-declare std::type_info.
+ * libsupc++/nested_exception.h (__throw_with_nested): Remove a
+ redundant default argument from std::__throw_with_nested.
+
+2011-03-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/48382
+ * src/ctype.cc: Do not include <bits/ctype_noninline.h>.
+ * src/Makefile.am: Add ctype_configure_char.cc to host_sources.
+ * src/Makefile.in: Regenerate.
+ * include/Makefile.am: Remove ctype_noninline.h from host_headers.
+ * include/Makefile.in: Regenerate.
+ * doc/xml/manual/internals.xml: Update.
+ * config/os/newlib/ctype_noninline.h: Fixup and rename to...
+ * config/os/newlib/ctype_configure_char.cc: ... this.
+ * config/os/aix/ctype_noninline.h: Likewise.
+ * config/os/aix/ctype_configure_char.cc: Likewise.
+ * config/os/vxworks/ctype_noninline.h: Likewise.
+ * config/os/vxworks/ctype_configure_char.cc
+ * config/os/hpux/ctype_noninline.h: Likewise.
+ * config/os/hpux/ctype_configure_char.cc: Likewise.
+ * config/os/gnu-linux/ctype_noninline.h: Likewise.
+ * config/os/gnu-linux/ctype_configure_char.cc: Likewise.
+ * config/os/mingw32/ctype_noninline.h: Likewise.
+ * config/os/mingw32/ctype_configure_char.cc: Likewise.
+ * config/os/tpf/ctype_noninline.h: Likewise.
+ * config/os/tpf/ctype_configure_char.cc: Likewise.
+ * config/os/uclibc/ctype_noninline.h: Likewise.
+ * config/os/uclibc/ctype_configure_char.cc: Likewise.
+ * config/os/bionic/ctype_noninline.h: Likewise.
+ * config/os/bionic/ctype_configure_char.cc: Likewise.
+ * config/os/djgpp/ctype_noninline.h: Likewise.
+ * config/os/djgpp/ctype_configure_char.cc: Likewise.
+ * config/os/qnx/qnx6.1/ctype_noninline.h: Likewise.
+ * config/os/qnx/qnx6.1/ctype_configure_char.cc: Likewise.
+ * config/os/bsd/netbsd/ctype_noninline.h: Likewise.
+ * config/os/bsd/netbsd/ctype_configure_char.cc: Likewise.
+ * config/os/bsd/darwin/ctype_noninline.h: Likewise.
+ * config/os/bsd/darwin/ctype_configure_char.cc: Likewise.
+ * config/os/bsd/freebsd/ctype_noninline.h: Likewise.
+ * config/os/bsd/freebsd/ctype_configure_char.cc: Likewise.
+ * config/os/irix/irix6.5/ctype_noninline.h: Likewise.
+ * config/os/irix/irix6.5/ctype_configure_char.cc: Likewise.
+ * config/os/generic/ctype_noninline.h: Likewise.
+ * config/os/generic/ctype_configure_char.cc: Likewise.
+ * config/os/solaris/solaris2.7/ctype_noninline.h: Likewise.
+ * config/os/solaris/solaris2.7/ctype_configure_char.cc: Likewise.
+
+2011-03-25 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/future (future::share): Add.
+ (packaged_task::result_type): Remove as per LWG 2030.
+ (packaged_task::packaged_task): Remove redundant constructors, as per
+ LWG 1514.
+ * testsuite/30_threads/future/members/share.cc: New.
+ * testsuite/30_threads/packaged_task/requirements/typedefs.cc: Remove.
+
+2011-03-25 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/28_regex/match_results/ctors/char/default.cc: Do not call
+ members which require a fully established result state.
+ * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
+
+2011-03-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/random.h (negative_binomial_distribution<>::
+ negative_binomial_distribution(_IntType, double),
+ negative_binomial_distribution<>::
+ negative_binomial_distribution(const param_type&)): Tweak
+ construction of _M_gd.
+ * include/bits/random.tcc (negative_binomial_distribution<>::
+ operator()): Adjust.
+
+2011-03-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/random.h (negative_binomial_distribution<>::
+ negative_binomial_distribution(_IntType, double),
+ negative_binomial_distribution<>::
+ negative_binomial_distribution(const param_type&)): Fix
+ construction of _M_gd.
+ * include/bits/random.tcc (negative_binomial_distribution<>::
+ operator()): Fix computation, per Leger's algorithm.
+ * testsuite/util/testsuite_random.h (discrete_pdf,
+ negative_binomial_pdf, poisson_pdf, uniform_int_pdf): New.
+ (binomial_pdf): Swap last two parameters.
+ * testsuite/26_numerics/random/discrete_distribution/
+ operators/values.cc: New.
+ * testsuite/26_numerics/random/negative_binomial_distribution/
+ operators/values.cc: Likewise.
+ * testsuite/26_numerics/random/poisson_distribution/
+ operators/values.cc: Likewise.
+ * testsuite/26_numerics/random/uniform_int_distribution/
+ operators/values.cc: Likewise.
+ * testsuite/26_numerics/random/binomial_distribution/
+ operators/values.cc: Adjust.
+
+2011-03-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * config/abi/post/solaris2.8/baseline_symbols.txt: Regenerate.
+ * config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
+
+2011-03-23 Matthias Klose <doko@ubuntu.com>
+
+ * config/abi/post/sparc-linux-gnu/baseline_symbols.txt: Regenerated.
+
+2011-03-23 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Regenerated.
+
+2011-03-22 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.ac: Don't handle powerpc*-*-gnu*.
+ * configure: Regenerate.
+
+2011-03-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/21_strings/basic_string/cons/char/moveable2.cc: Tweak
+ Copyright years.
+ * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc:
+ Likewise.
+
+2011-03-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/shared_ptr.h (operator>, operator<=, operator>=): Add,
+ per DR 1401.
+ (operator==, operator!=, operator<): Fix per the letter of DR 1401.
+ * include/bits/shared_ptr_base.h: Likewise for __shared_ptr.
+ * include/bits/unique_ptr.h (operator==, operator!=, operator<,
+ operator<=, operator>, operator>=): Fix per the letter of DR 1401.
+ * testsuite/20_util/shared_ptr/comparison/dr1401.cc: New.
+ * testsuite/20_util/unique_ptr/comparison/dr1401.cc: Likewise.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust.
+
+2011-03-22 Jakub Jelinek <jakub@redhat.com>
+
+ * config/abi/pre/gnu.ver (GLIBCXX_3.4.15): Export _ZNSsC2EOSs
+ and _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_.
+ * config/abi/post/solaris2.8/baseline_symbols.txt: Regenerated.
+ * config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
+ * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
+ * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
+ Likewise.
+ * config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
+ * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
+ * testsuite/21_strings/basic_string/cons/char/moveable2.cc: New test.
+ * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc: New
+ test.
+
+2011-03-21 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ * testsuite/lib/prune.exp (libstdc++-dg-prune): Prune "could not
+ create compact unwind for" warnings.
+
+2011-03-21 Jakub Jelinek <jakub@redhat.com>
+
+ * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
+ * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
+ Likewise.
+ * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
+ * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
+ * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
+
+ * testsuite/util/testsuite_abi.cc (check_version): Set incompatible
+ even when adding symbols to CXXABI_1.3, GLIBCXX_LDBL_3.4 and
+ CXXABI_LDBL_1.3 versions.
+
+2011-03-21 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/abi/pre/gnu.ver: Remove typeinfo name exports for C++0x types.
+
+2011-03-21 Jakub Jelinek <jakub@redhat.com>
+
+ * config/abi/pre/gnu.ver (CXXABI_1.3): Don't export _ZT[IS][PK]*[no].
+ (CXXABI_1.3.5): Export _ZTI[PK]*[no].
+
+2011-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * testsuite/22_locale/num_put/put/char/14220.cc: Don't xfail on
+ sparc*-sun-solaris2.10 && lp64.
+
+2011-03-19 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/lib/libstdc++.exp (check_v3_target_c99_math): Rename
+ to check_v3_target_cmath.
+ * testsuite/lib/dg-options.exp (dg-require-c99_math): Rename
+ to dg-require-cmath.
+ * testsuite/26_numerics/random/binomial_distribution/
+ operators/values.cc: Adjust.
+
+2011-03-18 Diego Novillo <dnovillo@google.com>
+
+ * testsuite/decimal/mixed-mode-arith_neg.cc: Rename from
+ mixed-mode_neg.cc
+ * testsuite/decimal/mixed-mode-cmp_neg.cc: Factor out of
+ mixed-mode-arith_neg.cc
+
+2011-03-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/util/testsuite_random.h: New.
+ * testsuite/lib/libstdc++.exp (check_v3_target_c99_math): Add.
+ * testsuite/lib/dg-options.exp (dg-require-c99_math): Likewise.
+ * testsuite/26_numerics/random/bernoulli_distribution/
+ operators/values.cc: New.
+ * testsuite/26_numerics/random/binomial_distribution/
+ operators/values.cc: Likewise.
+ * testsuite/26_numerics/random/geometric_distribution/
+ operators/values.cc: Likewise.
+
+2011-03-16 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/abi/pre/gnu.ver: Add base destructors for stdexcept classes.
+ * testsuite/19_diagnostics/stdexcept.cc: New.
+
+2011-03-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/thread: Revert.
+ * src/thread.cc: Same.
+ * config/abi/pre/gnu.ver: Same.
+
+2011-03-15 Doug Kwan <dougkwan@google.com>
+
+ PR libstdc++/48123
+ * include/Makefile.am (install-freestanding-headers): Install
+ cpu_defines.h
+ * include/Makefile.in: Regenerate.
+
+2011-03-15 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/abi/pre/gnu.ver: Make nested_exception exports super clear.
+ Move bad_function_call exports from CXXABI_1.3.5 to GLIBCXX_3.4.15.
+
+2011-03-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/48130
+ * src/future.cc: Guard definitions.
+ * libsupc++/nested_exception.cc: Same.
+
+2011-03-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/Makefile.am: Add functional.cc, shared_ptr.cc.
+ * src/Makefile.in: Regenerate.
+ * libsupc++/Makefile.am: Add nested_exception.cc.
+ * libsupc++/Makefile.in: Regenerate.
+ * src/system_error.cc: Add ctor and dtor definitions for error_category.
+ * src/functional.cc: New. Add dtor definition for bad_function_call.
+ * src/stdexcept.cc: Add dtor definitions for domain_error,
+ invalid_argument, length_error, out_of_range, range_error,
+ overflow_error, underflow_error.
+ * src/future.cc: Add dtor definition for __future_base::_Result_base.
+ * src/shared_ptr.cc: New. Add dtor definition for bad_weak_ptr.
+ * src/thread.cc: Add dtor for thread::_Impl_base.
+ * include/std/system_error: Adjust.
+ * include/std/stdexcept: Same.
+ * include/std/future: Same.
+ * include/std/functional: Same.
+ * include/std/thread: Same.
+ * include/bits/shared_ptr_base.h: Same.
+ * libsupc++/nested_exception.cc: New. Add dtor for nested_exception.
+ * libsupc++/nested_exception.h: Adjust.
+ * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line numbers.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
+ * config/abi/pre/gnu.ver: Add new exports.
+
+2011-03-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/regex_compiler.h: Nest namespace versioning.
+ * include/bits/regex_grep_matcher.tcc: Same.
+ * include/bits/regex_grep_matcher.h: Same.
+ * include/bits/regex_cursor.h: Same.
+ * include/bits/regex_nfa.h: Same.
+ * include/bits/regex_nfa.tcc: Same.
+
+ * include/bits/regex_grep_matcher.h: Version forward declarations.
+ * include/bits/c++config: Add namespace association for __regex.
+ * include/bits/regex.h: Make sub_match consistent.
+
+2011-03-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * doc/xml/manual/abi.xml: Replace docs.sun.com URLs by their OTN
+ equivalents.
+ * doc/html/manual/abi.html: Regenerate.
+
+2011-03-14 Tom Tromey <tromey@redhat.com>
+
+ * python/libstdcxx/v6/printers.py (_use_gdb_pp): New global.
+ Try to import `gdb.printing' module.
+ (UniquePointerPrinter.__init__): Add 'typename' argument.
+ (StdSlistPrinter.__init__): Likewise.
+ (StdSlistIteratorPrinter.__init__): Likewise.
+ (StdVectorIteratorPrinter.__init__): Likewise.
+ (StdRbtreeIteratorPrinter.__init__): Likewise.
+ (StdDebugIteratorPrinter.__init__): Likewise.
+ (StdDequeIteratorPrinter.__init__): Likewise.
+ (StdStringPrinter.__init__): Likewise.
+ (RxPrinter, Printer): New class.
+ (libstdcxx_printer): New global.
+ (register_libstdcxx_printers): Rewrite.
+ (build_libstdcxx_dictionary): Rewrite.
+ (pretty_printers_dict): Remove.
+
+2011-03-14 Andrey Zholos <aaz@althenia.net>
+
+ PR libstdc++/48114
+ * include/bits/random.h (geometric_distribution): Correct formula
+ in comment, per C++0x.
+ (geometric_distribution<>::param_type::param_type(double)): Fix check.
+ (geometric_distribution<>::param_type::_M_initialize):
+ Store log(1 - p).
+ * include/bits/random.tcc (geometric_distribution<>::operator()):
+ Fix computation.
+ (binomial_distribution<>::operator()): Likewise.
+
+2011-03-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/util/testsuite_rvalref.h: Minor tweaks.
+
+2011-03-09 Jonathan Wakely <redi@gcc.gnu.org>
+ Chris Jefferson <chris@bubblescope.net>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/util/testsuite_rvalref.h (rvalstruct_compare_by_value):
+ New.
+ * testsuite/25_algorithms/sort_heap/check_compare_by_value.cc:
+ Likewise.
+ * testsuite/25_algorithms/partial_sort/check_compare_by_value:
+ Likewise.
+ * testsuite/25_algorithms/stable_sort/check_compare_by_value.cc:
+ Likewise.
+ * testsuite/25_algorithms/sort/check_compare_by_value: Likewise.
+
+2011-03-09 Chris Jefferson <chris@bubblescope.net>
+
+ PR libstdc++/48038
+ * include/bits/stl_algo.h (__merge_backward): Rename to
+ __move_merge_backward and change to always move rather than copy.
+ (__move_merge): New function similar to std::merge except values
+ are moved instead of copied.
+ (__merge_adaptive, __merge_sort_loop): Change from using std::merge
+ and __merge_backward to __move_merge and __move_merge_backward.
+
+2011-03-07 Jason Merrill <jason@redhat.com>
+
+ * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust
+ expected errors.
+
+2011-03-07 Benjamin Kosnik <bkoz@redhat.com>
+ Matthias Klose <doko@ubuntu.com>
+ Jonathan Wakely <redi@gcc.gnu.org>
+
+ PR libstdc++/47145
+ * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Define.
+ * configure.ac: Use it.
+ * doc/Makefile.am (XSL_STYLE_DIR): Set at configure time.
+ * configure: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2011-03-04 Benjamin Kosnik <bkoz@chula>
+
+ * src/Makefile.am (inst_sources): Make source instantion files
+ conditional.
+ (XTEMPLATE_FLAGS): Make -fno-implicit-templates conditional.
+ * src/Makefile.in: Regenerate.
+ * src/valarray-inst.cc: Move to..
+ * src/valarray.cc: ...this.
+ * acinclude.m4 (GLIBCXX_ENABLE_EXTERN_TEMPLATE]): Define.
+ * configure.ac (GLIBCXX_ENABLE_EXTERN_TEMPLATE): Use it.
+ * configure: Regenerate.
+ * include/Makefile.am (stamp-extern-template): Add.
+ * include/Makefile.in: Regenerate.
+
+ * doc/xml/manual/configure.xml: Document --enable-extern-template.
+
+ * include/bits/locale_classes.tcc: Adjust comment.
+ * include/bits/locale_facets.tcc: Same.
+ * include/bits/basic_ios.tcc: Same.
+ * include/bits/istream.tcc: Same.
+ * include/bits/codecvt.h: Same.
+ * include/bits/ostream.tcc: Same.
+ * include/bits/sstream.tcc: Same.
+ * include/bits/c++config: Same.
+ * include/bits/basic_string.tcc: Same.
+ * include/bits/ostream_insert.h: Same.
+ * include/bits/locale_facets_nonio.tcc: Same.
+ * include/bits/streambuf.tcc: Same.
+ * include/bits/allocator.h: Same.
+ * include/bits/fstream.tcc: Same.
+
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.
+
+2011-03-02 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/Makefile.am: Make clean fixups.
+ * testsuite/Makefile.in: Regenerate.
+
+2011-03-02 Marc Glisse <marc.glisse@normalesup.org>
+
+ * include/std/ratio (ratio_less): Add comments.
+
+2011-03-02 Marc Glisse <marc.glisse@normalesup.org>
+
+ PR libstdc++/47913
+ * include/std/ratio (ratio_add): Avoid denominator overflow.
+ * testsuite/20_util/ratio/operations/47913.cc: New.
+
+2011-02-28 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/20_util/hash/chi2_quality.cc: Use C++0x mode on simulators.
+ * testsuite/20_util/hash/quality.cc: Same.
+
+2011-02-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47921
+ * include/std/streambuf (basic_streambuf<>::__safe_gbump,
+ __safe_pbump): Add.
+ * include/bits/streambuf.tcc (basic_streambuf<>::xgetn,
+ xputn): Use the latter.
+ * include/bits/streambuf_iterator.h: Likewise.
+ * src/strstream.cc: Likewise.
+ * src/streambuf.cc: Likewise.
+ * src/compatibility.cc: Likewise.
+ * src/istream.cc: Likewise.
+ * include/bits/fstream.tcc (basic_filebuf<>::xsgetn): Use setg
+ instead of gbump.
+ * include/std/sstream (basic_stringbuf<>::_M_pbump): Add.
+ * include/bits/sstream.tcc (basic_stringbuf<>::seekoff,
+ seekpos, _M_sync): Use setg, setp, and _M_pbump.
+ * config/abi/pre/gnu.ver: Tweak.
+
+2011-02-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/20_util/ratio/comparisons/comp3.cc: New.
+
+2011-02-28 Marc Glisse <marc.glisse@normalesup.org>
+
+ PR libstdc++/42622
+ * include/std/ratio (ratio_less): Reimplement to never overflow.
+ * testsuite/20_util/ratio/comparisons/comp2.cc: Extend.
+
+2011-02-24 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/18_support/type_info/fundamental.cc: New.
+
+ * testsuite/Makefile.am: Make clean fixups.
+ * testsuite/Makefile.in: Regenerate.
+
+2011-02-19 François Dumont <francois.cppdevs@free.fr>
+
+ * include/debug/string (basic_string::insert): Add iterator check and
+ pass normal iterator to normal insert.
+ * include/debug/macros.h (__glibcxx_check_heap,
+ __glibcxx_check_heap_pred): Remove __glibcxx_check_valid_range,
+ already done.
+
+2011-02-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47776
+ * testsuite/ext/vstring/hash/char/1.cc: Fix.
+ * testsuite/ext/vstring/hash/wchar_t/1.cc: Likewise.
+
+2011-02-17 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/regex.h (basic_regex::traits_type): Add typedef.
+ (basic_regex::basic_regex(basic_regex&&)): Add noexcept.
+ (basic_regex::operator=(basic_regex&&)): Likewise.
+ (basic_regex::assign(basic_regex&&)): Likewise.
+ (operator==(sub_match,...)): Implement DR 1181.
+ (match_results::match_results(match_results&&)): Define.
+ (match_results::operator=(const match_results&)): Fix parameter type.
+ (match_results::operator=(match_results&&)): Define.
+
+2011-02-17 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/47724
+ * include/bits/regex_compiler.h (_Scanner::_M_advance): Do not treat
+ line anchors as metacharacters.
+ * testsuite/28_regex/basic_regex/ctors/47724.cc: New.
+
+2011-02-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47773
+ * include/ext/vstring.h (hash<__gnu_cxx::__vstring>,
+ hash<__gnu_cxx::__wvstring>, hash<__gnu_cxx::__u16vstring>,
+ hash<__gnu_cxx::__u32vstring>): Add.
+ * testsuite/ext/vstring/hash/char/1.cc: New.
+ * testsuite/ext/vstring/hash/wchar_t/1.cc: Likewise.
+
+2011-02-16 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/regex.h (match_results::format): Use char_traits.
+
+2011-02-16 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/atomic: Remove atomic_address, uplift to N3225.
+ * include/bits/atomic_0.h: Same.
+ * include/bits/atomic_2.h: Same.
+ * include/bits/atomic_base.h: Same.
+ * testsuite/29_atomics/atomic_address/*: Delete.
+
+2011-02-14 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/regex.h (sub_match::sub_match): Add.
+ (match_results::ready): Add.
+ (match_results::empty): Adjust.
+ (match_results::length): Add missing dereference.
+ (match_results::operator[],prefix,suffix): Add debug mode checks.
+ (match_results::cend): Re-use end().
+ (match_results::format): Adjust signatures.
+ (operator==(match_results,match_results)): Implement.
+ * include/bits/regex_compiler.h (_Scanner_base): Use constexpr.
+ * include/bits/regex_constants.h (syntax_option_type): Likewise.
+ * include/bits/regex_grep_matcher.h: Fix comment typo.
+ (_SpecializedResults::_SpecializedResults): Simplify.
+ * include/bits/regex_cursor.h: Fix comment typo.
+ * include/bits/regex_nfa.h: Likewise.
+ * testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc:
+ Fix error code, remove xfail.
+ * testsuite/28_regex/basic_regex/ctors/extended/
+ string_range_01_02_03.cc: Likewise.
+
+2011-02-14 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/regex_compiler.h: Remove unnecessary bind() calls.
+ * include/bits/regex_nfa.h: Remove unnecessary base classes.
+
+2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+
+2011-02-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47709
+ * include/ext/algorithm (is_heap): In C++0x mode import from
+ namespace std.
+ * testsuite/ext/is_heap/47709.cc: New.
+
+2011-02-12 Jakub Jelinek <jakub@redhat.com>
+ Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/47662
+ * testsuite/17_intro/headers/c++200x/operator_names.cc: New.
+ * testsuite/17_intro/headers/c++1998/operator_names.cc: Add comment.
+
+2011-02-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/tr1/cmath (fabs): Define.
+ * include/tr1/complex (acos, asin, atan): Avoid duplicate definitions
+ in C++0x mode.
+
+2011-02-12 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/tr1/headers/c++200x/complex.cc: New.
+
+2011-02-11 Johannes Singler <singler@kit.edu>
+
+ PR libstdc++/47433
+ * include/parallel/losertree.h
+ (_LoserTreeUnguarded<>::__delete_min_insert):
+ Add missing "using std::swap;", as for other variants.
+
+2011-02-10 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/Makefile.am (sources): Add regex.cc.
+ * src/Makefile.in: Regenerate.
+ * src/regex.cc: New.
+ * include/bits/regex_error.h (error_type): Use constexpr.
+ (regex_error): Move ctor and dtor out of line.
+
+ * testsuite/28_regex/03_requirements: To...
+ * testsuite/28_regex/requirements: ... this.
+ * testsuite/28_regex/04_header: To...
+ * testsuite/28_regex/headers: ... this.
+ * testsuite/28_regex/05_constants: To...
+ * testsuite/28_regex/constants: ... this.
+ * testsuite/28_regex/06_exception_type: To...
+ * testsuite/28_regex/regex_error: ... this.
+ * testsuite/28_regex/07_traits: To...
+ * testsuite/28_regex/traits: ... this.
+ * testsuite/28_regex/08_basic_regex: To...
+ * testsuite/28_regex/basic_regex: ... this.
+ * testsuite/28_regex/09_sub_match: To...
+ * testsuite/28_regex/sub_match: ... this.
+ * testsuite/28_regex/10_match_results: To...
+ * testsuite/28_regex/match_results: ... this.
+ * testsuite/28_regex/11_algorithms: To...
+ * testsuite/28_regex/algorithms: ... this.
+ * testsuite/28_regex/12_iterators: To...
+ * testsuite/28_regex/iterators: ... this.
+
+2011-02-10 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/47662
+ * include/bits/c++config: Do not use alternative token.
+ * testsuite/17_intro/headers/c++1998/operator_names.cc: New.
+
+2011-02-10 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * src/future.cc (future_error_category::message): Handle no_state.
+
+2011-02-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/23_containers/multimap/modifiers/erase/47628.cc: Do
+ not test in C++0x mode.
+ * testsuite/23_containers/map/modifiers/erase/47628.cc: Likewise.
+ * testsuite/20_util/headers/utility/synopsis.cc: Tweak to work
+ in C++0x mode too.
+
+2011-02-10 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/status_cxx200x.xml: Update.
+ * doc/html/*: Regenerate.
+
+2011-02-10 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/debug.xml: Improve data race docs.
+
+2011-02-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47668
+ * include/debug/map.h (map): Remove unnecessary using-declaration.
+ * include/debug/multimap.h (multimap): Likewise.
+ * include/profile/map.h (map): Likewise.
+ * include/profile/multimap.h (multimap): Likewise.
+
+2011-02-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/43863
+ * libsupc++/guard.cc (recursive_init_error::~recursive_init_error):
+ Move to ...
+ * libsupc++/guard_error.cc: ... new file.
+ * libsupc++/Makefile.am: Update.
+ * libsupc++/Makefile.in: Regenerate.
+
+2011-02-09 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/future (packaged_task::operator bool): Rename to...
+ (packaged_task::valid): ...this.
+ * testsuite/30_threads/packaged_task/cons/1.cc: Adjust.
+ * testsuite/30_threads/packaged_task/cons/2.cc: Adjust.
+ * testsuite/30_threads/packaged_task/cons/move.cc: Adjust.
+ * testsuite/30_threads/packaged_task/cons/move_assign.cc: Adjust.
+ * testsuite/30_threads/packaged_task/cons/alloc.cc: Adjust.
+ * testsuite/30_threads/packaged_task/members/invoke.cc: Adjust.
+ * testsuite/30_threads/packaged_task/members/reset.cc: Adjust.
+ * testsuite/30_threads/packaged_task/members/reset2.cc: Adjust.
+ * testsuite/30_threads/packaged_task/members/swap.cc: Adjust.
+ * testsuite/30_threads/packaged_task/members/boolconv.cc: Remove.
+ * testsuite/30_threads/packaged_task/members/valid.cc: Add.
+
+2011-02-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * doc/xml/manual/io.xml: Fix typo.
+ * doc/html/manual/streambufs.html: Likewise.
+
+2011-02-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * config/abi/pre/gnu.ver: Fix.
+
+2011-02-08 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/xml/manual/appendix_porting.xml: Add doc section.
+ * doc/xml/manual/appendix_contributing.xml: Split out doc bits to...
+ * doc/xml/manual/documentation_hacking.xml: ...here.
+
+ * doc/xml/manual/debug_mode.xml: Adjust.
+ * doc/xml/manual/prerequisites.xml: Adjust.
+ * doc/Makefile.am (xml_sources): Add dot files,
+ documentation_hacking.xml.
+ * doc/Makefile.in: Regenerate.
+
+ * doc/xml/manual/build_hacking.xml: Use absolute paths for images.
+ * doc/xml/images/confdeps.pdf: Add.
+
+ * doc/html/*: Regenerate.
+
+2011-02-08 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/gnu/fdl-1.2.xml: Remove.
+ * doc/xml/gnu/gpl-2.0.xml: Remove.
+ * doc/Makefile.am: Update.
+ * doc/Makefile.in: Regenerate.
+
+2011-02-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47628
+ * include/bits/stl_tree.h (_Rb_tree::erase(iterator), erase(iterator,
+ iterator)): Add back in C++03 mode.
+ * testsuite/23_containers/map/modifiers/erase/47628.cc: New.
+ * testsuite/23_containers/multimap/modifiers/erase/47628.cc: Likewise.
+
+2011-02-07 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/47560 try two
+ * config/os/hpux/os_defines.h: Guard for C++.
+
+2011-02-07 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/faq.xml: Adjust link to bug database.
+ Remove old item on broken header files.
+
+2011-02-04 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/regex_error.h (__throw_regex_error): Not inline.
+ * src/functexcept.cc: Add definition.
+ * config/abi/pre/gnu.ver: Export.
+
+2011-02-04 Ralf Corsépius <ralf.corsepius@rtems.org>
+
+ * crossconfig.m4 (GLIBCXX_CROSSCONFIG): Add *-rtems*.
+ * configure: Regenerate.
+
+2011-02-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/46914
+ * include/bits/atomic_0.h (_ATOMIC_STORE_, _ATOMIC_MODIFY_,
+ _ATOMIC_CMPEXCHNG_): Rename __v -> __w, and __m -> __n, to
+ avoid name conflicts.
+
+2011-02-01 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/47560
+ * config/os/hpux/os_defines.h: Remove use of macros on namespace.
+
+2011-02-01 Benjamin Kosnik <bkoz@redhat.com>
+
+ * scripts/run_doxygen: Allow doxygen 1.7.0 again.
+ * doc/doxygen/user.cfg.in (PDF_HYPERLINKS): Re-enable.
+ (COMPACT_LATEX): Enable.
+
+ * include/profile/impl/profiler_container_size.h: Adjust doxygen markup.
+ * include/profile/impl/profiler_hash_func.h: Same.
+ * include/bits/hashtable.h: Same.
+ * include/backward/auto_ptr.h: Same.
+ * include/backward/strstream: Same.
+ * include/backward/backward_warning.h: Same.
+ * include/backward/binders.h: Same.
+
+2011-02-01 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/manual/debug.xml: Use GDB instead of gdb.
+ Adjust link to GDB manual.
+
+2011-01-31 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/c++config (_GLIBCXX_DEPRECATED): To
+ _GLIBCXX_USE_DEPRECATED.
+ (_GLIBCXX_DEPRECATED_ATTR): To _GLIBCXX_DEPRECATED.
+ * doc/xml/manual/using.xml: Same.
+ * include/std/memory: Same.
+ * include/std/streambuf: Same.
+ * include/bits/shared_ptr.h: Same.
+ * include/bits/unique_ptr.h: Same.
+ * include/bits/shared_ptr_base.h: Same.
+ * include/bits/stl_function.h: Same.
+ * include/tr1/shared_ptr.h: Same.
+ * include/backward/auto_ptr.h: Same.
+ * include/backward/binders.h: Same.
+
+2011-01-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * doc/html/ext/lwg-active.html: Update to Revision D73.
+ * doc/html/ext/lwg-closed.html: Likewise.
+ * doc/html/ext/lwg-defects.html: Likewise.
+ * doc/xml/manual/intro.xml: Update status of issues 408, 539, 865.
+
+2011-01-30 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/36104 part four
+ * include/bits/c++config (_GLIBCXX_STD): Remove.
+ (_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C.
+ (_GLIBCXX_P): Now _GLIBCXX_STD_A.
+ (_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL,
+ _GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove.
+ (_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL,
+ _GLIBCXX_INLINE_PROFILE): Remove.
+ (_GLIBCXX_BEGIN_NAMESPACE(X)): Remove.
+ (_GLIBCXX_END_NAMESPACE): Remove.
+ (_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove.
+ (_GLIBCXX_END_NESTED_NAMESPACE): Remove.
+ (_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add.
+ (_GLIBCXX_END_NAMESPACE_ALGO): Add.
+ (_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add.
+ (_GLIBCXX_END_NAMESPACE_CONTAINER): Add.
+ (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add.
+ (_GLIBCXX_END_NAMESPACE_VERSION): Add.
+ (_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL.
+ (_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL.
+ (_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY.
+ * include/*: Use new macros for namespace scope.
+ * config/*: Same.
+ * src/*: Same.
+
+ * src/Makefile.am (sources): Remove debug_list.cc, add
+ compatibility-debug_list-2.cc.
+ (parallel_sources): Remove parallel_list.cc, add
+ compatibility-parallel_list-2.cc.
+ (compatibility-parallel_list-2.[o,lo]): New rule.
+ * src/Makefile.in: Regenerate.
+ * src/debug_list.cc: Remove.
+ * src/parallel_list.cc: Remove.
+ * src/compatibility-list-2.cc: New.
+ * src/compatibility-debug_list-2.cc: New.
+ * src/compatibility-parallel_list-2.cc: New.
+
+ * doc/doxygen/user.cfg.in: Adjust macros.
+
+ * testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros.
+ * testsuite/20_util/declval/requirements/1_neg.cc: Same.
+ * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
+ * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
+ * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
+ * testsuite/20_util/forward/c_neg.cc: Same.
+ * testsuite/20_util/forward/f_neg.cc: Same.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
+ * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
+ * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same.
+ * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
+ * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_1_neg.cc: Same.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_2_neg.cc: Same.
+ * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
+ * testsuite/23_containers/forward_list/capacity/1.cc: Same.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ assign_neg.cc: Same.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_1_neg.cc: Same.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ constructor_2_neg.cc: Same.
+ * testsuite/23_containers/forward_list/requirements/dr438/
+ insert_neg.cc: Same.
+ * testsuite/23_containers/list/capacity/29134.cc: Same.
+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_1_neg.cc: Same.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_2_neg.cc: Same.
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
+ * testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
+ * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same.
+ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Same.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Same.
+ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
+ * testsuite/25_algorithms/sort/35588.cc: Same.
+ * testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
+ * testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Same.
+ * testsuite/ext/profile/profiler_algos.cc: Same.
+ * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
+ * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
+ * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
+ * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same.
+ * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.
+
+2011-01-30 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/manual/abi.xml: Adjust link to C++ ABI specification.
+ Improve description of one such reference.
+
+2011-01-30 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/manual/codecvt.xml: Fix link to The Austin Common
+ Standards Revision Group.
+ * doc/xml/manual/locale.xml: Ditto.
+ * doc/xml/manual/messages.xml: Ditto.
+ * doc/xml/manual/using_exceptions.xml: Ditto.
+
+2011-01-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/atomic_base.h: Do not include <stddef.h>.
+ (kill_dependency): Uglify ret.
+
+2011-01-26 Johannes Singler <singler@kit.edu>
+
+ * include/parallel/numeric (inner_product, partial_sum):
+ Qualify subsequent call with __gnu_parallel instead of
+ _GLIBCXX_STD_P to reenable parallel execution without ambiguity.
+ * include/parallel/algobase.h (equal): Likewise.
+ * include/parallel/algo.h (find_first_of, search_n, merge,
+ nth_element, partial_sort, max_element, min_element): Likewise.
+ * testsuite/25_algorithms/headers/algorithm/
+ parallel_algorithm_mixed1.cc (main): Add respective test cases.
+ * testsuite/25_algorithms/headers/algorithm/
+ parallel_algorithm_mixed2.cc (main): Likewise.
+ * testsuite/26_numerics/headers/numeric/
+ parallel_numeric_mixed1.cc (main): Likewise.
+ * testsuite/26_numerics/headers/numeric/
+ parallel_numeric_mixed2.cc (main): Likewise.
+
+2011-01-24 Graham Reed <greed@pobox.com>
+
+ PR libstdc++/47387
+ * config/os/aix/ctype_inline.h (ctype<char>::is): Use _M_table if
+ provided.
+
+2011-01-24 Johannes Singler <singler@kit.edu>
+
+ PR libstdc++/47433
+ * include/parallel/losertree.h
+ (_LoserTree<>::__delete_min_insert):
+ Do not qualify swap with std:: for value type,
+ but include a using directive instead.
+ (_LoserTreeUnguarded<>::__delete_min_insert): Likewise.
+ * include/parallel/balanced_quicksort.h (__qsb_divide):
+ Use std::iter_swap instead of std::swap.
+ (__qsb_local_sort_with_helping): Likewise.
+ * include/parallel/partition.h (__parallel_partition):
+ Likewise. (__parallel_nth_element): Likewise.
+
+2011-01-24 Johannes Singler <singler@kit.edu>
+
+ PR libstdc++/47437
+ * include/parallel/multiway_merge.h (_UnguardedIterator):
+ Remove useless "mutable" from reference declaration.
+
+2011-01-21 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/bits/c++config (_GLIBCXX_EXPORT_TEMPLATE): Remove.
+ * include/debug/safe_sequence.h: Same.
+ * include/debug/safe_iterator.h: Same.
+ * include/std/forward_list: Same.
+ * include/std/deque: Same.
+ * include/std/list: Same.
+ * include/std/random: Same.
+ * include/std/streambuf: Same.
+ * include/std/fstream: Same.
+ * include/std/istream: Same.
+ * include/std/string: Same.
+ * include/std/ostream: Same.
+ * include/std/sstream: Same.
+ * include/ext/vstring.h: Same.
+ * include/bits/basic_ios.h: Same.
+ * include/bits/locale_classes.h: Same.
+ * include/bits/locale_facets.h: Same.
+ * include/bits/valarray_array.h: Same.
+ * include/bits/locale_facets_nonio.h: Same.
+ * include/tr1/random: Same.
+
+2011-01-20 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/xml/manual/diagnostics.xml: Replace note about C++0x concepts.
+
+2011-01-20 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/36104 part three
+ * src/hashtable_c++0x.cc: Adjust namespace macros.
+ * testsuite/util/testsuite_rvalref.h: Don't forward declare hash.
+ * config/abi/pre/gnu-versioned-namespace.ver: Update.
+
+2011-01-20 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/ext/pb_ds/detail/resize_policy/
+ hash_load_check_resize_trigger_imp.hpp: Adjust assert condition.
+ * include/ext/pb_ds/detail/pat_trie_/
+ constructors_destructor_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp: Format.
+ * include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp: Same.
+ * include/ext/pb_ds/detail/debug_map_base.hpp: Use never_adjustor.
+
+ * testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Adjust
+ iterations downward when testing in debug mode.
+ * testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Same.
+ * testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Same.
+ * testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Same.
+ * testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Same.
+ * testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Same.
+ * testsuite/ext/pb_ds/example/hash_illegal_resize.cc: Use SIZE,
+ reduce in debug mode.
+
+2011-01-19 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/36104 part two
+ * include/bits/hashtable.h: Revert to non-nested macro usage.
+ * include/bits/hashtable_policy.h: Same.
+
+2011-01-19 Graham Reed <greed@pobox.com>
+
+ PR libstdc++/47354
+ * src/bitmap_allocator.cc (free_list::_M_get): Lock mutex.
+
+2011-01-18 Benjamin Kosnik <bkoz@redhat.com>
+
+ * doc/xml/images/confdeps.png: Regenerate.
+
+ * include/std/chrono (duration): Mark copy constructor constexpr.
+ * testsuite/20_util/duration/cons/constexpr.cc: Add test.
+
+2011-01-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/unique_ptr.h (default_delete<>::default_delete()):
+ Declare defaulted per DR 1517.
+ * testsuite/util/testsuite_common_types.h
+ (constexpr_defaulted_default_constructible): Add.
+ * testsuite/20_util/default_delete/cons/constexpr.cc: Use it.
+
+2011-01-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/stl_queue.h (queue<>::swap, priority_queue<>::swap):
+ Implement DR 1198.
+ * include/bits/stl_stack.h (stack<>::swap): Likewise.
+
+2011-01-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47323
+ * testsuite/28_regex/08_basic_regex/requirements/constexpr_data.cc:
+ Only test wregex when _GLIBCXX_USE_WCHAR_T is defined.
+
+2011-01-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47320
+ * testsuite/18_support/numeric_limits/lowest.cc:
+ Only test wchar_t when _GLIBCXX_USE_WCHAR_T is defined.
+
+2011-01-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47321
+ * testsuite/21_strings/basic_string/requirements/typedefs.cc:
+ Only test std::wstring when _GLIBCXX_USE_WCHAR_T is defined.
+
+2011-01-16 François Dumont <francois.cppdevs@free.fr>
+
+ * testsuite/23_containers/forward_list/debug/erase_after1_neg.cc: Move
+ to this. Use _neg suffix.
+ * testsuite/23_containers/forward_list/debug/erase_after1.cc: ...from
+ this.
+ * testsuite/23_containers/forward_list/debug/erase_after2_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/erase_after2.cc: Same.
+ * testsuite/23_containers/forward_list/debug/erase_after3_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/erase_after3.cc: Same.
+ * testsuite/23_containers/forward_list/debug/erase_after4_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/erase_after4.cc: Same.
+ * testsuite/23_containers/forward_list/debug/erase_after5_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/erase_after5.cc: Same.
+ * testsuite/23_containers/forward_list/debug/erase_after6_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/erase_after6.cc: Same.
+ * testsuite/23_containers/forward_list/debug/erase_after7_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/erase_after7.cc: Same.
+ * testsuite/23_containers/forward_list/debug/erase_after8_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/erase_after8.cc: Same.
+ * testsuite/23_containers/forward_list/debug/erase_after9_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/erase_after9.cc: Same.
+ * testsuite/23_containers/forward_list/debug/insert_after1_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/insert_after1.cc: Same.
+ * testsuite/23_containers/forward_list/debug/insert_after2_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/insert_after2.cc: Same.
+ * testsuite/23_containers/forward_list/debug/insert_after3_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/insert_after3.cc: Same.
+ * testsuite/23_containers/forward_list/debug/splice_after1_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/splice_after1.cc: Same.
+ * testsuite/23_containers/forward_list/debug/splice_after2_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/splice_after2.cc: Same.
+ * testsuite/23_containers/forward_list/debug/splice_after3_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/splice_after3.cc: Same.
+ * testsuite/23_containers/forward_list/debug/splice_after4_neg.cc:
+ Same.
+ * testsuite/23_containers/forward_list/debug/splice_after4.cc: Same.
+
+2011-01-14 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/36104
+ * include/Makefile.am (bits_sup_headers, stamp-bits-sup): New.
+ * include/Makefile.in: Regenerate.
+ * libsupc++/Makefile.am (std_HEADERS, bits_HEADERS): New.
+ (install-stdHEADERS, install-bitsHEADERS): New.
+ * libsupc++/Makefile.in: Regenerate.
+
+ * include/bits/c++config: Update for inline namespaces.
+ * libsupc++/cxxabi-forced.h: To...
+ * libsupc++/cxxabi_forced.h: ...this.
+ * libsupc++/hash_bytes.h: Separate file.
+ * libsupc++/typeinfo: Use it.
+ * libsupc++/exception: Adjust for bits subdirectory.
+ * libsupc++/eh_aux_runtime.cc: Same.
+ * libsupc++/eh_ptr.cc: Same.
+ * libsupc++/new_op.cc: Same.
+ * libsupc++/exception_defines.h: Same.
+ * libsupc++/nested_exception.h: Same.
+ * libsupc++/eh_terminate.cc: Same.
+ * libsupc++/vec.cc: Same.
+ * libsupc++/vterminate.cc: Same.
+ * libsupc++/exception_ptr.h: Same.
+ * libsupc++/eh_personality.cc: Same.
+ * libsupc++/eh_call.cc: Same.
+ * libsupc++/new_opnt.cc: Same.
+ * libsupc++/hash_bytes.cc: Same.
+ * config/cpu/arm/cxxabi_tweaks.h: Same.
+ * config/cpu/generic/cxxabi_tweaks.h: Same.
+ * libsupc++/cxxabi.h: Same. Consolidate _GLIBCXX_NOTHROW defines.
+ * include/std/bitset: Same.
+ * include/ext/vstring.tcc: Same.
+ * include/bits/hashtable.h: Same.
+ * include/bits/functional_hash.h: Same.
+ * include/bits/hashtable_policy.h: Same.
+ * include/bits/basic_string.h: Same.
+ * include/bits/istream.tcc: Same.
+ * include/bits/ostream.tcc: Same.
+ * include/bits/algorithmfwd.h: Same.
+ * include/bits/basic_string.tcc: Same.
+ * include/bits/ostream_insert.h: Same.
+ * include/bits/fstream.tcc: Same.
+ * include/bits/functexcept.h: Same.
+
+ * doc/doxygen/user.cfg.in: Adjust names.
+
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.
+
+2011-01-14 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/25_algorithms/is_permutation/check_type.cc: Minor
+ tweaks.
+ * testsuite/25_algorithms/is_permutation/1.cc: Cosmetic changes.
+
+2011-01-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * testsuite/25_algorithms/is_permutation/check_type.cc: New.
+ * testsuite/25_algorithms/is_permutation/requirements/
+ explicit_instantiation/2.cc: Likewise.
+ * testsuite/25_algorithms/is_permutation/requirements/
+ explicit_instantiation/pod.cc: Likewise.
+ * testsuite/25_algorithms/is_permutation/1.cc: Likewise.
+
+2011-01-13 John Lakos <jlakos@bloomberg.net>
+ Pablo Halpern <phalpern@halpernwightsoftware.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/stl_algo.h (is_permutation): Add, per N3068.
+ * include/bits/algorithmfwd.h: Add.
+
+2011-01-13 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/47045
+ * config/os/bsd/netbsd/ctype_base.h: Use new macros based on version.
+
+2011-01-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * aclocal.m4: Regenerate.
+
+2011-01-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/47185
+ * src/placeholders.cc: New.
+ * src/Makefile.am: Adjust.
+ * src/Makefile.in: Regenerate.
+ * include/std/functional (placeholders::_1, _2, ..., _29): Declare
+ extern.
+ * config/abi/pre/gnu.ver: Export.
+
+2011-01-05 François Dumont <francois.cppdevs@free.fr>
+
+ * include/debug/safe_base.h (_Safe_iterator_base::_M_unlink): New.
+ * include/src/debug.cc: Use latter
+ * include/debug/forward_list (forward_list<>::_M_swap): Fix to
+ correctly handle before_begin iterators.
+ * testsuite/23_containers/forward_list/debug/swap.cc: Remove now
+ useless _GLIBCXX_DEBUG checks.
+
+2011-01-04 Kai Tietz <kai.tietz@onevision.com>
+
+ PR libstdc++/47145
+ * configure.ac (AC_CHECK_FILE): Replaced by test -f.
+ * configure: Regenerated.
+
+2011-01-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/46922
+ * config/abi/pre/gnu.ver: Export std::bad_function_call symbols.
+
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/libstdc++-v3/doc/xml/manual/debug.xml b/libstdc++-v3/doc/xml/manual/debug.xml
index 05994ec17a9..7ee2abf6988 100644
--- a/libstdc++-v3/doc/xml/manual/debug.xml
+++ b/libstdc++-v3/doc/xml/manual/debug.xml
@@ -207,14 +207,24 @@
redefining them will only affect inline functions and template
instantiations which are compiled in user code. This allows annotation
of templates such as <code>shared_ptr</code>, but not code which is
- only instantiated in the library.
- In order to annotate <code>basic_string</code> reference counting it
- is necessary to disable extern templates (by defining
- <code>_GLIBCXX_EXTERN_TEMPLATE=-1</code>) or to rebuild the
- <code>.so</code> file.
+ only instantiated in the library. Code which is only instantiated in
+ the library needs to be recompiled with the annotation macros defined.
+ That can be done by rebuilding the entire
+ <filename class="libraryfile">libstdc++.so</filename> file but a simpler
+ alternative exists for ELF platforms such as GNU/Linux, because ELF
+ symbol interposition allows symbols defined in the shared library to be
+ overridden by symbols with the same name that appear earlier in the
+ runtime search path. This means you only need to recompile the functions
+ that are affected by the annotation macros, which can be done by
+ recompiling individual files.
+ Annotating <code>std::string</code> and <code>std::wstring</code>
+ reference counting can be done by disabling extern templates (by defining
+ <code>_GLIBCXX_EXTERN_TEMPLATE=-1</code>) or by rebuilding the
+ <filename>src/string-inst.cc</filename> file.
Annotating the remaining atomic operations (at the time of writing these
- are in <code>ios_base::Init::~Init</code>, <code>locale::_Impl</code> and
- <code>locale::facet</code>) requires rebuilding the <code>.so</code> file.
+ are in <code>ios_base::Init::~Init</code>, <code>locale::_Impl</code>,
+ <code>locale::facet</code> and <code>thread::_M_start_thread</code>)
+ requires rebuilding the relevant source files.
</para>
<para>
diff --git a/libstdc++-v3/include/bits/hashtable.h b/libstdc++-v3/include/bits/hashtable.h
index aeb330cef2f..c9f341957a9 100644
--- a/libstdc++-v3/include/bits/hashtable.h
+++ b/libstdc++-v3/include/bits/hashtable.h
@@ -371,7 +371,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Observers
key_equal
key_eq() const
- { return this->_M_eq; }
+ { return this->_M_eq(); }
// hash_function, if present, comes from _Hash_code_base.
diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h
index 66386e81ef4..993f63007d8 100644
--- a/libstdc++-v3/include/bits/hashtable_policy.h
+++ b/libstdc++-v3/include/bits/hashtable_policy.h
@@ -876,7 +876,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
std::swap(_M_eq(), __x._M_eq());
}
- private:
+ protected:
const _Equal&
_M_eq() const { return _EboEqual::_S_cget(*this); }
_Equal&
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index 4197c081d9c..81c33c733e6 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -687,6 +687,49 @@ class Tr1UnorderedMapPrinter:
def display_hint (self):
return 'map'
+class StdForwardListPrinter:
+ "Print a std::forward_list"
+
+ class _iterator:
+ def __init__(self, nodetype, head):
+ self.nodetype = nodetype
+ self.base = head['_M_next']
+ self.count = 0
+
+ def __iter__(self):
+ return self
+
+ def next(self):
+ if self.base == 0:
+ raise StopIteration
+ elt = self.base.cast(self.nodetype).dereference()
+ self.base = elt['_M_next']
+ count = self.count
+ self.count = self.count + 1
+ return ('[%d]' % count, elt['_M_value'])
+
+ def __init__(self, typename, val):
+ self.val = val
+ self.typename = typename
+
+ def children(self):
+ itype = self.val.type.template_argument(0)
+ # If the inferior program is compiled with -D_GLIBCXX_DEBUG
+ # some of the internal implementation details change.
+ if self.typename == "std::forward_list":
+ nodetype = gdb.lookup_type('std::_Fwd_list_node<%s>' % itype).pointer()
+ elif self.typename == "std::__debug::list":
+ nodetype = gdb.lookup_type('std::__norm::_Fwd_list_node<%s>' % itype).pointer()
+ else:
+ raise ValueError, "Cannot cast forward_list node for forward_list printer."
+ return self._iterator(nodetype, self.val['_M_impl']['_M_head'])
+
+ def to_string(self):
+ if self.val['_M_impl']['_M_head']['_M_next'] == 0:
+ return 'empty %s' % (self.typename)
+ return '%s' % (self.typename)
+
+
# A "regular expression" printer which conforms to the
# "SubPrettyPrinter" protocol from gdb.printing.
class RxPrinter(object):
@@ -812,6 +855,7 @@ def build_libstdcxx_dictionary ():
libstdcxx_printer.add('std::unordered_set', Tr1UnorderedSetPrinter)
libstdcxx_printer.add('std::unordered_multimap', Tr1UnorderedMapPrinter)
libstdcxx_printer.add('std::unordered_multiset', Tr1UnorderedSetPrinter)
+ libstdcxx_printer.add('std::forward_list', StdForwardListPrinter)
libstdcxx_printer.add('std::tr1::shared_ptr', StdPointerPrinter)
libstdcxx_printer.add('std::tr1::weak_ptr', StdPointerPrinter)
@@ -833,6 +877,8 @@ def build_libstdcxx_dictionary ():
Tr1UnorderedMapPrinter)
libstdcxx_printer.add('std::__debug::unordered_multiset',
Tr1UnorderedSetPrinter)
+ libstdcxx_printer.add('std::__debug::forward_list',
+ StdForwardListPrinter)
# Extensions.
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc
new file mode 100644
index 00000000000..4a6847e5c0b
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc
@@ -0,0 +1,30 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2012 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 Pred the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <unordered_map>
+
+void
+test01()
+{
+ std::unordered_map<int, int> um;
+
+ auto ke = um.key_eq();
+ auto h = um.hash_function();
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc
new file mode 100644
index 00000000000..634bd9d3b68
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc
@@ -0,0 +1,30 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2012 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 Pred the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <unordered_map>
+
+void
+test01()
+{
+ std::unordered_multimap<int, int> um;
+
+ auto ke = um.key_eq();
+ auto h = um.hash_function();
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc
new file mode 100644
index 00000000000..0ea3e5bf0c8
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc
@@ -0,0 +1,30 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2012 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 Pred the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <unordered_set>
+
+void
+test01()
+{
+ std::unordered_multiset<int> us;
+
+ auto ke = us.key_eq();
+ auto h = us.hash_function();
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc
new file mode 100644
index 00000000000..c18b0598464
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc
@@ -0,0 +1,30 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2012 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 Pred the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <unordered_set>
+
+void
+test01()
+{
+ std::unordered_set<int> us;
+
+ auto ke = us.key_eq();
+ auto h = us.hash_function();
+}
diff --git a/libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
index 49d44bc22d7..12fa6fe40ef 100644
--- a/libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
+++ b/libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
@@ -39,7 +39,7 @@ verify_demangle("_Z1fPFYPFiiEiE",
verify_demangle("_Z1fI1XENT_1tES2_",
"X::t f<X>(X::t)");
verify_demangle("_Z1fILi5E1AEvN1CIXstN1T1tEEXszsrS2_1tEE1qE",
- "void f<5, A>(C<sizeof (T::t), sizeof (T::t)>::q)");
+ "void f<5, A>(C<sizeof (T::t), sizeof T::t>::q)");
// 2003/12/03, libstdc++/13045
verify_demangle("_Z1fILi1ELc120EEv1AIXplT_cviLd4028ae147ae147aeEEE",
"void f<1, (char)120>(A<(1)+((int)((double)[4028ae147ae147ae]))>)");
diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
new file mode 100644
index 00000000000..6915526d90b
--- /dev/null
+++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
@@ -0,0 +1,82 @@
+// { dg-do run }
+// { dg-options "-std=gnu++11 -g" }
+
+// 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 <forward_list>
+#include <unordered_map>
+#include <unordered_set>
+#include <string>
+#include <iostream>
+
+template<class T>
+void
+placeholder(const T &s)
+{
+ std::cout << s;
+}
+
+template<class T, class S>
+void
+placeholder(const std::pair<T,S> &s)
+{
+ std::cout << s.first;
+}
+
+template<class T>
+void
+use(const T &container)
+{
+ for (typename T::const_iterator i = container.begin();
+ i != container.end();
+ ++i)
+ placeholder(*i);
+}
+
+int
+main()
+{
+ std::forward_list<int> efl;
+// { dg-final { note-test efl "empty std::forward_list" } }
+
+ std::forward_list<int> fl;
+ fl.push_front(2);
+ fl.push_front(1);
+// { dg-final { note-test fl {std::forward_list = {[0] = 1, [1] = 2}} } }
+
+ std::unordered_map<int, std::string> eum;
+// { dg-final { note-test eum "std::unordered_map with 0 elements" } }
+ std::unordered_multimap<int, std::string> eumm;
+// { dg-final { note-test eumm "std::unordered_multimap with 0 elements" } }
+ std::unordered_set<int> eus;
+// { dg-final { note-test eus "std::unordered_set with 0 elements" } }
+ std::unordered_multiset<int> eums;
+// { dg-final { note-test eums "std::unordered_multiset with 0 elements" } }
+
+ placeholder(""); // Mark SPOT
+ use(efl);
+ use(fl);
+ use(eum);
+ use(eumm);
+ use(eus);
+ use(eums);
+
+ return 0;
+}
+
+// { dg-final { gdb-test SPOT } }