diff options
author | Christophe Lyon <christophe.lyon@linaro.org> | 2013-06-03 15:36:38 +0200 |
---|---|---|
committer | Christophe Lyon <christophe.lyon@linaro.org> | 2013-06-03 15:36:38 +0200 |
commit | b7f4a06f14d06b8b889e2f6825a1ba5aec1f0412 (patch) | |
tree | 185c2253541c56a84ac5d84e7a7581ed54fa0a74 | |
parent | 0378e0c6a031e5fa8b6fa16b4df73256823b978d (diff) |
2013-06-03 Christophe lyon <christophe.lyon@linaro.org>
Merge from FSF GCC 4.7.4 (svn branches/gcc-4_7-branch 199594).
33 files changed, 557 insertions, 93 deletions
diff --git a/ChangeLog.linaro b/ChangeLog.linaro index 031c23c1245..9c3a619e263 100644 --- a/ChangeLog.linaro +++ b/ChangeLog.linaro @@ -1,3 +1,7 @@ +2013-06-03 Christophe lyon <christophe.lyon@linaro.org> + + Merge from FSF GCC 4.7.4 (svn branches/gcc-4_7-branch 199594). + 2013-05-14 Yvan Roux <yvan.roux@linaro.org> gcc/ diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 19e3766dd09..d6ed9bbf2bf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,97 @@ +2013-05-22 Uros Bizjak <ubizjak@gmail.com> + + PR target/57356 + * config/i386/i386.md (*movti_internal_rex64): Emit movaps/movups + for non-sse2 targets. Simplify mode attribute calculation. + +2013-05-17 Uros Bizjak <ubizjak@gmail.com> + + Backport from mainline + 2013-05-16 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/driver-i386.c (host_detect_local_cpu): Determine + cache parameters using detect_caches_amd also for CYRIX, + NSC and TM2 signatures. + + 2013-05-16 Uros Bizjak <ubizjak@gmail.com> + Dzianis Kahanovich <mahatma@eu.by> + + PR target/45359 + PR target/46396 + * config/i386/driver-i386.c (host_detect_local_cpu): Detect + VIA/Centaur processors and determine their cache parameters + using detect_caches_amd. + + 2013-05-15 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/i386.c (ix86_option_override_internal): Add + PTA_POPCNT to corei7 entry. + +2013-05-14 Richard Biener <rguenther@suse.de> + + PR gcov-profile/57269 + Backport from mainline + 2012-06-30 Nathan Sidwell <nathan@acm.org> + + * coverage.c (coverage_init): Read counts file before writing + graph header. + +2013-05-13 Uros Bizjak <ubizjak@gmail.com> + + PR target/57264 + Backport from mainline + 2013-01-22 Jakub Jelinek <jakub@redhat.com> + + PR target/55686 + * config/i386/i386.md (UNSPEC_STOS): New. + (strset_singleop, *strsetdi_rex_1, *strsetsi_1, *strsethi_1, + *strsetqi_1): Add UNSPEC_STOS. + +2013-05-10 Joey Ye <joey.ye@arm.com> + + Backport from mainline + 2012-11-29 Matthew Gretton-Dann <matthew.gretton-dann@linaro.org> + + PR target/54974 + * config/arm/arm.md (thumb2_pool_range, pool_range): Add comment on + Thumb pool ranges. + (thumb1_extendhisi2): Reduce Thumb pool range. + (arm_movdi): Likewise. + (thumb1_movdi_insn): Likewise. + (thumb1_movsi_insn): Likewise. + (pic_load_addr_unified): Likewise. + (pic_load_addr_32bit): Likewise. + (pic_load_addr_thumb1): Likewise. + (thumb1_movhf): Likewise. + (arm_movsf_soft_insn): Likewise. + (thumb1_movsf_soft_insn): Likewise. + (movdf_soft_insn): Likewise. + (thumb1_movdf_soft_insn): Likewise. + * config/arm/neon.md (*neon_mov<mode>): Likewise. + (*neon_mov<mode>): Likwise. + * config/arm/thumb2.md: (*thumb2_movsi_insn): Likewise. + (*thumb2_movhi_insn): Likewise. + (*thumb2_extendqisi_v6): Likewise. + (*thumb2_zero_extendqisi_v6): Likewise. + (*thumb2_zero_extendqisi2_v6): Likewise. + * config/arm/vfp.md: (*thumb2_movsi_vfp): Likewise. + (*movdi_vfp): Likewise. + (*movdi_vfp_cortexa8): Likewise. + (*thumb2_movsf_vfp): Likewise. + (*thumb2_movdf_vfp): Likewise. + +2013-05-10 Sebastian Huber <sebastian.huber@embedded-brains.de> + + * config/arm/t-rtems-eabi: Remove mthumb/march=armv7 multilib. + Add mthumb/march=armv7-a multilib. + Add mthumb/march=armv7-r multilib. + Add mthumb/march=armv7-a/mfpu=neon/mfloat-abi=hard multilib. + +2013-05-10 Ralf Corsépius <ralf.corsepius@rtems.org> + + PR target/57237 + * config/v850/t-rtems: Add more multilibs. + 2013-05-07 Michael Meissner <meissner@linux.vnet.ibm.com> Backport from trunk @@ -20,7 +114,7 @@ 2013-04-25 Marek Polacek <polacek@redhat.com> PR tree-optimization/57066 - * builtins.c (fold_builtin_logb): Return +Inf for -Inf. + * builtins.c (fold_builtin_logb): Return +Inf for -Inf. 2013-04-30 Uros Bizjak <ubizjak@gmail.com> diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 752cc68d275..028663d57e6 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20130508 +20130603 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index af231667fe6..3da582dd2d6 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2013-05-26 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Last_Bit>: Add kludge + to avoid generating an overflow for -1. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index aabe9b6bd02..e5f8351242a 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -1901,14 +1901,19 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute) gnu_result = bitsize_int (bitpos % BITS_PER_UNIT); gnu_result = size_binop (PLUS_EXPR, gnu_result, TYPE_SIZE (TREE_TYPE (gnu_prefix))); - gnu_result = size_binop (MINUS_EXPR, gnu_result, - bitsize_one_node); + /* ??? Avoid a large unsigned result that will overflow when + converted to the signed universal_integer. */ + if (integer_zerop (gnu_result)) + gnu_result = integer_minus_one_node; + else + gnu_result + = size_binop (MINUS_EXPR, gnu_result, bitsize_one_node); break; case Attr_Bit_Position: gnu_result = gnu_field_bitpos; break; - } + } /* If this has a PLACEHOLDER_EXPR, qualify it by the object we are handling. */ diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 85f9609dfd3..9a745e8c1cf 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -278,6 +278,9 @@ ; POOL_RANGE is how far away from a constant pool entry that this insn ; can be placed. If the distance is zero, then this insn will never ; reference the pool. +; Note that for Thumb constant pools the PC value is rounded down to the +; nearest multiple of four. Therefore, THUMB2_POOL_RANGE (and POOL_RANGE for +; Thumb insns) should be set to <max_range> - 2. ; NEG_POOL_RANGE is nonzero for insns that can reference a constant pool entry ; before its address. It is set to <max_range> - (8 + <data_size>). (define_attr "arm_pool_range" "" (const_int 0)) @@ -5058,7 +5061,7 @@ (const_int 2) (const_int 4)) (const_int 4)]) (set_attr "type" "simple_alu_shift,load_byte") - (set_attr "pool_range" "*,1020")] + (set_attr "pool_range" "*,1018")] ) ;; This pattern will only be used when ldsh is not available @@ -5464,7 +5467,7 @@ (set_attr "type" "*,*,*,load2,store2") (set_attr "arm_pool_range" "*,*,*,1020,*") (set_attr "arm_neg_pool_range" "*,*,*,1004,*") - (set_attr "thumb2_pool_range" "*,*,*,4096,*") + (set_attr "thumb2_pool_range" "*,*,*,4094,*") (set_attr "thumb2_neg_pool_range" "*,*,*,0,*")] ) @@ -5604,7 +5607,7 @@ [(set_attr "length" "4,4,6,2,2,6,4,4") (set_attr "type" "*,*,*,load2,store2,load2,store2,*") (set_attr "insn" "*,mov,*,*,*,*,*,mov") - (set_attr "pool_range" "*,*,*,*,*,1020,*,*")] + (set_attr "pool_range" "*,*,*,*,*,1018,*,*")] ) (define_expand "movsi" @@ -5764,7 +5767,7 @@ mov\\t%0, %1" [(set_attr "length" "2,2,4,4,2,2,2,2,2") (set_attr "type" "*,*,*,*,load1,store1,load1,store1,*") - (set_attr "pool_range" "*,*,*,*,*,*,1020,*,*") + (set_attr "pool_range" "*,*,*,*,*,*,1018,*,*") (set_attr "conds" "set,clob,*,*,nocond,nocond,nocond,nocond,nocond")]) (define_split @@ -5857,7 +5860,7 @@ (match_dup 2)] UNSPEC_PIC_BASE))] "operands[3] = TARGET_THUMB ? GEN_INT (4) : GEN_INT (8);" [(set_attr "type" "load1,load1,load1") - (set_attr "pool_range" "4096,4096,1024") + (set_attr "pool_range" "4096,4094,1022") (set_attr "neg_pool_range" "4084,0,0") (set_attr "arch" "a,t2,t1") (set_attr "length" "8,6,4")] @@ -5873,7 +5876,10 @@ "TARGET_32BIT && flag_pic" "ldr%?\\t%0, %1" [(set_attr "type" "load1") - (set_attr "pool_range" "4096") + (set (attr "pool_range") + (if_then_else (eq_attr "is_thumb" "no") + (const_int 4096) + (const_int 4094))) (set (attr "neg_pool_range") (if_then_else (eq_attr "is_thumb" "no") (const_int 4084) @@ -5886,7 +5892,7 @@ "TARGET_THUMB1 && flag_pic" "ldr\\t%0, %1" [(set_attr "type" "load1") - (set (attr "pool_range") (const_int 1024))] + (set (attr "pool_range") (const_int 1018))] ) (define_insn "pic_add_dot_plus_four" @@ -6691,7 +6697,7 @@ [(set_attr "length" "2") (set_attr "type" "*,load1,store1,*,*") (set_attr "insn" "mov,*,*,mov,mov") - (set_attr "pool_range" "*,1020,*,*,*") + (set_attr "pool_range" "*,1018,*,*,*") (set_attr "conds" "clob,nocond,nocond,nocond,nocond")]) (define_expand "movsf" @@ -6746,7 +6752,8 @@ [(set_attr "predicable" "yes") (set_attr "type" "*,load1,store1") (set_attr "insn" "mov,*,*") - (set_attr "pool_range" "*,4096,*") + (set_attr "arm_pool_range" "*,4096,*") + (set_attr "thumb2_pool_range" "*,4094,*") (set_attr "arm_neg_pool_range" "*,4084,*") (set_attr "thumb2_neg_pool_range" "*,0,*")] ) @@ -6768,7 +6775,7 @@ mov\\t%0, %1" [(set_attr "length" "2") (set_attr "type" "*,load1,store1,load1,store1,*,*") - (set_attr "pool_range" "*,*,*,1020,*,*,*") + (set_attr "pool_range" "*,*,*,1018,*,*,*") (set_attr "insn" "*,*,*,*,*,mov,mov") (set_attr "conds" "clob,nocond,nocond,nocond,nocond,nocond,nocond")] ) @@ -6857,7 +6864,8 @@ " [(set_attr "length" "8,12,16,8,8") (set_attr "type" "*,*,*,load2,store2") - (set_attr "pool_range" "*,*,*,1020,*") + (set_attr "arm_pool_range" "*,*,*,1020,*") + (set_attr "thumb2_pool_range" "*,*,*,1018,*") (set_attr "arm_neg_pool_range" "*,*,*,1004,*") (set_attr "thumb2_neg_pool_range" "*,*,*,0,*")] ) @@ -6900,7 +6908,7 @@ [(set_attr "length" "4,2,2,6,4,4") (set_attr "type" "*,load2,store2,load2,store2,*") (set_attr "insn" "*,*,*,*,*,mov") - (set_attr "pool_range" "*,*,*,1020,*,*")] + (set_attr "pool_range" "*,*,*,1018,*,*")] ) (define_expand "movxf" diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index 12d5f2dc00a..107fa6caec5 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -197,7 +197,8 @@ (set_attr "type" "*,f_stored,*,f_loadd,*,*,alu_reg,load2,store2") (set_attr "insn" "*,*,*,*,*,*,mov,*,*") (set_attr "length" "4,4,4,4,4,4,8,8,8") - (set_attr "pool_range" "*,*,*,1020,*,*,*,1020,*") + (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*") + (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,1004,*,*,*,1004,*")]) (define_insn "*neon_mov<mode>" @@ -242,7 +243,8 @@ (set_attr "type" "*,*,*,*,*,*,alu_reg,load4,store4") (set_attr "insn" "*,*,*,*,*,*,mov,*,*") (set_attr "length" "4,8,4,8,8,8,16,8,16") - (set_attr "pool_range" "*,*,*,1020,*,*,*,1020,*") + (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*") + (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,996,*,*,*,996,*")]) (define_expand "movti" diff --git a/gcc/config/arm/t-rtems-eabi b/gcc/config/arm/t-rtems-eabi index f0e714a9bc5..d81fbf7ec1a 100644 --- a/gcc/config/arm/t-rtems-eabi +++ b/gcc/config/arm/t-rtems-eabi @@ -1,8 +1,47 @@ # Custom RTEMS EABI multilibs -MULTILIB_OPTIONS = mthumb march=armv6-m/march=armv7/march=armv7-m -MULTILIB_DIRNAMES = thumb armv6-m armv7 armv7-m -MULTILIB_EXCEPTIONS = march=armv6-m march=armv7 march=armv7-m -MULTILIB_MATCHES = -MULTILIB_EXCLUSIONS = -MULTILIB_OSDIRNAMES = +MULTILIB_OPTIONS = mthumb march=armv6-m/march=armv7-a/march=armv7-r/march=armv7-m mfpu=neon mfloat-abi=hard +MULTILIB_DIRNAMES = thumb armv6-m armv7-a armv7-r armv7-m neon hard + +# Enumeration of multilibs + +MULTILIB_EXCEPTIONS = +MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=neon +MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfloat-abi=hard +# MULTILIB_EXCEPTIONS += mthumb/march=armv6-m +# MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=neon +MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfloat-abi=hard +# MULTILIB_EXCEPTIONS += mthumb/march=armv7-a +MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=neon +MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfloat-abi=hard +# MULTILIB_EXCEPTIONS += mthumb/march=armv7-r +MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=neon +MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfloat-abi=hard +# MULTILIB_EXCEPTIONS += mthumb/march=armv7-m +MULTILIB_EXCEPTIONS += mthumb/mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += mthumb/mfpu=neon +MULTILIB_EXCEPTIONS += mthumb/mfloat-abi=hard +# MULTILIB_EXCEPTIONS += mthumb +MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=neon +MULTILIB_EXCEPTIONS += march=armv6-m/mfloat-abi=hard +MULTILIB_EXCEPTIONS += march=armv6-m +MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=neon +MULTILIB_EXCEPTIONS += march=armv7-a/mfloat-abi=hard +MULTILIB_EXCEPTIONS += march=armv7-a +MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=neon +MULTILIB_EXCEPTIONS += march=armv7-r/mfloat-abi=hard +MULTILIB_EXCEPTIONS += march=armv7-r +MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=neon +MULTILIB_EXCEPTIONS += march=armv7-m/mfloat-abi=hard +MULTILIB_EXCEPTIONS += march=armv7-m +MULTILIB_EXCEPTIONS += mfpu=neon/mfloat-abi=hard +MULTILIB_EXCEPTIONS += mfpu=neon +MULTILIB_EXCEPTIONS += mfloat-abi=hard diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index 9658ccd1366..06db9fcdd68 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -184,7 +184,7 @@ str%?\\t%1, %0" [(set_attr "type" "*,*,simple_alu_imm,*,load1,load1,store1,store1") (set_attr "predicable" "yes") - (set_attr "pool_range" "*,*,*,*,1020,4096,*,*") + (set_attr "pool_range" "*,*,*,*,1018,4094,*,*") (set_attr "neg_pool_range" "*,*,*,*,0,0,*,*")] ) @@ -219,7 +219,7 @@ ldr%(h%)\\t%0, %1\\t%@ movhi" [(set_attr "type" "*,*,store1,load1") (set_attr "predicable" "yes") - (set_attr "pool_range" "*,*,*,4096") + (set_attr "pool_range" "*,*,*,4094") (set_attr "neg_pool_range" "*,*,*,250")] ) @@ -572,7 +572,7 @@ ldr%(sb%)\\t%0, %1" [(set_attr "type" "simple_alu_shift,load_byte") (set_attr "predicable" "yes") - (set_attr "pool_range" "*,4096") + (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] ) @@ -585,7 +585,7 @@ ldr%(h%)\\t%0, %1" [(set_attr "type" "simple_alu_shift,load_byte") (set_attr "predicable" "yes") - (set_attr "pool_range" "*,4096") + (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] ) @@ -598,7 +598,7 @@ ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2" [(set_attr "type" "simple_alu_shift,load_byte") (set_attr "predicable" "yes") - (set_attr "pool_range" "*,4096") + (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] ) diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index aecb9bf4273..e90b99f1ef2 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -130,7 +130,7 @@ (set_attr "type" "*,*,*,*,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores") (set_attr "neon_type" "*,*,*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*") (set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*,*,*") - (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,*,1020,*") + (set_attr "pool_range" "*,*,*,*,1018,4094,*,*,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,*, 0, 0,*,*,*,*,*,1008,*")] ) @@ -183,7 +183,8 @@ (const_int 8) (const_int 4))] (const_int 4))) - (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,1020,*") + (set_attr "arm_pool_range" "*,*,*,*,1020,4096,*,*,*,*,1020,*") + (set_attr "thumb2_pool_range" "*,*,*,*,1018,4094,*,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") (set_attr "arch" "t2,any,any,any,a,t2,any,any,any,any,any,any")] ) @@ -230,7 +231,8 @@ * 4")] (const_int 4))) (set_attr "predicable" "yes") - (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,1020,*") + (set_attr "arm_pool_range" "*,*,*,*,1018,4094,*,*,*,*,1018,*") + (set_attr "thumb2_pool_range" "*,*,*,*,1018,4094,*,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") (set (attr "ce_count") (symbol_ref "get_attr_length (insn) / 4")) @@ -419,7 +421,7 @@ "r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,*") (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*") (set_attr "insn" "*,*,*,*,*,*,*,*,mov") - (set_attr "pool_range" "*,*,*,1020,*,4092,*,*,*") + (set_attr "pool_range" "*,*,*,1018,*,4090,*,*,*") (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")] ) @@ -513,7 +515,7 @@ (const_int 8) (const_int 4))] (const_int 4))) - (set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*") + (set_attr "pool_range" "*,*,*,1018,*,4094,*,*,*") (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")] ) diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index 7b5e4d7c145..64bae0de689 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -350,7 +350,10 @@ detect_caches_intel (bool xeon_mp, unsigned max_level, enum vendor_signatures { SIG_INTEL = 0x756e6547 /* Genu */, - SIG_AMD = 0x68747541 /* Auth */ + SIG_AMD = 0x68747541 /* Auth */, + SIG_CENTAUR = 0x746e6543 /* Cent */, + SIG_CYRIX = 0x69727943 /* Cyri */, + SIG_NSC = 0x646f6547 /* Geod */ }; enum processor_signatures @@ -510,7 +513,10 @@ const char *host_detect_local_cpu (int argc, const char **argv) if (!arch) { - if (vendor == SIG_AMD) + if (vendor == SIG_AMD + || vendor == SIG_CENTAUR + || vendor == SIG_CYRIX + || vendor == SIG_NSC) cache = detect_caches_amd (ext_level); else if (vendor == SIG_INTEL) { @@ -549,6 +555,37 @@ const char *host_detect_local_cpu (int argc, const char **argv) else processor = PROCESSOR_PENTIUM; } + else if (vendor == SIG_CENTAUR) + { + if (arch) + { + switch (family) + { + case 6: + if (model > 9) + /* Use the default detection procedure. */ + processor = PROCESSOR_GENERIC32; + else if (model == 9) + cpu = "c3-2"; + else if (model >= 6) + cpu = "c3"; + else + processor = PROCESSOR_GENERIC32; + break; + case 5: + if (has_3dnow) + cpu = "winchip2"; + else if (has_mmx) + cpu = "winchip2-c6"; + else + processor = PROCESSOR_GENERIC32; + break; + default: + /* We have no idea. */ + processor = PROCESSOR_GENERIC32; + } + } + } else { switch (family) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index cd117d40da0..5bcb7e0db92 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2979,7 +2979,7 @@ ix86_option_override_internal (bool main_args_p) | PTA_SSSE3 | PTA_CX16}, {"corei7", PROCESSOR_COREI7_64, CPU_COREI7, PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 - | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_CX16}, + | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_CX16 | PTA_POPCNT}, {"corei7-avx", PROCESSOR_COREI7_64, CPU_COREI7, PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 627beee98f9..b0e278e917c 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -109,6 +109,7 @@ UNSPEC_CALL_NEEDS_VZEROUPPER UNSPEC_PAUSE UNSPEC_LEA_ADDR + UNSPEC_STOS ;; For SSE/MMX support: UNSPEC_FIX_NOTRUNC @@ -1855,18 +1856,16 @@ [(set_attr "type" "*,*,sselog1,ssemov,ssemov") (set_attr "prefix" "*,*,maybe_vex,maybe_vex,maybe_vex") (set (attr "mode") - (cond [(eq_attr "alternative" "2,3") - (if_then_else - (match_test "optimize_function_for_size_p (cfun)") - (const_string "V4SF") - (const_string "TI")) - (eq_attr "alternative" "4") - (if_then_else - (ior (match_test "TARGET_SSE_TYPELESS_STORES") - (match_test "optimize_function_for_size_p (cfun)")) - (const_string "V4SF") - (const_string "TI"))] - (const_string "DI")))]) + (cond [(eq_attr "alternative" "0,1") + (const_string "DI") + (ior (not (match_test "TARGET_SSE2")) + (match_test "optimize_function_for_size_p (cfun)")) + (const_string "V4SF") + (and (eq_attr "alternative" "4") + (match_test "TARGET_SSE_TYPELESS_STORES")) + (const_string "V4SF") + ] + (const_string "TI")))]) (define_split [(set (match_operand:TI 0 "nonimmediate_operand" "") @@ -15912,7 +15911,8 @@ [(parallel [(set (match_operand 1 "memory_operand" "") (match_operand 2 "register_operand" "")) (set (match_operand 0 "register_operand" "") - (match_operand 3 "" ""))])] + (match_operand 3 "" "")) + (unspec [(const_int 0)] UNSPEC_STOS)])] "" "ix86_current_function_needs_cld = 1;") @@ -15921,7 +15921,8 @@ (match_operand:DI 2 "register_operand" "a")) (set (match_operand:DI 0 "register_operand" "=D") (plus:DI (match_dup 1) - (const_int 8)))] + (const_int 8))) + (unspec [(const_int 0)] UNSPEC_STOS)] "TARGET_64BIT && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosq" @@ -15934,7 +15935,8 @@ (match_operand:SI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) - (const_int 4)))] + (const_int 4))) + (unspec [(const_int 0)] UNSPEC_STOS)] "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stos{l|d}" [(set_attr "type" "str") @@ -15946,7 +15948,8 @@ (match_operand:HI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) - (const_int 2)))] + (const_int 2))) + (unspec [(const_int 0)] UNSPEC_STOS)] "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosw" [(set_attr "type" "str") @@ -15958,7 +15961,8 @@ (match_operand:QI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) - (const_int 1)))] + (const_int 1))) + (unspec [(const_int 0)] UNSPEC_STOS)] "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosb" [(set_attr "type" "str") diff --git a/gcc/config/v850/t-rtems b/gcc/config/v850/t-rtems index c3f4ee4f836..c0427e5fd2c 100644 --- a/gcc/config/v850/t-rtems +++ b/gcc/config/v850/t-rtems @@ -1,3 +1,7 @@ # Custom multilibs for RTEMS +MULTILIB_OPTIONS = mv850/mv850e/mv850e2/mv850e2v3 +MULTILIB_DIRNAMES = v850 v850e v850e2 v850e2v3 +MULTILIB_MATCHES = mv850e=mv850e1 + MULTILIB_MATCHES += mv850e=mv850es diff --git a/gcc/coverage.c b/gcc/coverage.c index ce8b175d2f7..c64125ad58b 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -1099,6 +1099,9 @@ coverage_init (const char *filename) memcpy (da_file_name + prefix_len, filename, len); strcpy (da_file_name + prefix_len + len, GCOV_DATA_SUFFIX); + if (flag_branch_probabilities) + read_counts_file (); + /* Name of bbg file. */ if (flag_test_coverage && !flag_compare_debug) { @@ -1118,9 +1121,6 @@ coverage_init (const char *filename) gcov_write_unsigned (local_tick); } } - - if (flag_branch_probabilities) - read_counts_file (); } /* Performs file-level cleanup. Close graph file, generate coverage diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8213ae811ad..4855e1e035d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,14 @@ +2013-05-20 Jason Merrill <jason@redhat.com> + + PR c++/57325 + * tree.c (build_cplus_array_type): Copy layout info if element + type is complete. + +2013-05-09 Jason Merrill <jason@redhat.com> + + PR c++/57047 + * semantics.c (cxx_fold_indirect_ref): Fix thinko. + 2013-04-21 Eric Botcazou <ebotcazou@adacore.com> * parser.c (cp_parser_late_return_type_opt): Fix C++ism. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index e189ef90f02..e0c1c1f8de4 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -7412,15 +7412,17 @@ cxx_fold_indirect_ref (location_t loc, tree type, tree op0, bool *empty_base) } } } - /* *(foo *)fooarrptreturn> (*fooarrptr)[0] */ + /* *(foo *)fooarrptr => (*fooarrptr)[0] */ else if (TREE_CODE (TREE_TYPE (subtype)) == ARRAY_TYPE && (same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (TREE_TYPE (subtype))))) { tree type_domain; tree min_val = size_zero_node; - sub = cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL); - if (!sub) + tree newsub = cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL); + if (newsub) + sub = newsub; + else sub = build1_loc (loc, INDIRECT_REF, TREE_TYPE (subtype), sub); type_domain = TYPE_DOMAIN (TREE_TYPE (sub)); if (type_domain && TYPE_MIN_VALUE (type_domain)) diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index f5a43853b87..4a182e992fc 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -816,10 +816,12 @@ build_cplus_array_type (tree elt_type, tree index_type) if (TYPE_MAIN_VARIANT (t) != m) { - if (COMPLETE_TYPE_P (t) && !COMPLETE_TYPE_P (m)) + if (COMPLETE_TYPE_P (TREE_TYPE (t)) && !COMPLETE_TYPE_P (m)) { /* m was built before the element type was complete, so we - also need to copy the layout info from t. */ + also need to copy the layout info from t. We might + end up doing this multiple times if t is an array of + unknown bound. */ tree size = TYPE_SIZE (t); tree size_unit = TYPE_SIZE_UNIT (t); unsigned int align = TYPE_ALIGN (t); diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2698389c810..7f6fa7a3e7c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,13 @@ +2013-06-01 Janus Weil <janus@gcc.gnu.org> + Tobias Burnus <burnus@net-b.de> + + PR fortran/57217 + * interface.c (check_dummy_characteristics): Symmetrize type check. + +2013-05-22 Janne Blomqvist <jb@gcc.gnu.org> + + * intrinsic.texi (RANDOM_SEED): Improve example. + 2013-05-07 Tobias Burnus <burnus@net-b.de> Backport from mainline diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index e1f0cb6b2f8..0278995ba52 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -987,7 +987,8 @@ check_dummy_characteristics (gfc_symbol *s1, gfc_symbol *s2, bool type_must_agree, char *errmsg, int err_len) { /* Check type and rank. */ - if (type_must_agree && !compare_type_rank (s2, s1)) + if (type_must_agree && + (!compare_type_rank (s1, s2) || !compare_type_rank (s2, s1))) { if (errmsg != NULL) snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'", diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index ab91122a96b..d0a29cc25ea 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -10134,9 +10134,12 @@ end program Restarts or queries the state of the pseudorandom number generator used by @code{RANDOM_NUMBER}. -If @code{RANDOM_SEED} is called without arguments, it is initialized to -a default state. The example below shows how to initialize the random -seed based on the system's time. +If @code{RANDOM_SEED} is called without arguments, it is initialized +to a default state. The example below shows how to initialize the +random seed with a varying seed in order to ensure a different random +number sequence for each invocation of the program. Note that setting +any of the seed values to zero should be avoided as it can result in +poor quality random numbers being generated. @item @emph{Standard}: Fortran 95 and later @@ -10164,20 +10167,53 @@ the @var{SIZE} argument. @item @emph{Example}: @smallexample -SUBROUTINE init_random_seed() - INTEGER :: i, n, clock - INTEGER, DIMENSION(:), ALLOCATABLE :: seed - - CALL RANDOM_SEED(size = n) - ALLOCATE(seed(n)) - - CALL SYSTEM_CLOCK(COUNT=clock) - - seed = clock + 37 * (/ (i - 1, i = 1, n) /) - CALL RANDOM_SEED(PUT = seed) - - DEALLOCATE(seed) -END SUBROUTINE +subroutine init_random_seed() + implicit none + integer, allocatable :: seed(:) + integer :: i, n, un, istat, dt(8), pid, t(2), s + integer(8) :: count, tms + + call random_seed(size = n) + allocate(seed(n)) + ! First try if the OS provides a random number generator + open(newunit=un, file="/dev/urandom", access="stream", & + form="unformatted", action="read", status="old", iostat=istat) + if (istat == 0) then + read(un) seed + close(un) + else + ! Fallback to XOR:ing the current time and pid. The PID is + ! useful in case one launches multiple instances of the same + ! program in parallel. + call system_clock(count) + if (count /= 0) then + t = transfer(count, t) + else + call date_and_time(values=dt) + tms = (dt(1) - 1970) * 365_8 * 24 * 60 * 60 * 1000 & + + dt(2) * 31_8 * 24 * 60 * 60 * 1000 & + + dt(3) * 24 * 60 * 60 * 60 * 1000 & + + dt(5) * 60 * 60 * 1000 & + + dt(6) * 60 * 1000 + dt(7) * 1000 & + + dt(8) + t = transfer(tms, t) + end if + s = ieor(t(1), t(2)) + pid = getpid() + 1099279 ! Add a prime + s = ieor(s, pid) + if (n >= 3) then + seed(1) = t(1) + 36269 + seed(2) = t(2) + 72551 + seed(3) = pid + if (n > 3) then + seed(4:) = s + 37 * (/ (i, i = 0, n - 4) /) + end if + else + seed = s + 37 * (/ (i, i = 0, n - 1 ) /) + end if + end if + call random_seed(put=seed) +end subroutine init_random_seed @end smallexample @item @emph{See also}: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index db60bd739a9..d156c635db7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,18 @@ +2013-06-01 Janus Weil <janus@gcc.gnu.org> + Tobias Burnus <burnus@net-b.de> + + PR fortran/57217 + * gfortran.dg/typebound_override_4.f90: New. + +2013-05-26 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/specs/last_bit.ads: New test. + +2013-05-13 Uros Bizjak <ubizjak@gmail.com> + + PR target/57264 + * gcc.target/i386/pr57264.c: New test. + 2013-05-07 Michael Meissner <meissner@linux.vnet.ibm.com> Backport from trunk diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C new file mode 100644 index 00000000000..ee425ea1a15 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C @@ -0,0 +1,54 @@ +// PR c++/57047 +// { dg-require-effective-target c++11 } + +template <typename> +struct A; +template <typename T> +struct A <T &> +{ + typedef T type; +}; +template <typename T> +constexpr T && foo (typename A <T>::type & __t) noexcept +{ + return static_cast <T &&>(__t); +} +template <class T1, class T2> +struct B +{ + T1 t1; + T2 t2; + template <class U> + constexpr B (U && __x, const T2 & __y) : t1 (foo <U> (__x)), t2 (__y) {} +}; +static inline constexpr bool +fn1 (const char c) +{ + return ('0' <= c) && (c <= '9'); +} +static inline constexpr bool +fn2 (const char c) +{ + return (('A' <= c) && (c <= 'Z')) || (('a' <= c) && (c <= 'z')); +} +static constexpr bool +fn3 (const char *const x) +{ + return (x[1] == '\0' && x[0] == ']') ? true : (!fn1 (x[0])) ? false : fn3 (&x[1]); +} +static constexpr bool +fn4 (const char *const x) +{ + return (x[0] == '\0') ? fn3 (&x[1]) : fn4 (&x[1]); +} +static inline constexpr bool +fn5 (const char *const x) +{ + return fn2 (x[0]) ? fn4 (x) : false; +} +struct C final +{ + constexpr C (const char *const t1) : c (fn5 (t1) ? 199 : 69) {} + unsigned c; +}; +B <C, C> p ("a", "b"); diff --git a/gcc/testsuite/g++.dg/template/array26.C b/gcc/testsuite/g++.dg/template/array26.C new file mode 100644 index 00000000000..6692071694d --- /dev/null +++ b/gcc/testsuite/g++.dg/template/array26.C @@ -0,0 +1,40 @@ +// PR c++/57325 + +class valarray { int _M_data; }; +template < typename > struct SimpleJet { valarray partials; }; + +template < class C > struct scoped_ptr_impl +{ + scoped_ptr_impl (C *):data_ () { } + struct Data + { + C ptr; + }; + Data data_; +}; + +template < class, class = int >struct scoped_ptr; +template < class C, class D > struct scoped_ptr <C[], D > +{ + scoped_ptr ():impl_ (0) { } + scoped_ptr_impl < C > impl_; +}; + +template < typename JetsT > void +TestJets (JetsT *) +{ + typedef typename JetsT::JetType JetT; + scoped_ptr < JetT[] > a; +} + +template < typename T > struct SimpleJets +{ + typedef SimpleJet < T > JetType; + scoped_ptr < SimpleJet < T >[] > vars_; +}; + +void fn () +{ + SimpleJets < double >b; + TestJets (&b); +} diff --git a/gcc/testsuite/gcc.target/i386/pr57264.c b/gcc/testsuite/gcc.target/i386/pr57264.c new file mode 100644 index 00000000000..46fce7f04e5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr57264.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -mcld" } */ + +void test (int x, int **pp) +{ + while (x) + { + int *ip = *pp; + int *op = *pp; + while (*ip) + { + int v = *ip++; + *op++ = v + 1; + } + } +} + +/* { dg-final { scan-assembler-not "stosl" } } */ diff --git a/gcc/testsuite/gfortran.dg/typebound_override_4.f90 b/gcc/testsuite/gfortran.dg/typebound_override_4.f90 new file mode 100644 index 00000000000..2b747a87b6e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/typebound_override_4.f90 @@ -0,0 +1,34 @@ +! { dg-do compile } +! +! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check +! +! Contributed by Salvatore Filippone <filippone.salvatore@gmail.com> + +module base_mod + implicit none + type base_type + contains + procedure, pass(map) :: clone => base_clone + end type +contains + subroutine base_clone(map,mapout) + class(base_type) :: map + class(base_type) :: mapout + end subroutine +end module + +module r_mod + use base_mod + implicit none + type, extends(base_type) :: r_type + contains + procedure, pass(map) :: clone => r_clone ! { dg-error "Type/rank mismatch in argument" } + end type +contains + subroutine r_clone(map,mapout) + class(r_type) :: map + class(r_type) :: mapout + end subroutine +end module + +! { dg-final { cleanup-modules "base_mod r_mod" } } diff --git a/gcc/testsuite/gnat.dg/specs/last_bit.ads b/gcc/testsuite/gnat.dg/specs/last_bit.ads new file mode 100644 index 00000000000..ecfc2540a8a --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/last_bit.ads @@ -0,0 +1,19 @@ +-- { dg-do compile } + +package Last_Bit is + + Max_Components : constant := 100; + type Count_Type is new Natural range 0 .. Max_Components; + subtype Index_Type is Count_Type range 1 .. Count_Type'Last; + + type List_Type is array (Index_Type range <>) of Integer; + + type Record_Type (Count : Count_Type := 0) is record + List : List_Type (1 .. Count); + end record; + + Null_Record : Record_Type (Count => 0); + + List_Last_Bit : Integer := Null_Record.List'Last_Bit; + +end Last_Bit; diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 1de9c21a9d8..94a2f9cdfc1 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,11 @@ +2013-05-20 Chung-Ju Wu <jasonwucj@gmail.com> + + Backport from mainline: + 2012-05-24 Olivier Hainque <hainque@adacore.com> + + * Makefile.in (clean): Remove libgcc_tm.stamp as well. + Use a separate command for stamp removals. + 2013-04-11 Julian Brown <julian@codesourcery.com> * config/arm/linux-atomic.c (SUBWORD_SYNC_OP, SUBWORD_VAL_CAS) diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in index e1cac49b386..c301ff03cae 100644 --- a/libgcc/Makefile.in +++ b/libgcc/Makefile.in @@ -121,7 +121,8 @@ installcheck: .PHONY: all clean clean: - -rm -f config.h libgcc_tm.h stamp-h stmp-ldirs libgcc.map + -rm -f config.h libgcc_tm.h libgcc.map + -rm -f libgcc_tm.stamp stamp-h stmp-ldirs -rm -f *$(objext) -rm -f *.dep -rm -f *.a diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ca0360049e5..bde4f5bf50d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2013-05-15 Jonathan Wakely <jwakely.gcc@gmail.com> + + * include/bits/basic_string.h (getline): Fix doxygen comments. + +2013-05-14 Evgeniy Stepanov <eugenis@google.com> + + * src/c++11/system_error.cc (generic_category_instance): Add + initializer. + (system_category_instance): Likewise. + * src/c++11/future.cc (__fec): Likewise. + 2013-04-15 Jack Howarth <howarth@bromo.med.uc.edu> Backport from mainline diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index 169daf58613..d4d35e8d822 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -2764,10 +2764,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * * Stores characters from @a __is into @a __str until @a __delim is * found, the end of the stream is encountered, or str.max_size() - * is reached. If is.width() is non-zero, that is the limit on the - * number of characters stored into @a __str. Any previous - * contents of @a __str are erased. If @a __delim was encountered, - * it is extracted but not stored into @a __str. + * is reached. Any previous contents of @a __str are erased. If + * @a __delim is encountered, it is extracted but not stored into + * @a __str. */ template<typename _CharT, typename _Traits, typename _Alloc> basic_istream<_CharT, _Traits>& @@ -2782,10 +2781,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * * Stores characters from is into @a __str until '\n' is * found, the end of the stream is encountered, or str.max_size() - * is reached. If __is.width() is non-zero, that is the limit on - * the number of characters stored into @a __str. Any previous - * contents of @a __str are erased. If end of line was - * encountered, it is extracted but not stored into @a __str. + * is reached. Any previous contents of @a __str are erased. If + * end of line is encountered, it is extracted but not stored into + * @a __str. */ template<typename _CharT, typename _Traits, typename _Alloc> inline basic_istream<_CharT, _Traits>& diff --git a/libstdc++-v3/src/c++11/future.cc b/libstdc++-v3/src/c++11/future.cc index 05525372618..61ae04d4967 100644 --- a/libstdc++-v3/src/c++11/future.cc +++ b/libstdc++-v3/src/c++11/future.cc @@ -60,7 +60,7 @@ namespace const future_error_category& __future_category_instance() noexcept { - static const future_error_category __fec; + static const future_error_category __fec{}; return __fec; } } diff --git a/libstdc++-v3/src/c++11/system_error.cc b/libstdc++-v3/src/c++11/system_error.cc index 3ee1d9b0b0a..fb0a0241c4d 100644 --- a/libstdc++-v3/src/c++11/system_error.cc +++ b/libstdc++-v3/src/c++11/system_error.cc @@ -62,8 +62,8 @@ namespace } }; - const generic_error_category generic_category_instance; - const system_error_category system_category_instance; + const generic_error_category generic_category_instance{}; + const system_error_category system_category_instance{}; } namespace std _GLIBCXX_VISIBILITY(default) |